diff --git a/CMakeLists.txt b/CMakeLists.txt index 17ea320..31aea05 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,158 +1,57 @@ ######################################### #### CMake generator file for Niotso #### - -cmake_minimum_required(VERSION 2.6) +cmake_minimum_required(VERSION 3.21) +project(Niotso) +set(CMAKE_ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/cmake") +list(APPEND CMAKE_MODULE_PATH ${CMAKE_ROOT_DIR}) enable_language(ASM) -set(CMAKE_C_COMPILER "gcc") -set(CMAKE_CXX_COMPILER "gcc") -set(CMAKE_ASM_COMPILER "gcc") -project(Niotso) +include(ConfigureTarget) -# Installation directory -if(WIN32) - set(CMAKE_INSTALL_PREFIX "c:/Program Files (x86)/Maxis/The Sims Online/Niotso" CACHE FILEPATH "Installation directory") -else() - set(CMAKE_INSTALL_PREFIX "/usr/bin" CACHE FILEPATH "Installation directory") -endif() - -# Build type -if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) - set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Build configurations: Release Debug Release-MakeProfile Release-UseProfile") -else() - set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Build configurations: Release Debug") -endif() +######################################### +#### Options +option(BUILD_SHARED_LIBS "Build using shared libraries" ON) # default cmake +option(NIOTSO_BUILD_EXAMPLES "Build the render demos" OFF) +option(NIOTSO_BUILD_TOOLS "Build niotso tools" ON) if(WIN32) - set(64BIT 0) + set(DIST_NAME "windows" CACHE STRING "Output folder name for the _dist folder (no start or end slash)") + set_property(GLOBAL PROPERTY USE_FOLDERS ON) + if(BUILD_SHARED_LIBS) + # TODO-jip: this is terrible for release + set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) + endif() +elseif(APPLE) + set(DIST_NAME "mac" CACHE STRING "Output folder name for the _dist folder (no start or end slash)") +elseif(UNIX) + set(DIST_NAME "linux" CACHE STRING "Output folder name for the _dist folder (no start or end slash)") else() - set(64BIT 1) + set(DIST_NAME "unknown" CACHE STRING "Output folder name for the _dist folder (no start or end slash)") endif() - -if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) - # Base options - set(CFLAGS "-Wall -Wextra -Wabi -pedantic -mmmx -msse -msse2 -msse3 -fvisibility=hidden") - set(LDFLAGS "-static-libgcc") - set(RCFLAGS "") - - set(CFLAGS_LANG_C "-ansi") - set(CFLAGS_LANG_CPP "-fvisibility-inlines-hidden -fno-exceptions -fno-rtti -fno-threadsafe-statics -D__STDC_LIMIT_MACROS") - - if(64BIT) - set(CFLAGS "-m64 ${CFLAGS}") - set(LDFLAGS "-m64 ${LDFLAGS}") - set(RCFLAGS "${RCFLAGS} -F pe-x86-64") - else() - set(CFLAGS "-m32 ${CFLAGS}") - set(LDFLAGS "-m32 ${LDFLAGS}") - set(RCFLAGS "${RCFLAGS} -F pe-i386") - endif() - - #### - ## [Profiles] - - if(NOT (CMAKE_BUILD_TYPE MATCHES "Debug")) - if(CMAKE_BUILD_TYPE MATCHES "Release-MakeProfile") - set(CFLAGS "${CFLAGS} -fprofile-generate") - set(LDFLAGS "${LDFLAGS} -lgcov") - elseif(CMAKE_BUILD_TYPE MATCHES "Release-UseProfile") - set(CFLAGS "${CFLAGS} -fprofile-use") - endif() - - # Size - set(CFLAGS_SIZE "${CFLAGS} -Os -g0 -fomit-frame-pointer -mfpmath=both -msahf -malign-double -mpc32 -ffast-math -fmerge-all-constants -funsafe-loop-optimizations -fsched-pressure -mstringop-strategy=rep_byte -fno-stack-protector") - set(LDFLAGS_SIZE "${LDFLAGS} -s -fwhole-program -flto -fno-stack-protector") - - # Speed - set(CFLAGS_SPEED "${CFLAGS} -O3 -g0 -fomit-frame-pointer -mfpmath=both -msahf -malign-double -mpc32 -ffast-math -fmerge-all-constants -funsafe-loop-optimizations -fsched-pressure -fno-stack-protector -fmodulo-sched -fmodulo-sched-allow-regmoves -fgcse-sm -fgcse-las -fsched-spec-load -fsched-spec-load-dangerous -fsched-stalled-insns=0 -fsched-stalled-insns-dep -fsched2-use-superblocks -fipa-pta -fipa-matrix-reorg -ftree-loop-linear -floop-interchange -floop-strip-mine -floop-block -fgraphite-identity -floop-parallelize-all -ftree-loop-distribution -ftree-loop-im -ftree-loop-ivcanon -fivopts -fvect-cost-model -fvariable-expansion-in-unroller -fbranch-target-load-optimize -maccumulate-outgoing-args -flto") - set(LDFLAGS_SPEED "${LDFLAGS} -s -fwhole-program -flto -fno-stack-protector") - else() - # Debug - set(CFLAGS_DEBUG "${CFLAGS} -O0 -g3 -fstack-protector-all -D_FORTIFY_SOURCE=2 -DDEBUG") - set(LDFLAGS_DEBUG "${LDFLAGS} -fstack-protector-all") - set(CFLAGS_SIZE "${CFLAGS_DEBUG}") - set(LDFLAGS_SIZE "${LDFLAGS_DEBUG}") - set(CFLAGS_SPEED "${CFLAGS_DEBUG}") - set(LDFLAGS_SPEED "${LDFLAGS_DEBUG}") - endif() - - set(CMAKE_C_FLAGS "${CFLAGS_LANG_C} ${CFLAGS_SIZE}") - set(CMAKE_CXX_FLAGS "${CFLAGS_LANG_CPP} ${CFLAGS_SIZE}") - if(64BIT) - set(CMAKE_SHARED_LIBRARY_C_FLAGS "-fpic") - set(CMAKE_SHARED_LIBRARY_CXX_FLAGS "-fpic") - set(CMAKE_SHARED_LIBRARY_ASM_FLAGS "-fpic") - else() - set(CMAKE_SHARED_LIBRARY_C_FLAGS "") - set(CMAKE_SHARED_LIBRARY_CXX_FLAGS "") - set(CMAKE_SHARED_LIBRARY_ASM_FLAGS "") - endif() - set(CMAKE_SHARED_LINKER_FLAGS "-shared ${LDFLAGS} ${LDFLAGS_SIZE}") - set(CMAKE_EXE_LINKER_FLAGS "${LDFLAGS} ${LDFLAGS_SIZE}") - set(CMAKE_RC_FLAGS "${RCFLAGS}") - set(CMAKE_ASM_FLAGS "${CFLAGS}") - - if(WIN32) - set(DIST_NAME "windows" CACHE STRING "Output folder name for the _dist folder (no start or end slash)") - elseif(APPLE) - set(DIST_NAME "mac" CACHE STRING "Output folder name for the _dist folder (no start or end slash)") - elseif(UNIX) - set(DIST_NAME "linux" CACHE STRING "Output folder name for the _dist folder (no start or end slash)") - else() - set(DIST_NAME "unknown" CACHE STRING "Output folder name for the _dist folder (no start or end slash)") - endif() - -endif() - -#set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/_dist/${DIST_NAME}") (-flto means our archive files should not be redistributed) -set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/_dist/${DIST_NAME}") set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/_dist/${DIST_NAME}") +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/_dist/${DIST_NAME}") +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/_dist/${DIST_NAME}") -if(WIN32) - set(FREETYPE_INCLUDE ${CMAKE_SOURCE_DIR}/_deps/freetype/include ${CMAKE_SOURCE_DIR}/_deps/freetype/include/freetype/config) - set(LIBJPEGTURBO_INCLUDE ${CMAKE_SOURCE_DIR}/_deps/libjpeg-turbo) - set(LIBMPG123_INCLUDE ${CMAKE_SOURCE_DIR}/_deps/libmpg123) - set(LIBPNG_INCLUDE ${CMAKE_SOURCE_DIR}/_deps/libpng) - set(LIBPQ_INCLUDE ${CMAKE_SOURCE_DIR}/_deps/libpq ${CMAKE_SOURCE_DIR}/_deps/libpq/include ${CMAKE_SOURCE_DIR}/_deps/libpq/include/port/win32 ${CMAKE_SOURCE_DIR}/_deps/libpq/include/port) - set(ZLIB_INCLUDE ${CMAKE_SOURCE_DIR}/_deps/zlib) +######################################### +#### Dependencies +add_subdirectory(deps) - add_subdirectory(_deps/freetype) - add_subdirectory(_deps/libjpeg-turbo) - add_subdirectory(_deps/libmpg123) - add_subdirectory(_deps/libpng) - add_subdirectory(_deps/libpq) - add_subdirectory(_deps/zlib) +######################################### +#### Project +add_subdirectory(niotso) - set(FREETYPE_LINK freetype_shared) - set(LIBJPEG_LINK jpegturbo_static) - set(LIBMPG123_LINK libmpg123_static) - set(LIBPNG_LINK libpng_static) - set(LIBPQ_LINK libpq_shared) - set(ZLIB_LINK zlib_static) -else() - set(FREETYPE_LINK freetype) - set(LIBJPEG_LINK jpeg) - set(LIBMPG123_LINK mpg123) - set(LIBPNG_LINK png) - set(LIBPQ_LINK pq) - set(ZLIB_LINK z) +if(NIOTSO_BUILD_TOOLS) + add_subdirectory(tools) endif() -set(FILEHANDLER_INCLUDE ${CMAKE_SOURCE_DIR}/Libraries/FileHandler) -set(LIBGLDEMO_INCLUDE ${CMAKE_SOURCE_DIR}/Libraries/libgldemo) -set(LIBVITABOY_INCLUDE ${CMAKE_SOURCE_DIR}/Libraries/libvitaboy) - -if(WIN32) - set(GLDEMO_EXE WIN32) - set(GLDEMO_LINK mingw32 libgldemo_static opengl32 glu32) -else() - set(GLDEMO_EXE "") - set(GLDEMO_LINK libgldemo_static Xxf86vm rt Xext X11 GL GLU) +if(NIOTSO_BUILD_EXAMPLES) + add_subdirectory(examples) endif() -add_subdirectory(Client) -add_subdirectory(Libraries) -add_subdirectory(Server) -add_subdirectory(Tools) +######################################### +#### Unset Options +unset(BUILD_SHARED_LIBS CACHE) +unset(NIOTSO_BUILD_EXAMPLES CACHE) +unset(NIOTSO_BUILD_TOOLS CACHE) \ No newline at end of file diff --git a/Client/Audio/Audio.hpp b/Client/Audio/Audio.hpp deleted file mode 100644 index 78ab719..0000000 --- a/Client/Audio/Audio.hpp +++ /dev/null @@ -1,39 +0,0 @@ -/* - Niotso - The New Implementation of The Sims Online - Audio/Audio.hpp - Copyright (c) 2012 Niotso Project - Author(s): Fatbag - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "windows/xaudio2.hpp" -#ifdef PlaySound //defined by the Windows API - #undef PlaySound -#endif - -struct PlayableSound_t { - bool Playing; - uint8_t * Data; - IXAudio2SourceVoice* pSourceVoice; -}; - -namespace Audio { - int Initialize(); - PlayableSound_t * LoadSound(const Sound_t * Sound); - bool PlaySound(PlayableSound_t * Sound); - bool StopSound(PlayableSound_t * Sound); - void DeleteSound(PlayableSound_t * Sound); - void Shutdown(); -} \ No newline at end of file diff --git a/Client/Audio/Startup.cpp b/Client/Audio/Startup.cpp deleted file mode 100644 index 93496b6..0000000 --- a/Client/Audio/Startup.cpp +++ /dev/null @@ -1,125 +0,0 @@ -/* - Niotso - The New Implementation of The Sims Online - Audio/Startup.cpp - Copyright (c) 2012 Niotso Project - Author(s): Fatbag - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "../EngineInterface.hpp" - -namespace Audio { - -IXAudio2 *pXAudio2 = NULL; -IXAudio2MasteringVoice *MasterVoice = NULL; - -int Initialize(){ - HRESULT result; - - result = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE | COINIT_SPEED_OVER_MEMORY); - if(result != S_OK){ - MessageBox(Window::hWnd, "Failed to initialize Microsoft COM.", NULL, MB_OK | MB_ICONERROR); - Shutdown(); - return ERROR_AUDIO_INIT_COM; - } - - result = XAudio2Create(&pXAudio2, 0, XAUDIO2_DEFAULT_PROCESSOR); - if(result != S_OK){ - MessageBox(Window::hWnd, "Failed to initialize XAudio2. Please download the latest DirectX runtime for your system.", - NULL, MB_OK | MB_ICONERROR); - Shutdown(); - return ERROR_AUDIO_INIT_XAUDIO2; - } - - result = pXAudio2->CreateMasteringVoice(&MasterVoice, 2, 44100, 0, 0, NULL); - if(result != S_OK){ - MessageBox(Window::hWnd, "Failed to create the mastering voice for XAudio2.", NULL, MB_OK | MB_ICONERROR); - Shutdown(); - return ERROR_AUDIO_CREATE_VOICE; - } - return 0; -} - -PlayableSound_t * LoadSound(const Sound_t * Sound){ - const WAVEFORMATEX wfx = { - WAVE_FORMAT_PCM, //wFormatTag - Sound->Channels, //nChannels - Sound->SamplingRate, //nSamplesPerSec - ((Sound->Channels * Sound->BitDepth) >> 3) * Sound->SamplingRate, //nAvgBytesPerSec - ((Sound->Channels * Sound->BitDepth) >> 3), //nBlockAlign - Sound->BitDepth, //wBitsPerSample - 0 //cbSize - }; - - const XAUDIO2_BUFFER buffer = { - 0, //Flags - Sound->Duration * wfx.nBlockAlign, //AudioBytes - Sound->Data, //pAudioData - 0, //PlayBegin - 0, //PlayLength - 0, //LoopBegin - 0, //LoopLength - XAUDIO2_LOOP_INFINITE, //LoopCount - NULL, //pContext - }; - - IXAudio2SourceVoice* pSourceVoice; - if(FAILED(pXAudio2->CreateSourceVoice(&pSourceVoice, &wfx))) - return NULL; - if(FAILED(pSourceVoice->SubmitSourceBuffer(&buffer))) - return NULL; - - PlayableSound_t * PlayableSound = (PlayableSound_t*) malloc(sizeof(PlayableSound_t)); - if(!PlayableSound) - return NULL; - PlayableSound->pSourceVoice = pSourceVoice; - PlayableSound->Playing = false; - PlayableSound->Data = Sound->Data; - return PlayableSound; -} - -bool PlaySound(PlayableSound_t * Sound){ - if(!Sound->Playing && !FAILED(Sound->pSourceVoice->Start(0))){ - Sound->Playing = true; - return true; - } - return false; -} - -bool StopSound(PlayableSound_t * Sound){ - int success = false; - if(Sound->Playing && !FAILED(Sound->pSourceVoice->Stop(0))) - success = true; - Sound->Playing = false; - return success; -} - -void DeleteSound(PlayableSound_t * Sound){ - StopSound(Sound); - //Sound->pSourceVoice->Release(); -} - -void Shutdown(){ - if(MasterVoice){ - MasterVoice->DestroyVoice(); - MasterVoice = NULL; - } - if(pXAudio2){ - pXAudio2->Release(); - pXAudio2 = NULL; - } -} - -} \ No newline at end of file diff --git a/Client/Audio/windows/xaudio2.cpp b/Client/Audio/windows/xaudio2.cpp deleted file mode 100644 index 669d706..0000000 --- a/Client/Audio/windows/xaudio2.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#include - -DEFINE_GUID(CLSID_XAudio2, 0xe21a7345, 0xeb21, 0x468e, 0xbe, 0x50, 0x80, 0x4d, 0xb9, 0x7c, 0xf7, 0x08); -DEFINE_GUID(CLSID_XAudio2_Debug, 0xf7a76c21, 0x53d4, 0x46bb, 0xac, 0x53, 0x8b, 0x45, 0x9c, 0xae, 0x46, 0xbd); -DEFINE_GUID(IID_IXAudio2, 0x8bcf1f58, 0x9fe7, 0x4583, 0x8a, 0xc6, 0xe2, 0xad, 0xc4, 0x65, 0xc8, 0xbb); \ No newline at end of file diff --git a/Client/Audio/windows/xaudio2.hpp b/Client/Audio/windows/xaudio2.hpp deleted file mode 100644 index 758539e..0000000 --- a/Client/Audio/windows/xaudio2.hpp +++ /dev/null @@ -1,271 +0,0 @@ -/* - xaudio2.hpp (2010-08-14) - author: OV2 - - ruby-specific header to provide mingw-friendly xaudio2 interfaces -*/ - -#include -#include - -DEFINE_GUID(CLSID_XAudio2, 0xe21a7345, 0xeb21, 0x468e, 0xbe, 0x50, 0x80, 0x4d, 0xb9, 0x7c, 0xf7, 0x08); -DEFINE_GUID(CLSID_XAudio2_Debug, 0xf7a76c21, 0x53d4, 0x46bb, 0xac, 0x53, 0x8b, 0x45, 0x9c, 0xae, 0x46, 0xbd); -DEFINE_GUID(IID_IXAudio2, 0x8bcf1f58, 0x9fe7, 0x4583, 0x8a, 0xc6, 0xe2, 0xad, 0xc4, 0x65, 0xc8, 0xbb); - -DECLARE_INTERFACE(IXAudio2Voice); - -#define XAUDIO2_COMMIT_NOW 0 -#define XAUDIO2_DEFAULT_CHANNELS 0 -#define XAUDIO2_DEFAULT_SAMPLERATE 0 -#define XAUDIO2_DEFAULT_FREQ_RATIO 4.0f -#define XAUDIO2_DEBUG_ENGINE 0x0001 -#define XAUDIO2_LOOP_INFINITE 255 -#define XAUDIO2_VOICE_NOSRC 0x0004 - -enum XAUDIO2_DEVICE_ROLE -{ - NotDefaultDevice = 0x0, - DefaultConsoleDevice = 0x1, - DefaultMultimediaDevice = 0x2, - DefaultCommunicationsDevice = 0x4, - DefaultGameDevice = 0x8, - GlobalDefaultDevice = 0xf, - InvalidDeviceRole = ~GlobalDefaultDevice -}; - -struct XAUDIO2_DEVICE_DETAILS -{ - WCHAR DeviceID[256]; - WCHAR DisplayName[256]; - XAUDIO2_DEVICE_ROLE Role; - WAVEFORMATEXTENSIBLE OutputFormat; -}; - -struct XAUDIO2_VOICE_DETAILS -{ - UINT32 CreationFlags; - UINT32 InputChannels; - UINT32 InputSampleRate; -}; - -typedef enum XAUDIO2_WINDOWS_PROCESSOR_SPECIFIER -{ - Processor1 = 0x00000001, - Processor2 = 0x00000002, - Processor3 = 0x00000004, - Processor4 = 0x00000008, - Processor5 = 0x00000010, - Processor6 = 0x00000020, - Processor7 = 0x00000040, - Processor8 = 0x00000080, - Processor9 = 0x00000100, - Processor10 = 0x00000200, - Processor11 = 0x00000400, - Processor12 = 0x00000800, - Processor13 = 0x00001000, - Processor14 = 0x00002000, - Processor15 = 0x00004000, - Processor16 = 0x00008000, - Processor17 = 0x00010000, - Processor18 = 0x00020000, - Processor19 = 0x00040000, - Processor20 = 0x00080000, - Processor21 = 0x00100000, - Processor22 = 0x00200000, - Processor23 = 0x00400000, - Processor24 = 0x00800000, - Processor25 = 0x01000000, - Processor26 = 0x02000000, - Processor27 = 0x04000000, - Processor28 = 0x08000000, - Processor29 = 0x10000000, - Processor30 = 0x20000000, - Processor31 = 0x40000000, - Processor32 = 0x80000000, - XAUDIO2_ANY_PROCESSOR = 0xffffffff, - XAUDIO2_DEFAULT_PROCESSOR = XAUDIO2_ANY_PROCESSOR -} XAUDIO2_WINDOWS_PROCESSOR_SPECIFIER, XAUDIO2_PROCESSOR; - -struct XAUDIO2_VOICE_SENDS -{ - UINT32 OutputCount; - IXAudio2Voice* *pOutputVoices; -}; - -struct XAUDIO2_EFFECT_DESCRIPTOR -{ - IUnknown *pEffect; - BOOL InitialState; - UINT32 OutputChannels; -}; - -struct XAUDIO2_EFFECT_CHAIN -{ - UINT32 EffectCount; - const XAUDIO2_EFFECT_DESCRIPTOR *pEffectDescriptors; -}; - -enum XAUDIO2_FILTER_TYPE -{ - LowPassFilter, - BandPassFilter, - HighPassFilter -}; - -struct XAUDIO2_FILTER_PARAMETERS -{ - XAUDIO2_FILTER_TYPE Type; - float Frequency; - float OneOverQ; -}; - -struct XAUDIO2_BUFFER -{ - UINT32 Flags; - UINT32 AudioBytes; - const BYTE *pAudioData; - UINT32 PlayBegin; - UINT32 PlayLength; - UINT32 LoopBegin; - UINT32 LoopLength; - UINT32 LoopCount; - void *pContext; -}; - -struct XAUDIO2_BUFFER_WMA -{ - const UINT32 *pDecodedPacketCumulativeBytes; - UINT32 PacketCount; -}; - -struct XAUDIO2_VOICE_STATE -{ - void *pCurrentBufferContext; - UINT32 BuffersQueued; - UINT64 SamplesPlayed; -}; - -struct XAUDIO2_PERFORMANCE_DATA -{ - UINT64 AudioCyclesSinceLastQuery; - UINT64 TotalCyclesSinceLastQuery; - UINT32 MinimumCyclesPerQuantum; - UINT32 MaximumCyclesPerQuantum; - UINT32 MemoryUsageInBytes; - UINT32 CurrentLatencyInSamples; - UINT32 GlitchesSinceEngineStarted; - UINT32 ActiveSourceVoiceCount; - UINT32 TotalSourceVoiceCount; - UINT32 ActiveSubmixVoiceCount; - UINT32 TotalSubmixVoiceCount; - UINT32 ActiveXmaSourceVoices; - UINT32 ActiveXmaStreams; -}; - -struct XAUDIO2_DEBUG_CONFIGURATION -{ - UINT32 TraceMask; - UINT32 BreakMask; - BOOL LogThreadID; - BOOL LogFileline; - BOOL LogFunctionName; - BOOL LogTiming; -}; - -DECLARE_INTERFACE(IXAudio2EngineCallback) -{ - STDMETHOD_(void, OnProcessingPassStart) (void); - STDMETHOD_(void, OnProcessingPassEnd) (void); - STDMETHOD_(void, OnCriticalError) (HRESULT Error); -}; - -DECLARE_INTERFACE(IXAudio2VoiceCallback) -{ - STDMETHOD_(void, OnVoiceProcessingPassStart) (UINT32 BytesRequired); - STDMETHOD_(void, OnVoiceProcessingPassEnd) (void); - STDMETHOD_(void, OnStreamEnd) (void); - STDMETHOD_(void, OnBufferStart) (void *pBufferContext); - STDMETHOD_(void, OnBufferEnd) (void *pBufferContext); - STDMETHOD_(void, OnLoopEnd) (void *pBufferContext); - STDMETHOD_(void, OnVoiceError) (void *pBufferContext, HRESULT Error); -}; - -DECLARE_INTERFACE(IXAudio2Voice) -{ - STDMETHOD_(void, GetVoiceDetails) (XAUDIO2_VOICE_DETAILS *pVoiceDetails); - STDMETHOD(SetOutputVoices) (const XAUDIO2_VOICE_SENDS *pSendList); - STDMETHOD(SetEffectChain) (const XAUDIO2_EFFECT_CHAIN *pEffectChain); - STDMETHOD(EnableEffect) (UINT32 EffectIndex, UINT32 OperationSet = XAUDIO2_COMMIT_NOW); - STDMETHOD(DisableEffect) (UINT32 EffectIndex, UINT32 OperationSet = XAUDIO2_COMMIT_NOW); - STDMETHOD_(void, GetEffectState) (UINT32 EffectIndex, BOOL *pEnabled); - STDMETHOD(SetEffectParameters) (UINT32 EffectIndex, const void *pParameters, UINT32 ParametersByteSize, - UINT32 OperationSet = XAUDIO2_COMMIT_NOW); - STDMETHOD(GetEffectParameters) (UINT32 EffectIndex, void *pParameters, UINT32 ParametersByteSize); - STDMETHOD(SetFilterParameters) (const XAUDIO2_FILTER_PARAMETERS *pParameters, UINT32 OperationSet = XAUDIO2_COMMIT_NOW); - STDMETHOD_(void, GetFilterParameters) (XAUDIO2_FILTER_PARAMETERS *pParameters); - STDMETHOD(SetVolume) (float Volume, UINT32 OperationSet = XAUDIO2_COMMIT_NOW); - STDMETHOD_(void, GetVolume) (float *pVolume); - STDMETHOD(SetChannelVolumes) (UINT32 Channels, const float *pVolumes, UINT32 OperationSet = XAUDIO2_COMMIT_NOW); - STDMETHOD_(void, GetChannelVolumes) (UINT32 Channels, float *pVolumes); - STDMETHOD(SetOutputMatrix) (IXAudio2Voice *pDestinationVoice, UINT32 SourceChannels, UINT32 DestinationChannels, - const float *pLevelMatrix, UINT32 OperationSet = XAUDIO2_COMMIT_NOW); - STDMETHOD_(void, GetOutputMatrix) (IXAudio2Voice *pDestinationVoice, UINT32 SourceChannels, - UINT32 DestinationChannels, float *pLevelMatrix); - STDMETHOD_(void, DestroyVoice) (void); -}; - -DECLARE_INTERFACE_(IXAudio2MasteringVoice, IXAudio2Voice){}; - -DECLARE_INTERFACE_(IXAudio2SubmixVoice, IXAudio2Voice){}; - -DECLARE_INTERFACE_(IXAudio2SourceVoice, IXAudio2Voice) -{ - STDMETHOD(Start) (UINT32 Flags, UINT32 OperationSet = XAUDIO2_COMMIT_NOW); - STDMETHOD(Stop) (UINT32 Flags, UINT32 OperationSet = XAUDIO2_COMMIT_NOW); - STDMETHOD(SubmitSourceBuffer) (const XAUDIO2_BUFFER *pBuffer, const XAUDIO2_BUFFER_WMA *pBufferWMA = NULL); - STDMETHOD(FlushSourceBuffers) (void); - STDMETHOD(Discontinuity) (void); - STDMETHOD(ExitLoop) (UINT32 OperationSet = XAUDIO2_COMMIT_NOW); - STDMETHOD_(void, GetState) (XAUDIO2_VOICE_STATE *pVoiceState); - STDMETHOD(SetFrequencyRatio) (float Ratio, UINT32 OperationSet = XAUDIO2_COMMIT_NOW); - STDMETHOD_(void, GetFrequencyRatio) (float *pRatio); -}; - -DECLARE_INTERFACE_(IXAudio2, IUnknown) -{ - STDMETHOD(GetDeviceCount) (UINT32 *pCount); - STDMETHOD(GetDeviceDetails) (UINT32 Index, XAUDIO2_DEVICE_DETAILS *pDeviceDetails); - STDMETHOD(Initialize) (UINT32 Flags = 0, XAUDIO2_PROCESSOR XAudio2Processor = XAUDIO2_DEFAULT_PROCESSOR); - STDMETHOD(RegisterForCallbacks) (IXAudio2EngineCallback *pCallback); - STDMETHOD_(void, UnregisterForCallbacks) (IXAudio2EngineCallback *pCallback); - STDMETHOD(CreateSourceVoice) (IXAudio2SourceVoice* *ppSourceVoice, const WAVEFORMATEX *pSourceFormat, UINT32 Flags = 0, - float MaxFrequencyRatio = XAUDIO2_DEFAULT_FREQ_RATIO, IXAudio2VoiceCallback *pCallback = NULL, - const XAUDIO2_VOICE_SENDS *pSendList = NULL, const XAUDIO2_EFFECT_CHAIN *pEffectChain = NULL); - STDMETHOD(CreateSubmixVoice) (IXAudio2SubmixVoice* *ppSubmixVoice, UINT32 InputChannels, UINT32 InputSampleRate, - UINT32 Flags = 0, UINT32 ProcessingStage = 0, const XAUDIO2_VOICE_SENDS *pSendList = NULL, - const XAUDIO2_EFFECT_CHAIN *pEffectChain = NULL); - STDMETHOD(CreateMasteringVoice) (IXAudio2MasteringVoice* *ppMasteringVoice, - UINT32 InputChannels = XAUDIO2_DEFAULT_CHANNELS, UINT32 InputSampleRate = XAUDIO2_DEFAULT_SAMPLERATE, - UINT32 Flags = 0, UINT32 DeviceIndex = 0, const XAUDIO2_EFFECT_CHAIN *pEffectChain = NULL); - STDMETHOD(StartEngine) (void); - STDMETHOD_(void, StopEngine) (void); - STDMETHOD(CommitChanges) (UINT32 OperationSet); - STDMETHOD_(void, GetPerformanceData) (XAUDIO2_PERFORMANCE_DATA *pPerfData); - STDMETHOD_(void, SetDebugConfiguration) (const XAUDIO2_DEBUG_CONFIGURATION *pDebugConfiguration, void *pReserved = NULL); -}; - -inline HRESULT XAudio2Create(IXAudio2* *ppXAudio2, UINT32 Flags = 0, - XAUDIO2_PROCESSOR XAudio2Processor = XAUDIO2_DEFAULT_PROCESSOR) -{ - IXAudio2 *pXAudio2; - HRESULT hr = CoCreateInstance((Flags & XAUDIO2_DEBUG_ENGINE) ? CLSID_XAudio2_Debug : CLSID_XAudio2, NULL, - CLSCTX_INPROC_SERVER, IID_IXAudio2, (void**)&pXAudio2); - if(SUCCEEDED(hr)){ - hr = pXAudio2->Initialize(Flags, XAudio2Processor); - if(SUCCEEDED(hr)) - *ppXAudio2 = pXAudio2; - else - pXAudio2->Release(); - } - return hr; -} \ No newline at end of file diff --git a/Client/CHANGES b/Client/CHANGES deleted file mode 100644 index aacc0cb..0000000 --- a/Client/CHANGES +++ /dev/null @@ -1,2 +0,0 @@ -Technical Preview 1 - * Initial release \ No newline at end of file diff --git a/Client/CMakeLists.txt b/Client/CMakeLists.txt deleted file mode 100644 index fc096e0..0000000 --- a/Client/CMakeLists.txt +++ /dev/null @@ -1,22 +0,0 @@ -cmake_minimum_required(VERSION 2.6) -project(NiotsoClient) - -include_directories(${FILEHANDLER_INCLUDE} ${FREETYPE_INCLUDE}) - -if(WIN32) - set(NIOTSOCLIENT_SOURCES - Client.cpp - Audio/Startup.cpp - Audio/windows/XAudio2.cpp - Graphics/Font.cpp - Graphics/Startup.cpp - Graphics/Viewport.cpp - Resources/Resource.rc - Scene/LoginScreen/LoginScreen.cpp - System/System.cpp - Window/Window.cpp - ) - add_executable(TSO WIN32 ${NIOTSOCLIENT_SOURCES}) - target_link_libraries(TSO ole32 opengl32) - target_link_libraries(TSO FileHandler_shared ${FREETYPE_LINK}) -endif() \ No newline at end of file diff --git a/Client/COPYING b/Client/COPYING deleted file mode 100644 index acdc1dc..0000000 --- a/Client/COPYING +++ /dev/null @@ -1,642 +0,0 @@ -IMPORTANT: -Niotso is distributed under the terms of the GNU GPLv3. - -While this license does permit others to compile, distribute, change, -and distribute changes to Niotso, in reality, many of these freedoms -cannot legally be enacted by anybody. - -Specifically, if you make changes to Niotso such that it significantly -changes the "game experience as presented to the player", it cannot -be distributed to others. You also may not distribute a version of -Niotso that has stripped the EA or Maxis trademarked names or logos -anywhere from the game. Personal use of these modifications is okay. - -These restrictions are not enforced by us, but may potentially be used -by EA in attempt to take down your game. - -If you have any questions, you may visit - - ---- - - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS \ No newline at end of file diff --git a/Client/Client.cpp b/Client/Client.cpp deleted file mode 100644 index 15c8d70..0000000 --- a/Client/Client.cpp +++ /dev/null @@ -1,133 +0,0 @@ -/* - Niotso - The New Implementation of The Sims Online - Client.cpp - Copyright (c) 2012 Niotso Project - Author(s): Fatbag - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "EngineInterface.hpp" - -static void Shutdown(); -Scene * CurrentScene; - -#ifdef _WIN32 - -/* MinGW bonus feature; saves 66 kB in the binary :) */ -/* */ void* __CRTDECL operator new(unsigned size){return malloc(size);} -/* */ void __CRTDECL operator delete(void *ptr){free(ptr);} -/* */ extern "C" void __CRTDECL __cxa_pure_virtual(){} - -int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int) -{ - int result; - - //Disallow multiple instances of the game from running - CreateMutex(NULL, TRUE, "Global\\TSO_NIOTSO_MUTEX"); - if(GetLastError() == ERROR_ALREADY_EXISTS){ - HWND hWnd = FindWindow("TSO_NIOTSO", "The Sims Online"); - if(hWnd != NULL){ - ShowWindow(hWnd, SW_RESTORE); - SetForegroundWindow(hWnd); - SetFocus(hWnd); - } - return ERROR_INIT_ANOTHERINSTRUNNING; - } - - Window::Width = 800; - Window::Height = 600; - Window::Fullscreen = false; - System::hInst = hInstance; - - result = Window::Initialize(); - if(result != 0){ - Shutdown(); - return ERROR_INIT | ERROR_INIT_WINDOW | result; - } - - result = System::Initialize(); - if(result != 0){ - Shutdown(); - return ERROR_INIT | ERROR_INIT_SYSTEM | result; - } - - result = Graphics::Initialize(); - if(result != 0){ - Shutdown(); - return ERROR_INIT | ERROR_INIT_GRAPHICS | result; - } - - result = Audio::Initialize(); - if(result != 0){ - Shutdown(); - return ERROR_INIT | ERROR_INIT_AUDIO | result; - } - - CurrentScene = new LoginScreen(); - if(CurrentScene == NULL || System::SceneFailed){ - Shutdown(); - return ERROR_INIT | ERROR_INIT_LOGIC | ERROR_LOGIC_CREATE_SCENE; - } - - ShowWindow(Window::hWnd, SW_SHOW); - SetForegroundWindow(Window::hWnd); - SetFocus(Window::hWnd); - - LARGE_INTEGER PreviousTime; - QueryPerformanceCounter(&PreviousTime); - - while(true){ - LARGE_INTEGER CurrentTime; - QueryPerformanceCounter(&CurrentTime); - float TimeDelta = (float)(CurrentTime.QuadPart-PreviousTime.QuadPart)/System::ClockFreq.QuadPart; - PreviousTime = CurrentTime; - if(TimeDelta < 0 || TimeDelta >= 5) //Safe-guard in case of system delay - continue; - - memcpy(&System::UserInput, (const void*) &System::UserInput_v, sizeof(System::UserInput_t)); - - int result = CurrentScene->RunFor(TimeDelta); - if(result == System::SHUTDOWN) - break; - if(result > 0){ - glClear(GL_COLOR_BUFFER_BIT); - CurrentScene->Render(); - SwapBuffers(Graphics::hDC); - } - - //Sleep for the remainder of the frame - PreviousTime.QuadPart = CurrentTime.QuadPart; - QueryPerformanceCounter(&CurrentTime); - float SleepDuration = - (System::FramePeriod - (float)(CurrentTime.QuadPart-PreviousTime.QuadPart)/System::ClockFreq.QuadPart) * 1000; - if(SleepDuration > 1 && SleepDuration < 100) Sleep((unsigned) SleepDuration); - } - - ShowWindow(Window::hWnd, SW_HIDE); - delete CurrentScene; - - Shutdown(); - return 0; -} - -static void Shutdown() -{ - Audio::Shutdown(); - Graphics::Shutdown(); - System::Shutdown(); - Window::Shutdown(); -} - -#endif \ No newline at end of file diff --git a/Client/EngineInterface.hpp b/Client/EngineInterface.hpp deleted file mode 100644 index 17dce67..0000000 --- a/Client/EngineInterface.hpp +++ /dev/null @@ -1,63 +0,0 @@ -/* - Niotso - The New Implementation of The Sims Online - EngineInterface.hpp - Copyright (c) 2012 Niotso Project - Author(s): Fatbag - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -//Compiler/platform constants -#ifdef _WIN32 - #define WINVER 0x0502 - #define _WIN32_WINNT 0x0502 - #define _CRT_SECURE_NO_WARNINGS -#endif - -//Standard libraries -#include -#include -#include -#include -#ifdef _WIN32 - #define WIN32_LEAN_AND_MEAN - #include - #undef NULL - #define NULL 0 -#endif - -//Codebase libraries -#include "FileHandler.hpp" -#include "ft2build.h" -#include FT_FREETYPE_H - -//Macro definitions -#ifndef min - #define min(x,y) ((x)<(y)?(x):(y)) -#endif -#ifndef max - #define max(x,y) ((x)>(y)?(x):(y)) -#endif - -//Codebase version, branding, linker resources -#include "version.h" -#include "Resources/Resource.h" - -//Components -#include "Audio/Audio.hpp" -#include "Graphics/Graphics.hpp" -#include "System/System.hpp" -#include "Window/Window.hpp" - -#include "Scene/Scene.hpp" \ No newline at end of file diff --git a/Client/Graphics/Font.cpp b/Client/Graphics/Font.cpp deleted file mode 100644 index 10941d6..0000000 --- a/Client/Graphics/Font.cpp +++ /dev/null @@ -1,179 +0,0 @@ -/* - Niotso - The New Implementation of The Sims Online - Graphics/Font.cpp - Copyright (c) 2012 Niotso Project - Author(s): Fatbag - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "../EngineInterface.hpp" - -namespace Graphics { - -FT_Library FreeTypeLibrary; -FT_Face FontFace; - -static void FindStringSize(const wchar_t * String, unsigned * width, unsigned * height, int * xoffset, int * yoffset, int font){ - int x = 0, y = 0; - int lowestx = 0, lowesty = 0, highestx = 0, highesty = 0; - - for(wchar_t letter=*String; letter!='\0'; letter=*(++String)){ - int error = FT_Load_Char(FontFace, letter, FT_LOAD_RENDER); - if(error) continue; - - int bottomx = x + FontFace->glyph->bitmap_left; - int bottomy = y + FontFace->glyph->bitmap_top - FontFace->glyph->bitmap.rows; - if(bottomx < lowestx) lowestx = bottomx; - if(bottomy < lowesty) lowesty = bottomy; - - int topx = x + FontFace->glyph->bitmap_left + FontFace->glyph->bitmap.width; - int topy = y + FontFace->glyph->bitmap_top; - if(topx > highestx) highestx = topx; - if(topy > highesty) highesty = topy; - - x += FontFace->glyph->advance.x >> 6; - y += FontFace->glyph->advance.y >> 6; - } - - *width = highestx-lowestx, *height = highesty-lowesty; - *xoffset = -lowestx, *yoffset = -lowesty; -} - -void DrawText(Image_t * Image, const wchar_t * String, int x, int y, unsigned width, unsigned height, - TextAlignment Alignment, int font, COLORREF Color){ - //x, y, width, height form the bounding rectangle into which the text should be drawn. - //(x,y) defines the offset to the top-left of the rectangle from the top left of the background. - //The destination image must be stored in bottom-up order. - - if(x >= (signed)Image->Width || y >= (signed)Image->Height) return; - - //(stringx,stringy) will refer to the top-left of the string in bottom-up coordinates - int stringx, stringy; - unsigned StringWidth, StringHeight; - FindStringSize(String, &StringWidth, &StringHeight, &stringx, &stringy, font); - - //Horizontal alignment - if(Alignment < 2) stringx = x; //Left - else if(Alignment < 4) stringx = x+(width-StringWidth+1)/2; //Middle - else stringx = x+width-StringWidth; //Right - //Vertical alignment - if(!(Alignment&1)) stringy = y; //Top - else stringy = y+(height-StringHeight+1)/2; //Middle - stringy = Image->Height-stringy-StringHeight; - - //Now that we've done the alignment, we can crop the bounding box within the limits of the background image - if(x < 0){ Image->Width += x; x = 0; } - if(y < 0){ Image->Height += y; y = 0; } - if(width > Image->Width) width = Image->Width; - if(height > Image->Height) height = Image->Height; - - for(wchar_t letter=*String; letter!='\0'; letter=*(++String)){ - int error = FT_Load_Char(FontFace, letter, FT_LOAD_RENDER); - if(error) continue; - - int cWidth = FontFace->glyph->bitmap.width, cHeight = FontFace->glyph->bitmap.rows; - if(cWidth && cHeight){ - uint8_t * cRender; /* Convert to Bottom-up */ - uint8_t * OriginalRender = FontFace->glyph->bitmap.buffer; - if(FontFace->glyph->bitmap.pitch > 0){ - cRender = (uint8_t *) malloc(cWidth * cHeight); - for(int i=0; iglyph->bitmap_left; - stringy += FontFace->glyph->bitmap_top-cHeight; - for(int i=max(-stringy, 0); iData + 3*((stringy+i)*width + (stringx+j)); - - int originalcolor; - originalcolor = *ptr; - *ptr++ = (uint8_t) (originalcolor + (int)((GetBValue(Color)-originalcolor)*2*value+255)/510); - originalcolor = *ptr; - *ptr++ = (uint8_t) (originalcolor + (int)((GetGValue(Color)-originalcolor)*2*value+255)/510); - originalcolor = *ptr; - *ptr++ = (uint8_t) (originalcolor + (int)((GetRValue(Color)-originalcolor)*2*value+255)/510); - } - } - stringx -= FontFace->glyph->bitmap_left; - stringy -= FontFace->glyph->bitmap_top-cHeight; - - if(FontFace->glyph->bitmap.pitch > 0) free(cRender); - } - stringx += FontFace->glyph->advance.x >> 6; - stringy += FontFace->glyph->advance.y >> 6; - } -} - -Image_t * StringImage(const wchar_t * String, int font, COLORREF Color){ - Image_t * Image = (Image_t*) malloc(sizeof(Image_t)); - if(Image == NULL) return NULL; - - unsigned StringWidth, StringHeight; - int stringx, stringy; - FindStringSize(String, &StringWidth, &StringHeight, &stringx, &stringy, font); - - Image->Data = (uint8_t*) malloc(4 * StringWidth * StringHeight); - if(Image->Data == NULL){ - free(Image); - return NULL; - } - for(unsigned i=0; i<4*StringWidth*StringHeight;){ - Image->Data[i++] = GetBValue(Color); - Image->Data[i++] = GetGValue(Color); - Image->Data[i++] = GetRValue(Color); - Image->Data[i++] = 0; - } - - for(wchar_t letter=*String; letter!='\0'; letter=*(++String)){ - int error = FT_Load_Char(FontFace, letter, FT_LOAD_RENDER); - if(error) continue; - - int cWidth = FontFace->glyph->bitmap.width, cHeight = FontFace->glyph->bitmap.rows; - if(cWidth && cHeight){ - uint8_t * cRender; /* Convert to Bottom-up */ - uint8_t * OriginalRender = FontFace->glyph->bitmap.buffer; - if(FontFace->glyph->bitmap.pitch > 0){ - cRender = (uint8_t *) malloc(cWidth * cHeight); - for(int i=0; iglyph->bitmap_left; - stringy += FontFace->glyph->bitmap_top-cHeight; - for(int i=0; iData + 4*((stringy+i)*StringWidth + (stringx+j)); - ptr[3] = cRender[i*cWidth + j]; - } - } - stringx -= FontFace->glyph->bitmap_left; - stringy -= FontFace->glyph->bitmap_top-cHeight; - - if(FontFace->glyph->bitmap.pitch > 0) free(cRender); - } - stringx += FontFace->glyph->advance.x >> 6; - stringy += FontFace->glyph->advance.y >> 6; - } - - Image->Width = StringWidth; - Image->Height = StringHeight; - Image->Format = FIMG_BGRA32; - return Image; -} - -} \ No newline at end of file diff --git a/Client/Graphics/Graphics.hpp b/Client/Graphics/Graphics.hpp deleted file mode 100644 index f9e5a85..0000000 --- a/Client/Graphics/Graphics.hpp +++ /dev/null @@ -1,49 +0,0 @@ -/* - Niotso - The New Implementation of The Sims Online - Graphics/Graphics.hpp - Copyright (c) 2012 Niotso Project - Author(s): Fatbag - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include -#include - -//Graphics/Startup.cpp -namespace Graphics { - int Initialize(); - void Shutdown(); - extern HDC hDC; - extern HGLRC hRC; - - int InitGL(); - void ResizeViewport(unsigned width, unsigned height); - - enum TextAlignment { - ALIGN_LEFT_TOP, - ALIGN_LEFT_CENTER, - ALIGN_CENTER_TOP, - ALIGN_CENTER_CENTER, - ALIGN_RIGHT_TOP, - ALIGN_RIGHT_CENTER - }; - - //Font.cpp - extern FT_Library FreeTypeLibrary; - extern FT_Face FontFace; - void DrawText(Image_t * Image, const wchar_t * String, int x, int y, unsigned width, unsigned height, - TextAlignment Alignment, int font, COLORREF Color); - Image_t * StringImage(const wchar_t * String, int font, COLORREF Color); -} \ No newline at end of file diff --git a/Client/Graphics/Startup.cpp b/Client/Graphics/Startup.cpp deleted file mode 100644 index 35f44ae..0000000 --- a/Client/Graphics/Startup.cpp +++ /dev/null @@ -1,121 +0,0 @@ -/* - Niotso - The New Implementation of The Sims Online - Graphics/Startup.cpp - Copyright (c) 2012 Niotso Project - Author(s): Fatbag - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "../EngineInterface.hpp" - -namespace Graphics { - -HDC hDC; -HGLRC hRC; - -int Initialize(){ - hDC = GetDC(Window::hWnd); - if(hDC == NULL){ - MessageBox(Window::hWnd, "Failed to obtain the device context.", NULL, MB_OK | MB_ICONERROR); - Shutdown(); - return ERROR_GRAPHICS_OBTAIN_DC; - } - - const PIXELFORMATDESCRIPTOR pfd = { - sizeof(PIXELFORMATDESCRIPTOR), 1, //Size and version - PFD_DRAW_TO_WINDOW | //dwFlags - PFD_SUPPORT_OPENGL | - PFD_DOUBLEBUFFER, - PFD_TYPE_RGBA, //iPixelType - 24, //cColorBits - 0, 0, 0, 0, 0, 0, 0, 0, //R,G,B,A bits - 0, 0, 0, 0, 0, //Accumulation buffer bits - 16, //cDepthBits - 0, //cStencilBits - 0, //cAuxBuffers - PFD_MAIN_PLANE, //iLayerType - 0, //Reserved - 0, 0, 0 //Masks - }; - - unsigned PixelFormat = ChoosePixelFormat(hDC, &pfd); - if(!PixelFormat){ - MessageBox(Window::hWnd, "Failed to find a suitable pixel format for the device context.", NULL, MB_OK | MB_ICONERROR); - Shutdown(); - return ERROR_GRAPHICS_FIND_PIXELFORMAT; - } - - if(!SetPixelFormat(hDC, PixelFormat, &pfd)){ - MessageBox(Window::hWnd, "Failed to set the pixel format for the device context.", NULL, MB_OK | MB_ICONERROR); - Shutdown(); - return ERROR_GRAPHICS_SET_PIXELFORMAT; - } - - hRC = wglCreateContext(hDC); - if(!hRC){ - MessageBox(Window::hWnd, "Failed to create an OpenGL rendering context.", NULL, MB_OK | MB_ICONERROR); - Shutdown(); - return ERROR_GRAPHICS_CREATE_GLRC; - } - - if(!wglMakeCurrent(hDC, hRC)){ - MessageBox(Window::hWnd, "Failed to activate the OpenGL device context.", NULL, MB_OK | MB_ICONERROR); - Shutdown(); - return ERROR_GRAPHICS_ACTIVATE_GLRC; - } - - BOOL (WINAPI *wglSwapIntervalEXT)(int) = (BOOL (WINAPI *)(int)) wglGetProcAddress("wglSwapIntervalEXT"); - if(wglSwapIntervalEXT) wglSwapIntervalEXT(1); - int (WINAPI *wglGetSwapIntervalEXT)(void) = (int (WINAPI *)(void)) wglGetProcAddress("wglGetSwapIntervalEXT"); - if(wglGetSwapIntervalEXT) wglGetSwapIntervalEXT(); //Seems necessary on some cards - - int result = InitGL(); - if(result != 0){ - Shutdown(); - return ERROR_GRAPHICS_INIT_GLSCENE | result; - } - - ResizeViewport(Window::Width, Window::Height); - return 0; -} - -int InitGL(){ - glShadeModel(GL_SMOOTH); - glClearColor(0.0f, 0.0f, 0.0f, 1.0f); - glClearDepth(1.0f); - glEnable(GL_DEPTH_TEST); - glEnable(GL_CULL_FACE); - glEnable(GL_RESCALE_NORMAL); - glEnable(GL_TEXTURE_2D); - glEnable(GL_BLEND); - glDepthFunc(GL_LEQUAL); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); - return 0; -} - -void Shutdown(){ - if(Graphics::hRC){ - wglMakeCurrent(NULL, NULL); - wglDeleteContext(Graphics::hRC); - Graphics::hRC = NULL; - } - if(Graphics::hDC){ - ReleaseDC(Window::hWnd, Graphics::hDC); - Graphics::hDC = NULL; - } -} - -} \ No newline at end of file diff --git a/Client/Graphics/Viewport.cpp b/Client/Graphics/Viewport.cpp deleted file mode 100644 index c39c9b0..0000000 --- a/Client/Graphics/Viewport.cpp +++ /dev/null @@ -1,32 +0,0 @@ -/* - Niotso - The New Implementation of The Sims Online - Graphics/Viewport.cpp - Copyright (c) 2012 Niotso Project - Author(s): Fatbag - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "../EngineInterface.hpp" - -void Graphics::ResizeViewport(unsigned width, unsigned height){ - if(width == 0) width++; - if(height == 0) height++; - - glViewport(0, 0, width, height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - - glOrtho(0, width, 0, height, 0.0, 1.0); -} \ No newline at end of file diff --git a/Client/Resources/Resource.h b/Client/Resources/Resource.h deleted file mode 100644 index 04d4a13..0000000 --- a/Client/Resources/Resource.h +++ /dev/null @@ -1,2 +0,0 @@ -#define ID_VERSIONINFO 1 -#define IDI_TSO 2 diff --git a/Client/Resources/Resource.rc b/Client/Resources/Resource.rc deleted file mode 100644 index 574970b..0000000 --- a/Client/Resources/Resource.rc +++ /dev/null @@ -1,32 +0,0 @@ -#include -#include "../version.h" -#include "Resource.h" - -IDI_TSO ICON "TSO.ico" - -ID_VERSIONINFO VERSIONINFO -FILEVERSION VERSION_A,VERSION_B,VERSION_C,VERSION_D -PRODUCTVERSION VERSION_A,VERSION_B,VERSION_C,VERSION_D -FILEOS 0x00040000L //Windows 32-bit+ -FILETYPE 1 //1 is exe, 2 is dll, and so on. - //The list can be found at -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904B0" - BEGIN - VALUE "CompanyName", "Maxis™" - VALUE "FileDescription", "The Sims Online" - VALUE "FileVersion", VERSIONSTR - VALUE "InternalName", "TSO_NIOTSO" - VALUE "LegalCopyright", "Copyright © 2002-2005 Maxis™" - VALUE "OriginalFilename", "TSO.exe" - VALUE "ProductName", "The Sims Online" - VALUE "ProductVersion", VERSIONSTR - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x0409, 0x04B0 - END -END diff --git a/Client/Resources/TSO.ico b/Client/Resources/TSO.ico deleted file mode 100644 index ee94659..0000000 Binary files a/Client/Resources/TSO.ico and /dev/null differ diff --git a/Client/Scene/LoginScreen/LoginScreen.cpp b/Client/Scene/LoginScreen/LoginScreen.cpp deleted file mode 100644 index 7e7c9bc..0000000 --- a/Client/Scene/LoginScreen/LoginScreen.cpp +++ /dev/null @@ -1,226 +0,0 @@ -/* - Niotso - The New Implementation of The Sims Online - Scene/LoginScreen/LoginScreen.cpp - Copyright (c) 2012 Niotso Project - Author(s): Fatbag - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "../../EngineInterface.hpp" - -static const wchar_t * const StatusStrings[] = { - L"Extruding Terrain Web", - L"Adjusting Emotional Weights", - L"Calibrating Personality Matrix", - - L"Calculating Domestic Coefficients", - L"Readjusting Career Ladder", - L"Accessing Money Supply", - L"Hacking the Social Network", - L"Tweaking Chaos Control", - L"Downloading Reticulated Splines" -}; -static const char * const images[] = {"eagames.bmp", "maxis.png", "setup.bmp"}; - -static const char * const sounds[] = {"loadloop.wav"}; - -LoginScreen::LoginScreen() : Scene(0){ - Screen = Screen_EAGames; - Time = 0; - ScrollPos = -1; - memset(image, 0, IMG_COUNT * sizeof(Image_t *)); - memset(texture, 0, TEX_COUNT * sizeof(GLuint)); - memset(sound, 0, SND_COUNT * sizeof(PlayableSound_t *)); - - glMatrixMode(GL_TEXTURE); - glGenTextures(TEX_COUNT, texture); - - FT_Set_Char_Size(Graphics::FontFace, 0, 22*64, 0, 0); - - for(int i=TEX_EAGAMES; i<=TEX_SETUP; i++){ - Image_t * Image = File::ReadImageFile(images[i]); - if(!Image){ - const char * Message; - switch(File::Error){ - case FERR_NOT_FOUND: - Message = "%s does not exist."; - break; - case FERR_OPEN: - Message = "%s could not be opened for reading."; - break; - case FERR_BLANK: - case FERR_UNRECOGNIZED: - case FERR_INVALIDDATA: - Message = "%s is corrupt or invalid."; - break; - case FERR_MEMORY: - Message = "Memory for %s could not be allocated."; - break; - default: - Message = "%s could not be read."; - } - - char Buffer[1024]; - sprintf(Buffer, Message, images[i]); - MessageBox(Window::hWnd, Buffer, NULL, MB_OK | MB_ICONERROR); - EXIT_SCENE(); - } - - if(i == TEX_MAXIS){ - Graphics::DrawText(Image, L"Maxis\x2122 is an Electronic Arts\x2122 brand.", 0, 600-146, 800, 146, - Graphics::ALIGN_CENTER_CENTER, 0, RGB(0xef, 0xe3, 0x8c)); - } - - glBindTexture(GL_TEXTURE_2D, texture[i]); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB8, Image->Width, Image->Height, 0, GL_BGR, GL_UNSIGNED_BYTE, Image->Data); - free(Image->Data); - free(Image); - } - - image[IMG_COPYRIGHT] = Graphics::StringImage(L"(c) 2002, 2003 Electronic Arts Inc. All rights reserved.", - 0, RGB(0xef, 0xe3, 0x8c)); - if(image[IMG_COPYRIGHT] == NULL){ - EXIT_SCENE(); - } - glBindTexture(GL_TEXTURE_2D, texture[TEX_COPYRIGHT]); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, image[IMG_COPYRIGHT]->Width, image[IMG_COPYRIGHT]->Height, 0, GL_BGRA, - GL_UNSIGNED_BYTE, image[IMG_COPYRIGHT]->Data); - free(image[IMG_COPYRIGHT]->Data); - - for(int i=0; i<9; i++){ - image[IMG_STATUS+i] = Graphics::StringImage(StatusStrings[i], 0, RGB(0xef, 0xe3, 0x8c)); - if(image[IMG_STATUS+i] == NULL){ - EXIT_SCENE(); - } - glBindTexture(GL_TEXTURE_2D, texture[TEX_STATUS+i]); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, image[IMG_STATUS+i]->Width, image[IMG_STATUS+i]->Height, 0, GL_BGRA, - GL_UNSIGNED_BYTE, image[IMG_STATUS+i]->Data); - free(image[IMG_STATUS+i]->Data); - } - - for(int i=0; iData); - free(sound[i]); - } - } -} - -int LoginScreen::Run(float TimeDelta){ - Time += TimeDelta; - if(ScrollPos != 8){ - ScrollPos += TimeDelta*0.75; - if(ScrollPos > 8) ScrollPos = 8; - } - - if(Screen != Screen_Setup && Time >= 4.0){ - Screen = (Screen==Screen_EAGames) ? Screen_Maxis : Screen_Setup; - Time = 0; - } - - if(System::UserInput.CloseWindow){ - return SCENE_EXIT; - } - return SCENE_NEED_REDRAW; -} - -void LoginScreen::Render(){ - glMatrixMode(GL_TEXTURE); - - //Background - glBindTexture(GL_TEXTURE_2D, texture[Screen]); - glBegin(GL_QUADS); - glTexCoord2i(0,0); glVertex2i(0,0); - glTexCoord2i(1,0); glVertex2i(800,0); - glTexCoord2i(1,1); glVertex2i(800,600); - glTexCoord2i(0,1); glVertex2i(0,600); - glEnd(); - - if(Screen != Screen_Setup) return; - - glBindTexture(GL_TEXTURE_2D, texture[TEX_COPYRIGHT]); - glBegin(GL_QUADS); - glTexCoord2i(0,0); glVertex2i((800-image[IMG_COPYRIGHT]->Width)/2,58); - glTexCoord2i(1,0); glVertex2i((800-image[IMG_COPYRIGHT]->Width)/2 + image[IMG_COPYRIGHT]->Width,58); - glTexCoord2i(1,1); glVertex2i((800-image[IMG_COPYRIGHT]->Width)/2 + image[IMG_COPYRIGHT]->Width,image[IMG_COPYRIGHT]->Height + 58); - glTexCoord2i(0,1); glVertex2i((800-image[IMG_COPYRIGHT]->Width)/2,image[IMG_COPYRIGHT]->Height + 58); - glEnd(); - - for(int i=0; i<9; i++){ - glBindTexture(GL_TEXTURE_2D, texture[TEX_STATUS+i]); - glBegin(GL_QUADS); - glTexCoord2i(0,0); glVertex2i(((float)i - ScrollPos)*800 + (800-image[IMG_STATUS+i]->Width)/2,20); - glTexCoord2i(1,0); glVertex2i(((float)i - ScrollPos)*800 + (800-image[IMG_STATUS+i]->Width)/2 + image[IMG_STATUS+i]->Width,20); - glTexCoord2i(1,1); glVertex2i(((float)i - ScrollPos)*800 + (800-image[IMG_STATUS+i]->Width)/2 + image[IMG_STATUS+i]->Width,image[IMG_STATUS+i]->Height + 20); - glTexCoord2i(0,1); glVertex2i(((float)i - ScrollPos)*800 + (800-image[IMG_STATUS+i]->Width)/2,image[IMG_STATUS+i]->Height + 20); - glEnd(); - } -} \ No newline at end of file diff --git a/Client/Scene/LoginScreen/LoginScreen.hpp b/Client/Scene/LoginScreen/LoginScreen.hpp deleted file mode 100644 index a3d30a0..0000000 --- a/Client/Scene/LoginScreen/LoginScreen.hpp +++ /dev/null @@ -1,56 +0,0 @@ -/* - Niotso - The New Implementation of The Sims Online - Scene/LoginScreen/LoginScreen.hpp - Copyright (c) 2012 Niotso Project - Author(s): Fatbag - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -class LoginScreen : public Scene { - enum { - IMG_COPYRIGHT, - IMG_STATUS, //value = 1..9 - IMG_COUNT = 10 - }; - - enum { - TEX_EAGAMES, - TEX_MAXIS, - TEX_SETUP, - TEX_COPYRIGHT, - TEX_STATUS, //value = 4..12 - TEX_COUNT = 13 - }; - - enum { - SND_LOADLOOP, - SND_COUNT - }; - - enum { Screen_EAGames, Screen_Maxis, Screen_Setup } Screen; - float Time; - float ScrollPos; - Image_t * image[IMG_COUNT]; - GLuint texture[TEX_COUNT]; - PlayableSound_t * sound[SND_COUNT]; - - public: - LoginScreen(); - ~LoginScreen(); - void Render(); - - private: - int Run(float TimeDelta); -}; \ No newline at end of file diff --git a/Client/Scene/Scene.hpp b/Client/Scene/Scene.hpp deleted file mode 100644 index 97133b5..0000000 --- a/Client/Scene/Scene.hpp +++ /dev/null @@ -1,61 +0,0 @@ -/* - Niotso - The New Implementation of The Sims Online - Scene/Scene.hpp - Copyright (c) 2012 Niotso Project - Author(s): Fatbag - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#define EXIT_SCENE() do { System::SceneFailed = true; delete this; return; } while(0) -#define SCENE_EXIT 0 -#define SCENE_NEED_REDRAW 1 -#define SCENE_NO_REDRAW -1 - -class Scene { - const float TickPeriod; - float RealTimeDelta; - virtual int Run(float TimeDelta) = 0; - - protected: - float TimeDelta; - Scene(float c) : TickPeriod(c), RealTimeDelta(0) {} - - public: - int RunFor(float TimeDelta) { - if(TickPeriod == 0){ - return Run(TimeDelta); - } - - bool Redraw = false; - RealTimeDelta += TimeDelta; - while(RealTimeDelta >= 0){ - int result = Run(TickPeriod); - if(result == System::SHUTDOWN) - return System::SHUTDOWN; - if(result > 0) Redraw = true; - RealTimeDelta -= TickPeriod; - } - return (Redraw) ? 1 : -1; - } - - virtual void Render() = 0; - virtual ~Scene() {}; -}; - -/**** -** Scenes -*/ - -#include "LoginScreen/LoginScreen.hpp" \ No newline at end of file diff --git a/Client/System/System.cpp b/Client/System/System.cpp deleted file mode 100644 index 1ebf8c3..0000000 --- a/Client/System/System.cpp +++ /dev/null @@ -1,67 +0,0 @@ -/* - Niotso - The New Implementation of The Sims Online - System/System.cpp - Copyright (c) 2012 Niotso Project - Author(s): Fatbag - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "../EngineInterface.hpp" - -namespace System { - -HINSTANCE hInst = NULL; -LARGE_INTEGER ClockFreq; -volatile float FramePeriod; -UserInput_t UserInput = UserInput_t(); -volatile UserInput_t UserInput_v; -bool SceneFailed = false; - -int Initialize(){ - QueryPerformanceFrequency(&ClockFreq); - - DEVMODE dm; - EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dm); - System::FramePeriod = 1.0f/dm.dmDisplayFrequency; - - if(FT_Init_FreeType(&Graphics::FreeTypeLibrary)){ - MessageBox(Window::hWnd, "Failed to initialize FreeType.", NULL, MB_OK | MB_ICONERROR); - Graphics::FreeTypeLibrary = NULL; - Shutdown(); - return ERROR_SYSTEM_INIT_FREETYPE; - }; - if(FT_New_Face(Graphics::FreeTypeLibrary, "simdialogue-uni-game.ttf", 0, &Graphics::FontFace)){ - MessageBox(Window::hWnd, "simdialogue-uni-game.ttf does not exist or is corrupt or invalid.", - NULL, MB_OK | MB_ICONERROR); - Graphics::FontFace = NULL; - Shutdown(); - return ERROR_SYSTEM_MISSING_FONT; - } - - return 0; -} - -void Shutdown(){ - if(Graphics::FontFace){ - FT_Done_Face(Graphics::FontFace); - Graphics::FontFace = NULL; - } - if(Graphics::FreeTypeLibrary){ - FT_Done_FreeType(Graphics::FreeTypeLibrary); - Graphics::FreeTypeLibrary = NULL; - } -} - -} \ No newline at end of file diff --git a/Client/System/System.hpp b/Client/System/System.hpp deleted file mode 100644 index 9306529..0000000 --- a/Client/System/System.hpp +++ /dev/null @@ -1,87 +0,0 @@ -/* - Niotso - The New Implementation of The Sims Online - System/System.hpp - Copyright (c) 2012 Niotso Project - Author(s): Fatbag - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -namespace System { - int Initialize(); - void Shutdown(); - - extern HINSTANCE hInst; - extern LARGE_INTEGER ClockFreq; - extern volatile float FramePeriod; - - struct UserInput_t { - bool Keys[256]; - bool MouseDown; - bool CloseWindow; - }; - extern UserInput_t UserInput; - extern volatile UserInput_t UserInput_v; - - extern bool SceneFailed; - - //Constants - enum { - SHUTDOWN = 0 - }; -} - -/**** -** Program exit codes -** (Return 0 for success) -*/ - -#define ERROR_INIT 0x1000 -#define ERROR_INIT_ANOTHERINSTRUNNING 0x1001 - -//Engine errors -//Use: return ERROR_INIT | result; -#define ERROR_INIT_WINDOW 0x0100 - enum { - ERROR_WINDOW_SYNCOBJECT = 1, - ERROR_WINDOW_CREATE_THREAD, - ERROR_WINDOW_SYNCHRONIZE, - ERROR_WINDOW_REGISTER_CLASS, - ERROR_WINDOW_CREATE, - ERROR_WINDOW_HANDLE - }; -#define ERROR_INIT_SYSTEM 0x0200 - enum { - ERROR_SYSTEM_INIT_FREETYPE = 1, - ERROR_SYSTEM_MISSING_FONT - }; -#define ERROR_INIT_GRAPHICS 0x0300 - enum { - ERROR_GRAPHICS_OBTAIN_DC = 1, - ERROR_GRAPHICS_FIND_PIXELFORMAT, - ERROR_GRAPHICS_SET_PIXELFORMAT, - ERROR_GRAPHICS_CREATE_GLRC, - ERROR_GRAPHICS_ACTIVATE_GLRC, - ERROR_GRAPHICS_INIT_GLSCENE - }; -#define ERROR_INIT_AUDIO 0x0400 - enum { - ERROR_AUDIO_INIT_COM = 1, - ERROR_AUDIO_INIT_XAUDIO2, - ERROR_AUDIO_CREATE_VOICE - }; -#define ERROR_INIT_LOGIC 0x0500 - enum { - ERROR_LOGIC_CREATE_SCENE = 1 - }; \ No newline at end of file diff --git a/Client/TODO b/Client/TODO deleted file mode 100644 index 8f37171..0000000 --- a/Client/TODO +++ /dev/null @@ -1,21 +0,0 @@ -Because there are too many long-term things to list that we still have "to do" to reach the next development phase (e.g. -alpha to beta), this file contains only the things that are worked on currently or that will be in the very near future. - -While anybody is free to work on _anything_ at any point during Niotso's time, this list shall ONLY contain those relevant -to complete the criteria for the next development phase, which can be found here: - - -//----------// - -Development Phase: Planning - -Technical Preview 1 -Schedule: (Not very subject to change) - 1. Implement cst, uis, ini, and xml parsers with support for UTF-8 [20%] - 2. Replicate functionality up until the login dialog [90%] - 3. Implement the audio engine - 4. Implement the OpenGL-based windowing system - 5. Replicate character selection and creation features and the city selection dialog - 6. Implement debug logging and support for configuration files - 7. Implement the code needed to allow the game to read all necessary files from the TSOClient folder - 8. Port the client to Linux \ No newline at end of file diff --git a/Client/Window/Window.cpp b/Client/Window/Window.cpp deleted file mode 100644 index e7add39..0000000 --- a/Client/Window/Window.cpp +++ /dev/null @@ -1,208 +0,0 @@ -/* - Niotso - The New Implementation of The Sims Online - Window/Window.cpp - Copyright (c) 2012 Niotso Project - Author(s): Fatbag - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "../EngineInterface.hpp" - -namespace Window { - -unsigned Width, Height; -bool Fullscreen; -HWND hWnd; - -static HANDLE Response = NULL; -static HANDLE Thread = NULL; -static DWORD ThreadID = NULL; -static volatile int Result = NULL; - -static DWORD WINAPI Procedure(LPVOID); -static LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); -static int CreateWindowInvisible(HINSTANCE hInst, unsigned Width, unsigned Height, bool Fullscreen); - -int Initialize(){ - Response = CreateEvent(NULL, FALSE, FALSE, NULL); - if(Response == NULL){ - MessageBox(NULL, "Failed to create the message loop synchronization object.", NULL, MB_OK | MB_ICONERROR); - Shutdown(); - return ERROR_WINDOW_SYNCOBJECT; - } - - Thread = CreateThread(NULL, 1024 /* very tiny stack size is needed */, Window::Procedure, NULL, 0, &ThreadID); - if(Thread == NULL){ - MessageBox(NULL, "Failed to create the message loop thread.", NULL, MB_OK | MB_ICONERROR); - Shutdown(); - return ERROR_WINDOW_CREATE_THREAD; - } - - if(WaitForSingleObject(Window::Response, INFINITE) != WAIT_OBJECT_0){ - MessageBox(NULL, "Failed to synchronize with the message loop thread.", NULL, MB_OK | MB_ICONERROR); - Shutdown(); - return ERROR_WINDOW_SYNCHRONIZE; - } - - if(Result != 0){ - Shutdown(); - return Result; - } - - hWnd = FindWindow("TSO_NIOTSO", "The Sims Online"); - if(hWnd == NULL){ - MessageBox(NULL, "Failed to obtain a handle for the window.", NULL, MB_OK | MB_ICONERROR); - Shutdown(); - return ERROR_WINDOW_HANDLE; - } - - return 0; -} - -void Shutdown(){ - if(hWnd){ - DestroyWindow(hWnd); - hWnd = NULL; - } - if(Thread){ - DWORD value; - while(GetExitCodeThread(Thread, &value) && value){ - PostThreadMessage(ThreadID, WM_QUIT, 0, 0); - Sleep(1); - } - Thread = NULL; - } - if(Response){ - CloseHandle(Response); - Response = NULL; - } - - UnregisterClass("TSO_NIOTSO", System::hInst); -} - -static LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam){ - switch(uMsg){ - - case WM_SETCURSOR: - SetCursor(NULL); - break; - - case WM_KEYDOWN: - case WM_KEYUP: - System::UserInput_v.Keys[wParam] = (uMsg == WM_KEYDOWN); - return 0; - - case WM_CLOSE: - System::UserInput_v.CloseWindow = true; - return 0; - - case WM_DEVMODECHANGE: { - DEVMODE dm; - EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dm); - System::FramePeriod = 1.0f/dm.dmDisplayFrequency; - } return 0; - - } - return DefWindowProc(hWnd, uMsg, wParam, lParam); -} - -static DWORD WINAPI Procedure(LPVOID){ - int result = CreateWindowInvisible(System::hInst, Window::Width, Window::Height, Window::Fullscreen); - if(result != 0){ - Window::Result = result; - SetEvent(Window::Response); - return 0; - } - SetEvent(Window::Response); - - MSG msg; - while(GetMessage(&msg, NULL, 0, 0)){ - TranslateMessage(&msg); - DispatchMessage(&msg); - } - - return 0; -} - -static int CreateWindowInvisible(HINSTANCE hInst, unsigned Width, unsigned Height, bool Fullscreen) -{ - const WNDCLASS wc = { - CS_OWNDC, //style - WndProc, //lpfnWndProc - 0, //cbClsExtra - 0, //cbWndExtra - hInst, //hInstance - (HICON) LoadImage(hInst, MAKEINTRESOURCE(IDI_TSO), //hIcon - IMAGE_ICON, 0, 0, LR_SHARED | LR_DEFAULTSIZE), - NULL, //hCursor - NULL, //hbrBackground - NULL, //lpszMenuName - "TSO_NIOTSO" //lpszClassName - }; - - if(!RegisterClass(&wc)){ - MessageBox(NULL, "Failed to register the window class.", NULL, MB_OK | MB_ICONERROR); - return ERROR_WINDOW_REGISTER_CLASS; - } - SetCursor(NULL); - - HWND hWnd = NULL; - if(Fullscreen){ - DEVMODE dmScreenSettings; - dmScreenSettings.dmSize = sizeof(dmScreenSettings); - dmScreenSettings.dmFields = DM_PELSWIDTH|DM_PELSHEIGHT|DM_BITSPERPEL; - dmScreenSettings.dmPelsWidth = Width; - dmScreenSettings.dmPelsHeight = Height; - dmScreenSettings.dmBitsPerPel = 32; - - if(ChangeDisplaySettings(&dmScreenSettings, CDS_FULLSCREEN) != DISP_CHANGE_SUCCESSFUL){ - MessageBox(NULL, "Fullscreen mode is not supported by your setup. It has been turned off.", NULL, - MB_OK | MB_ICONERROR); - Fullscreen = 0; - }else{ - hWnd = CreateWindowEx(WS_EX_APPWINDOW, "TSO_NIOTSO", "The Sims Online", WS_POPUP, - 0, 0, Width, Height, 0, 0, hInst, NULL); - } - } - if(hWnd == NULL){ - Fullscreen = false; - RECT WindowRect = {0, 0, Width, Height}; - - //Use a style of WS_OVERLAPPEDWINDOW to allow resizing - AdjustWindowRectEx(&WindowRect, WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX, FALSE, - WS_EX_APPWINDOW); //This finds the dimensions of a window with a client area of our specified dimensions - - //Note: Windows can be positioned anywhere, even outside the visible workspace, - //but their sizes are limited to the size of the workspace on the primary display. - unsigned WindowWidth = WindowRect.right-WindowRect.left, WindowHeight = WindowRect.bottom-WindowRect.top; - RECT WorkspaceRect; - SystemParametersInfo(SPI_GETWORKAREA, 0, &WorkspaceRect, 0); - - hWnd = CreateWindowEx(WS_EX_APPWINDOW, "TSO_NIOTSO", "The Sims Online", - WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX, - ((WorkspaceRect.right-WorkspaceRect.left - WindowWidth)>>1) + WorkspaceRect.left, - ((WorkspaceRect.bottom-WorkspaceRect.top - WindowHeight)>>1) + WorkspaceRect.top, - WindowWidth, WindowHeight, 0, 0, hInst, NULL); - } - - if(hWnd == NULL){ - MessageBox(NULL, "Failed to create the window.", NULL, MB_OK | MB_ICONERROR); - return ERROR_WINDOW_CREATE; - } - - return 0; -} - -} \ No newline at end of file diff --git a/Client/Window/Window.hpp b/Client/Window/Window.hpp deleted file mode 100644 index 08fd040..0000000 --- a/Client/Window/Window.hpp +++ /dev/null @@ -1,28 +0,0 @@ -/* - Niotso - The New Implementation of The Sims Online - Window/Window.hpp - Copyright (c) 2012 Niotso Project - Author(s): Fatbag - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -namespace Window { - int Initialize(); - void Shutdown(); - - extern unsigned Width, Height; - extern bool Fullscreen; - extern HWND hWnd; -} \ No newline at end of file diff --git a/Client/version.h b/Client/version.h deleted file mode 100644 index 27ce87a..0000000 --- a/Client/version.h +++ /dev/null @@ -1,10 +0,0 @@ -#define VERSION_A 0 -#define VERSION_B 0 -#define VERSION_C 0 -#define VERSION_D 0 - -//You don't have to touch the following -#define xstr(x) str(x) -#define str(x) #x //Yes, double levels is required. See -#define VERSIONSTR "" \ - xstr(VERSION_A) "." xstr(VERSION_B) "." xstr(VERSION_C) "." xstr(VERSION_D) diff --git a/Libraries/CMakeLists.txt b/Libraries/CMakeLists.txt deleted file mode 100644 index 9f2cf98..0000000 --- a/Libraries/CMakeLists.txt +++ /dev/null @@ -1,11 +0,0 @@ -if(WIN32) - set(GLDEMO_EXE WIN32) - set(GLDEMO_LIBS mingw32 libgldemo_static opengl32 glu32) -else() - set(GLDEMO_EXE "") - set(GLDEMO_LIBS libgldemo_static Xxf86vm rt Xext X11 GL GLU) -endif() - -add_subdirectory(FileHandler) -add_subdirectory(libgldemo) -add_subdirectory(libvitaboy) diff --git a/Libraries/FileHandler/CMakeLists.txt b/Libraries/FileHandler/CMakeLists.txt deleted file mode 100644 index cb02914..0000000 --- a/Libraries/FileHandler/CMakeLists.txt +++ /dev/null @@ -1,52 +0,0 @@ -cmake_minimum_required(VERSION 2.6) -project(FileHandler) - -set(FILEHANDLER_SERIES 0) -set(FILEHANDLER_MAJOR 0) -set(FILEHANDLER_MINOR 0) - -if(64BIT) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fpic") -endif() - -add_subdirectory(far) -add_subdirectory(iff) -add_subdirectory(utk) -add_subdirectory(xa) - -set(FILEHANDLER_SOURCES - Audio.cpp - File.cpp - Image.cpp - bmp/read_bmp.c - cst/cst.c - utk/read_utk.c - wav/read_wav.c - xa/read_xa.c -) -if(WIN32) - set(FILEHANDLER_SOURCES ${FILEHANDLER_SOURCES} resource.rc) -endif() - -include_directories(${FILEHANDLER_INCLUDE} ${LIBMPG123_INCLUDE} ${LIBJPEGTURBO_INCLUDE} ${LIBPNG_INCLUDE}) - -#### Static library (uncomment to build) -#add_library(FileHandler_static STATIC ${FILEHANDLER_SOURCES}) -#set_target_properties(FileHandler_static PROPERTIES -# OUTPUT_NAME "FileHandler${FILEHANDLER_SERIES}" -# PREFIX "" -# CLEAN_DIRECT_OUTPUT 1) - -add_library(FileHandler_shared SHARED ${FILEHANDLER_SOURCES}) -if(WIN32) - set_target_properties(FileHandler_shared PROPERTIES OUTPUT_NAME "FileHandler${FILEHANDLER_SERIES}") -else() - set_target_properties(FileHandler_shared PROPERTIES OUTPUT_NAME "FileHandler") -endif() -set_target_properties(FileHandler_shared PROPERTIES - VERSION ${FILEHANDLER_SERIES}.${FILEHANDLER_MAJOR}.${FILEHANDLER_MINOR} - PREFIX "" - IMPORT_PREFIX "" - CLEAN_DIRECT_OUTPUT 1) - -target_link_libraries(FileHandler_shared far_static iff_static ${LIBJPEG_LINK} ${LIBMPG123_LINK} ${LIBPNG_LINK} ${ZLIB_LINK} m) diff --git a/Libraries/FileHandler/Image.cpp b/Libraries/FileHandler/Image.cpp deleted file mode 100644 index 408dc4c..0000000 --- a/Libraries/FileHandler/Image.cpp +++ /dev/null @@ -1,265 +0,0 @@ -/* - FileHandler - General-purpose file handling library for Niotso - Image.cpp - Copyright (c) 2011-2012 Niotso Project - Author(s): Fatbag - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ - -#include "FileHandler.hpp" -#include -#include -#include -#include //Used for libpng -#include "bmp/read_bmp.h" - -namespace File { - -enum ImageType { - FIMG_BMP, - FIMG_JPEG, - FIMG_PNG, - FIMG_TGACUR, - FIMG_COUNT -}; - -static uint8_t * ReadJPG(Image_t * Image, const uint8_t * InData, size_t FileSize); -static uint8_t * ReadBMP(Image_t * Image, const uint8_t * InData, size_t FileSize); -static uint8_t * ReadPNG(Image_t * Image, const uint8_t * InData, size_t FileSize); -static uint8_t * ReadTGA(Image_t * Image, const uint8_t * InData, size_t FileSize); -static uint8_t * ReadCUR(Image_t * Image, const uint8_t * InData, size_t FileSize); - -static uint8_t * ReadTGACUR(Image_t * Image, const uint8_t * InData, size_t FileSize){ - //Microsoft and Truevision, y u no more creative with your file signatures? - //In many cases we're going to see these bytes, exactly, at the beginning in both formats: - //00 00 02 00 01 00 - //So screw it. Try parsing the file first as a TGA, then as a CUR. - - uint8_t * Result = ReadTGA(Image, InData, FileSize); - return Result ? Result : ReadCUR(Image, InData, FileSize); -} - -static const uint8_t Signature[] = { - 'B', //BMP - 0xFF, //JPEG - 0x89, //PNG - 0x00 //TGA or CUR -}; -static uint8_t* (* const ImageFunction[])(Image_t*, const uint8_t*, size_t) = { - ReadBMP, - ReadJPG, - ReadPNG, - ReadTGACUR -}; - -Image_t * ReadImageFile(const char * Filename){ - uint8_t * InData = File::ReadFile(Filename); - if(InData == NULL) return NULL; - - if(File::FileSize < 4){ - free(InData); - File::Error = FERR_INVALIDDATA; - return NULL; - } - - Image_t * Image = (Image_t*) malloc(sizeof(Image_t)); - if(Image == NULL){ - free(InData); - File::Error = FERR_MEMORY; - return NULL; - } - - for(int i=0; iWidth = BMPHeader.biWidth; - Image->Height = BMPHeader.biHeight; - Image->Format = FIMG_BGR24; - Image->Data = OutData; - return OutData; -} - - -// libjpeg-turbo v6 doesn't support jpeg_mem_src, so we have to implement it here -static void term_source(j_decompress_ptr){} -static int fill_mem_input_buffer(j_decompress_ptr cinfo){ - ERREXIT(cinfo, JERR_FILE_READ); - return FALSE; -} -static void skip_input_data(j_decompress_ptr cinfo, long bytes) -{ - jpeg_source_mgr * src = cinfo->src; - - if(bytes > (long) src->bytes_in_buffer){ - ERREXIT(cinfo, JERR_FILE_READ); - return; - } - src->next_input_byte += bytes; - src->bytes_in_buffer -= bytes; -} -static uint8_t * ReadJPG(Image_t * Image, const uint8_t * InData, size_t FileSize){ - //Initialize - jpeg_decompress_struct cinfo; - jpeg_error_mgr jerr; - cinfo.err = jpeg_std_error(&jerr); - jpeg_create_decompress(&cinfo); - - if (cinfo.src == NULL) - cinfo.src = (jpeg_source_mgr *) - (*cinfo.mem->alloc_small)((j_common_ptr) &cinfo, JPOOL_PERMANENT, sizeof(jpeg_source_mgr)); - - jpeg_source_mgr *src = cinfo.src; - src->init_source = term_source; - src->fill_input_buffer = fill_mem_input_buffer; - src->skip_input_data = skip_input_data; - src->resync_to_restart = jpeg_resync_to_restart; - src->term_source = term_source; - src->bytes_in_buffer = FileSize; - src->next_input_byte = InData; - - if(jpeg_read_header(&cinfo, TRUE) != JPEG_HEADER_OK){ - jpeg_destroy_decompress(&cinfo); - return NULL; - } - cinfo.out_color_space = JCS_EXT_BGR; - if(!jpeg_start_decompress(&cinfo)){ - jpeg_destroy_decompress(&cinfo); - return NULL; - } - - //Read - unsigned row_stride = cinfo.output_width * cinfo.output_components; - uint8_t * OutData = (uint8_t*) malloc(cinfo.output_width * cinfo.output_height * cinfo.output_components); - if(OutData == NULL){ - jpeg_finish_decompress(&cinfo); - jpeg_destroy_decompress(&cinfo); - return NULL; - } - for(unsigned i=cinfo.output_height; i; i--){ - //According to the libjpeg documentation, - //jpeg_read_scanlines can only really read 1 scanline at a time. - //We need to convert to bottom-up format anyway. - uint8_t * Location = OutData + (i-1)*row_stride; - if(!jpeg_read_scanlines(&cinfo, &Location, 1)){ - free(OutData); - jpeg_finish_decompress(&cinfo); - jpeg_destroy_decompress(&cinfo); - return NULL; - } - } - - //Close up - jpeg_finish_decompress(&cinfo); - jpeg_destroy_decompress(&cinfo); - if(Image){ - Image->Width = cinfo.output_width; - Image->Height = cinfo.output_height; - Image->Format = FIMG_BGR24; - Image->Data = OutData; - } - return OutData; -} - -struct pngdata_t { - const uint8_t * buffer; - size_t size; -}; -static void user_read_data(png_structp png_ptr, png_bytep data, png_size_t length){ - pngdata_t *pngdata = (pngdata_t *) png_get_io_ptr(png_ptr); - if(length > pngdata->size) png_error(png_ptr, ""); - memcpy(data, pngdata->buffer, length); - pngdata->buffer += length; - pngdata->size -= length; -} -static uint8_t * ReadPNG(Image_t * Image, const uint8_t * InData, size_t FileSize){ - pngdata_t pngdata; - - png_structp png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); - if(png_ptr == NULL) return 0; - png_infop info_ptr = png_create_info_struct(png_ptr); - if(info_ptr == NULL){ - png_destroy_read_struct(&png_ptr, NULL, NULL); - return NULL; - } - if(setjmp(png_jmpbuf(png_ptr))){ - png_destroy_read_struct(&png_ptr, &info_ptr, NULL); - return NULL; - } - - pngdata.buffer = InData; - pngdata.size = FileSize; - png_set_read_fn(png_ptr, &pngdata, user_read_data); - png_set_user_limits(png_ptr, 4096, 4096); - png_read_png(png_ptr, info_ptr, - PNG_TRANSFORM_STRIP_16 | PNG_TRANSFORM_STRIP_ALPHA | - PNG_TRANSFORM_PACKING | PNG_TRANSFORM_GRAY_TO_RGB | PNG_TRANSFORM_BGR, NULL); - - //png_get_IHDR does not work in high-level mode. - unsigned width = png_get_image_width(png_ptr, info_ptr); - unsigned height = png_get_image_height(png_ptr, info_ptr); - uint8_t * OutData = (uint8_t *) malloc(width*height*3); - if(OutData == NULL){ - png_destroy_read_struct(&png_ptr, &info_ptr, NULL); - return NULL; - } - - uint8_t **Scanlines = png_get_rows(png_ptr, info_ptr); - for(unsigned i=0; iWidth = width; - Image->Height = height; - Image->Format = FIMG_BGR24; - Image->Data = OutData; - return OutData; -} - -static uint8_t * ReadTGA(Image_t * Image, const uint8_t * InData, size_t FileSize){ - return NULL; -} - -static uint8_t * ReadCUR(Image_t * Image, const uint8_t * InData, size_t FileSize){ - return NULL; -} - -} diff --git a/Libraries/FileHandler/cur/read_cur.h b/Libraries/FileHandler/cur/read_cur.h deleted file mode 100644 index 78ba594..0000000 --- a/Libraries/FileHandler/cur/read_cur.h +++ /dev/null @@ -1,17 +0,0 @@ -/* - FileHandler - General-purpose file handling library for Niotso - read_cur.h - Copyright (c) 2012 Niotso Project - Author(s): Fatbag - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ \ No newline at end of file diff --git a/Libraries/FileHandler/far/CMakeLists.txt b/Libraries/FileHandler/far/CMakeLists.txt deleted file mode 100644 index dad2be1..0000000 --- a/Libraries/FileHandler/far/CMakeLists.txt +++ /dev/null @@ -1,22 +0,0 @@ -cmake_minimum_required(VERSION 2.6) -project(far) - -set(FAR_SOURCES - far.c - refpack_dec.c -) - -add_library(far_static STATIC ${FAR_SOURCES}) -set_target_properties(far_static PROPERTIES - OUTPUT_NAME "far" - CLEAN_DIRECT_OUTPUT 1) - -#### Shared library (uncomment to build) -#add_library(far_shared SHARED ${FAR_SOURCES}) -#set_target_properties(far_shared PROPERTIES -# OUTPUT_NAME "far" -# PREFIX "" -# CLEAN_DIRECT_OUTPUT 1) - -add_executable(farextract farextract.c) -target_link_libraries(farextract far_static) \ No newline at end of file diff --git a/Libraries/FileHandler/hit/hit.c b/Libraries/FileHandler/hit/hit.c deleted file mode 100644 index f6605b8..0000000 --- a/Libraries/FileHandler/hit/hit.c +++ /dev/null @@ -1,17 +0,0 @@ -/* - FileHandler - General-purpose file handling library for Niotso - hit.c - Copyright (c) 2012 Niotso Project - Author(s): Fatbag - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ \ No newline at end of file diff --git a/Libraries/FileHandler/hit/hot.c b/Libraries/FileHandler/hit/hot.c deleted file mode 100644 index e64b182..0000000 --- a/Libraries/FileHandler/hit/hot.c +++ /dev/null @@ -1,17 +0,0 @@ -/* - FileHandler - General-purpose file handling library for Niotso - hot.c - Copyright (c) 2012 Niotso Project - Author(s): Fatbag - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ \ No newline at end of file diff --git a/Libraries/FileHandler/hit/hsm.c b/Libraries/FileHandler/hit/hsm.c deleted file mode 100644 index 1603dc4..0000000 --- a/Libraries/FileHandler/hit/hsm.c +++ /dev/null @@ -1,17 +0,0 @@ -/* - FileHandler - General-purpose file handling library for Niotso - hsm.c - Copyright (c) 2012 Niotso Project - Author(s): Fatbag - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ \ No newline at end of file diff --git a/Libraries/FileHandler/iff/CMakeLists.txt b/Libraries/FileHandler/iff/CMakeLists.txt deleted file mode 100644 index b7e0197..0000000 --- a/Libraries/FileHandler/iff/CMakeLists.txt +++ /dev/null @@ -1,37 +0,0 @@ -cmake_minimum_required(VERSION 2.6) -project(iff) - -set(IFF_SOURCES - bhav.c - cats.c - iff.c - bcon.c - dgrp.c - fcns.c - glob.c - objf.c - palt.c - rsmp.c - spr.c - spr2.c - str.c - string.c - tmpl.c - trcn.c -) - -add_library(iff_static STATIC ${IFF_SOURCES}) -set_target_properties(iff_static PROPERTIES - OUTPUT_NAME "iff" - PREFIX "" - CLEAN_DIRECT_OUTPUT 1) - -#### Shared library (uncomment to build) -#add_library(iff_shared SHARED ${IFF_SOURCES}) -#set_target_properties(iff_shared PROPERTIES -# OUTPUT_NAME "iff" -# PREFIX "" -# CLEAN_DIRECT_OUTPUT 1) - -add_executable(iffexport iffexport.c) -target_link_libraries(iffexport iff_static) \ No newline at end of file diff --git a/Libraries/FileHandler/ini/read_ini.c b/Libraries/FileHandler/ini/read_ini.c deleted file mode 100644 index da8eed1..0000000 --- a/Libraries/FileHandler/ini/read_ini.c +++ /dev/null @@ -1,17 +0,0 @@ -/* - FileHandler - General-purpose file handling library for Niotso - read_ini.c - Copyright (c) 2012 Niotso Project - Author(s): Fatbag - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ \ No newline at end of file diff --git a/Libraries/FileHandler/tga/elf.dat b/Libraries/FileHandler/tga/elf.dat deleted file mode 100644 index fcf6fa7..0000000 Binary files a/Libraries/FileHandler/tga/elf.dat and /dev/null differ diff --git a/Libraries/FileHandler/tga/elf.txt b/Libraries/FileHandler/tga/elf.txt deleted file mode 100644 index a193ff0..0000000 --- a/Libraries/FileHandler/tga/elf.txt +++ /dev/null @@ -1,93 +0,0 @@ -* Elf32_Word sh_name: -* Elf32_Word sh_type: -* Elf32_Word sh_flags: -* Elf32_Addr sh_addr: -* Elf32_Off sh_offset: (?? ?? ?? ??) -* Elf32_Word sh_size: (?? ?? ?? ??) -* Elf32_Word sh_link: -* Elf32_Word sh_info: -* Elf32_Word sh_addralign: 1 (01 00 00 00) -* Elf32_Word sh_entsize: - -ELF Header: -* e_ident: - * Elf32_Word EI_MAG0: (7F 45 4C 46) - * unsigned char EI_CLASS: ELFCLASS32 (01) - * unsigned char EI_DATA: ELFDATA2LSB (01) - * unsigned char EI_VERSION: EV_CURRENT (01) - * unsigned char EI_PAD[9]: (00 00 00 00 00 00 00 00 00) -* Elf32_Half e_type: ET_REL (01 00) -* Elf32_Half e_machine: EM_NONE (00 00) -* Elf32_Word e_version: EV_CURRENT (01 00 00 00) -* Elf32_Addr e_entry: 0 (00 00 00 00) -* Elf32_Off e_phoff: 0 (00 00 00 00) -* Elf32_Off e_shoff: 64 (40 00 00 00) -* Elf32_Word e_flags: 0x00000001 (01 00 00 00) -* Elf32_Half e_ehsize: 52 (34 00) -* Elf32_Half e_phentsize: 0 (00 00) -* Elf32_Half e_phnum: 0 (00 00) -* Elf32_Half e_shentsize: 40 (28 00) -* Elf32_Half e_shnum: 6 (06 00) -* Elf32_Half e_shstrndx: 2 (02 00) -* unsigned char padding[12] = (00 00 00 00 00 00 00 00 00 00 00 00) - -Section headers -0 (""): All 0s -1 (".text"): -* Elf32_Word sh_name: 1 (01 00 00 00) -* Elf32_Word sh_type: SHT_PROGBITS (01 00 00 00) -* Elf32_Word sh_flags: SHF_ALLOC | SHF_EXECINSTR (06 00 00 00) -* Elf32_Addr sh_addr: 0x00000010 (10 00 00 00) -* Elf32_Off sh_offset: (?? ?? ?? ??) -* Elf32_Word sh_size: (?? ?? ?? ??) -* Elf32_Word sh_link: 0 (00 00 00 00) -* Elf32_Word sh_info: 0 (00 00 00 00) -* Elf32_Word sh_addralign: 1 (01 00 00 00) -* Elf32_Word sh_entsize: 0 (00 00 00 00) -2 (".shstrtab"): -* Elf32_Word sh_name: 7 (07 00 00 00) -* Elf32_Word sh_type: SHT_STRTAB (03 00 00 00) -* Elf32_Word sh_flags: 0 (00 00 00 00) -* Elf32_Addr sh_addr: 0 (00 00 00 00) -* Elf32_Off sh_offset: (?? ?? ?? ??) -* Elf32_Word sh_size: (?? ?? ?? ??) -* Elf32_Word sh_link: 0 (00 00 00 00) -* Elf32_Word sh_info: 0 (00 00 00 00) -* Elf32_Word sh_addralign: 1 (01 00 00 00) -* Elf32_Word sh_entsize: 0 (00 00 00 00) -3 (".symtab"): -* Elf32_Word sh_name: 17 (11 00 00 00) -* Elf32_Word sh_type: SHT_SYMTAB (02 00 00 00) -* Elf32_Word sh_flags: 0 (00 00 00 00) -* Elf32_Addr sh_addr: 0 (00 00 00 00) -* Elf32_Off sh_offset: (?? ?? ?? ??) -* Elf32_Word sh_size: (?? ?? ?? ??) -* Elf32_Word sh_link: 4 (04 00 00 00) -* Elf32_Word sh_info: 5 (05 00 00 00) -* Elf32_Word sh_addralign: 1 (01 00 00 00) -* Elf32_Word sh_entsize: 16 (10 00 00 00) -4 (".strtab"): -* Elf32_Word sh_name: 25 (19 00 00 00) -* Elf32_Word sh_type: SHT_STRTAB (03 00 00 00) -* Elf32_Word sh_flags: 0 (00 00 00 00) -* Elf32_Addr sh_addr: 0 (00 00 00 00) -* Elf32_Off sh_offset: (?? ?? ?? ??) -* Elf32_Word sh_size: (?? ?? ?? ??) -* Elf32_Word sh_link: 0 (00 00 00 00) -* Elf32_Word sh_info: 0 (00 00 00 00) -* Elf32_Word sh_addralign: 1 (01 00 00 00) -* Elf32_Word sh_entsize: 0 (00 00 00 00) -5 (".rel.text"): -* Elf32_Word sh_name: 33 (21 00 00 00) -* Elf32_Word sh_type: SHT_REL (09 00 00 00) -* Elf32_Word sh_flags: 0 (00 00 00 00) -* Elf32_Addr sh_addr: 0 (00 00 00 00) -* Elf32_Off sh_offset: (?? ?? ?? ??) -* Elf32_Word sh_size: (?? ?? ?? ??) -* Elf32_Word sh_link: 3 (03 00 00 00) -* Elf32_Word sh_info: 1 (01 00 00 00) -* Elf32_Word sh_addralign: 1 (01 00 00 00) -* Elf32_Word sh_entsize: 8 (08 00 00 00) - -Symbols: -0: All 0s \ No newline at end of file diff --git a/Libraries/FileHandler/tga/hitutils.h b/Libraries/FileHandler/tga/hitutils.h deleted file mode 100644 index 04100ec..0000000 --- a/Libraries/FileHandler/tga/hitutils.h +++ /dev/null @@ -1,461 +0,0 @@ -/* - hitutils - The Sims HIT (dis)assembler and linker - hitutils.h - Copyright (c) 2012 Niotso Project - Author(s): Fatbag - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ - -#ifndef min - #define min(x,y) ((x) < (y) ? (x) : (y)) -#endif -#ifndef max - #define max(x,y) ((x) > (y) ? (x) : (y)) -#endif - -#ifndef read_int32 - #define read_uint32(x) (unsigned)(((x)[0]<<(8*0)) | ((x)[1]<<(8*1)) | ((x)[2]<<(8*2)) | ((x)[3]<<(8*3))) - #define read_uint16(x) (unsigned)(((x)[0]<<(8*0)) | ((x)[1]<<(8*1))) -#endif - -#ifndef write_int32 - #define write_uint32(dest, src) do {\ - (dest)[0] = ((src)&0x000000FF)>>(8*0); \ - (dest)[1] = ((src)&0x0000FF00)>>(8*1); \ - (dest)[2] = ((src)&0x00FF0000)>>(8*2); \ - (dest)[3] = ((src)&0xFF000000)>>(8*3); \ - } while(0) - #define write_uint16(dest, src) do {\ - (dest)[0] = ((src)&0x00FF)>>(8*0); \ - (dest)[1] = ((src)&0xFF00)>>(8*1); \ - } while(0) -#endif - -extern char *strdup (const char *__s) - __THROW __attribute_malloc__ __nonnull ((1)); - -static void Shutdown(); - -static void Shutdown_M(const char * Message, ...){ - va_list args; - va_start(args, Message); - vfprintf(stderr, Message, args); - va_end(args); - - Shutdown(); - exit(EXIT_FAILURE); -} - -enum { - VERSION_TS1 = 1, VERSION_TSO -}; - -#define OPERAND_BYTES(x) (x) -#define OPERAND(x, y) ((y)<<((x)*4+4)) -#define UNIMPLEMENTED ((uint32_t)~0) - -enum operand_t { - o_byte = 1, - o_dword, - o_address, - o_variable, - o_jump -}; - -typedef struct { - const char * Name; - uint32_t Operands; -} instruction_t; - -typedef struct { - const char * Name; - uint32_t Value; -} variable_t; - -typedef struct { - uint8_t * Data; - size_t Size; -} ByteReaderContext; - -static const uint8_t HITHeader[] = {'H','I','T','!',0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00,'T','R','A','X'}; - -#define InstructionCount 96 -static const instruction_t Instructions[] = { - {"note", UNIMPLEMENTED}, - {"note_on", OPERAND_BYTES(1) | OPERAND(0, o_variable)}, - {"note_off", OPERAND_BYTES(1) | OPERAND(0, o_variable)}, - {"loadb", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_byte)}, - {"loadl", OPERAND_BYTES(5) | OPERAND(0, o_variable) | OPERAND(1, o_dword)}, - {"set", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, - {"call", OPERAND_BYTES(4) | OPERAND(0, o_address)}, - {"return", OPERAND_BYTES(0)}, - {"wait", OPERAND_BYTES(1) | OPERAND(0, o_variable)}, - {"callentrypoint", UNIMPLEMENTED}, - {"wait_samp", OPERAND_BYTES(0)}, - {"end", OPERAND_BYTES(0)}, - {"jump", OPERAND_BYTES(1) | OPERAND(0, o_jump)}, - {"test", OPERAND_BYTES(1) | OPERAND(0, o_variable)}, - {"nop", OPERAND_BYTES(0)}, - {"add", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, - {"sub", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, - {"div", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, - {"mul", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, - {"cmp", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, - {"less", UNIMPLEMENTED}, - {"greater", UNIMPLEMENTED}, - {"not", UNIMPLEMENTED}, - {"rand", OPERAND_BYTES(3) | OPERAND(0, o_variable) | OPERAND(1, o_variable) | OPERAND(2, o_variable)}, - {"abs", UNIMPLEMENTED}, - {"limit", UNIMPLEMENTED}, - {"error", UNIMPLEMENTED}, - {"assert", UNIMPLEMENTED}, - {"add_to_group", UNIMPLEMENTED}, - {"remove_from_group", UNIMPLEMENTED}, - {"get_var", UNIMPLEMENTED}, - {"loop", OPERAND_BYTES(0)}, - {"set_loop", OPERAND_BYTES(0)}, - {"callback", UNIMPLEMENTED}, - {"smart_add", UNIMPLEMENTED}, - {"smart_remove", UNIMPLEMENTED}, - {"smart_removeall", UNIMPLEMENTED}, - {"smart_setcrit", UNIMPLEMENTED}, - {"smart_choose", OPERAND_BYTES(1) | OPERAND(0, o_variable)}, - {"and", UNIMPLEMENTED}, - {"nand", UNIMPLEMENTED}, - {"or", UNIMPLEMENTED}, - {"nor", UNIMPLEMENTED}, - {"xor", UNIMPLEMENTED}, - {"max", OPERAND_BYTES(5) | OPERAND(0, o_variable) | OPERAND(1, o_dword)}, - {"min", OPERAND_BYTES(5) | OPERAND(0, o_variable) | OPERAND(1, o_dword)}, - {"inc", OPERAND_BYTES(1) | OPERAND(0, o_variable)}, - {"dec", OPERAND_BYTES(1) | OPERAND(0, o_variable)}, - {"printreg", UNIMPLEMENTED}, - {"play_trk", OPERAND_BYTES(1) | OPERAND(0, o_variable)}, - {"kill_trk", OPERAND_BYTES(1) | OPERAND(0, o_variable)}, - {"push", UNIMPLEMENTED}, - {"push_mask", UNIMPLEMENTED}, - {"push_vars", UNIMPLEMENTED}, - {"call_mask", UNIMPLEMENTED}, - {"call_push", UNIMPLEMENTED}, - {"pop", UNIMPLEMENTED}, - {"test1", OPERAND_BYTES(0)}, - {"test2", OPERAND_BYTES(0)}, - {"test3", OPERAND_BYTES(0)}, - {"test4", OPERAND_BYTES(0)}, - {"ifeq", OPERAND_BYTES(4) | OPERAND(0, o_address)}, - {"ifne", OPERAND_BYTES(4) | OPERAND(0, o_address)}, - {"ifgt", OPERAND_BYTES(4) | OPERAND(0, o_address)}, - {"iflt", OPERAND_BYTES(4) | OPERAND(0, o_address)}, - {"ifge", OPERAND_BYTES(4) | OPERAND(0, o_address)}, - {"ifle", OPERAND_BYTES(4) | OPERAND(0, o_address)}, - {"smart_setlist", OPERAND_BYTES(1) | OPERAND(0, o_variable)}, - {"seqgroup_kill", OPERAND_BYTES(1) | OPERAND(0, o_byte)}, - {"seqgroup_wait", UNIMPLEMENTED}, - {"seqgroup_return", OPERAND_BYTES(1) | OPERAND(0, o_byte)}, - {"getsrcdatafield", OPERAND_BYTES(3) | OPERAND(0, o_variable) | OPERAND(1, o_variable) | OPERAND(2, o_variable)}, - {"seqgroup_trkid", OPERAND_BYTES(2) | OPERAND(0, o_byte) | OPERAND(1, o_byte)}, - {"setll", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, - {"setlt", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, - {"settl", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, - {"waiteq", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, - {"waitne", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, - {"waitgt", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, - {"waitlt", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, - {"waitge", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, - {"waitle", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, - {"duck", OPERAND_BYTES(0)}, - {"unduck", OPERAND_BYTES(0)}, - {"testx", UNIMPLEMENTED}, - {"setlg", OPERAND_BYTES(5) | OPERAND(0, o_variable) | OPERAND(1, o_dword)}, - {"setgl", OPERAND_BYTES(5) | OPERAND(0, o_variable) | OPERAND(1, o_dword)}, - {"throw", UNIMPLEMENTED}, - {"setsrcdatafield", OPERAND_BYTES(3) | OPERAND(0, o_variable) | OPERAND(1, o_variable) | OPERAND(2, o_variable)}, - {"stop_trk", OPERAND_BYTES(1) | OPERAND(0, o_variable)}, - {"setchanreg", UNIMPLEMENTED}, - {"play_note", UNIMPLEMENTED}, - {"stop_note", UNIMPLEMENTED}, - {"kill_note", UNIMPLEMENTED}, - {"smart_index", OPERAND_BYTES(2) | OPERAND(0, o_variable) | OPERAND(1, o_variable)}, - {"note_on_loop", OPERAND_BYTES(1) | OPERAND(0, o_variable)} -}; - -#define TSOVariableCount 82 -static const variable_t TSOVariables[] = { - {"arg0", 0x00}, - {"arg1", 0x01}, - {"arg2", 0x02}, - {"arg3", 0x03}, - {"arg4", 0x04}, - {"v1", 0x05}, - {"v2", 0x06}, - {"v3", 0x07}, - {"v4", 0x08}, - {"v5", 0x09}, - {"v6", 0x0A}, - {"v7", 0x0B}, - {"v8", 0x0C}, - {"h1", 0x0D}, - {"h2", 0x0E}, - {"h3", 0x0F}, - {"argstype", 0x10}, - {"trackdatasource", 0x11}, - {"patch", 0x12}, - {"priority", 0x13}, - {"vol", 0x14}, - {"extvol", 0x15}, - {"pan", 0x16}, - {"pitch", 0x17}, - {"paused", 0x18}, - {"fxtype", 0x19}, - {"fxlevel", 0x1a}, - {"duckpri", 0x1b}, - {"Is3d", 0x1c}, - {"IsHeadRelative", 0x1d}, - {"MinDistance", 0x1e}, - {"MaxDistance", 0x1f}, - {"X", 0x20}, - {"Y", 0x21}, - {"Z", 0x22}, - {"attack", 0x23}, - {"decay", 0x24}, - {"IsStreamed", 0x25}, - {"bufsizemult", 0x26}, - {"fade_dest", 0x27}, - {"fade_var", 0x28}, - {"fade_speed", 0x29}, - {"fade_on", 0x2a}, - {"Preload", 0x2b}, - {"isplaying", 0x2c}, - {"whattodowithupdate", 0x2d}, - {"tempo", 0x2e}, - {"target", 0x2f}, - {"ctrlgroup", 0x30}, - {"interrupt", 0x31}, - {"ispositioned", 0x32}, - {"AppObjectId", 0x34}, - {"callbackarg", 0x35}, - {"pitchrandmin", 0x36}, - {"pitchrandmax", 0x37}, - {"spl", 0x38}, - {"sem", 0x39}, - {"starttrackid", 0x3a}, - {"endtrackid", 0x3b}, - {"startdelay", 0x3c}, - {"fadeinspeed", 0x3d}, - {"fadeoutspeed", 0x3e}, - {"hitlist", 0x3f}, - {"SimSpeed", 0x64}, - {"test_g1", 0x65}, - {"test_g2", 0x66}, - {"test_g3", 0x67}, - {"test_g4", 0x68}, - {"test_g5", 0x69}, - {"test_g6", 0x6a}, - {"test_g7", 0x6b}, - {"test_g8", 0x6c}, - {"test_g9", 0x6d}, - {"main_songnum", 0x6e}, - {"main_musichitlistid", 0x6f}, - {"campfire_nexttrack", 0x70}, - {"campfire_busy", 0x71}, - {"main_duckpri", 0x7b}, - {"main_vol", 0x7c}, - {"main_fxtype", 0x7d}, - {"main_fxlevel", 0x7e}, - {"main_pause", 0x7f}, -}; - -#define TS1VariableCount 87 -static const variable_t TS1Variables[] = { - {"arg0", 0x00}, - {"arg1", 0x01}, - {"arg2", 0x02}, - {"arg3", 0x03}, - {"arg4", 0x04}, - {"v1", 0x05}, - {"v2", 0x06}, - {"v3", 0x07}, - {"v4", 0x08}, - {"v5", 0x09}, - {"v6", 0x0a}, - {"v7", 0x0b}, - {"v8", 0x0c}, - {"h1", 0x0d}, - {"h2", 0x0e}, - {"h3", 0x0f}, - {"priority", 0x11}, - {"vol", 0x12}, - {"extvol", 0x13}, - {"pan", 0x14}, - {"pitch", 0x15}, - {"paused", 0x16}, - {"fxtype", 0x17}, - {"fxlevel", 0x18}, - {"duckpri", 0x19}, - {"Is3d", 0x1a}, - {"IsHeadRelative", 0x1b}, - {"MinDistance", 0x1c}, - {"MaxDistance", 0x1d}, - {"X", 0x1e}, - {"Y", 0x1f}, - {"Z", 0x20}, - {"filter_type", 0x21}, - {"filter_cutoff", 0x22}, - {"filter_level", 0x23}, - {"attack", 0x24}, - {"decay", 0x25}, - {"IsStreamed", 0x26}, - {"BufSizeMult", 0x27}, - {"fade_dest", 0x28}, - {"fade_var", 0x29}, - {"fade_speed", 0x2a}, - {"Preload", 0x2b}, - {"IsLooped", 0x2c}, - {"fade_on", 0x2d}, - {"isplaying", 0x2e}, - {"source", 0x2f}, - {"patch", 0x32}, - {"WhatToDoWithUpdate", 0x33}, - {"tempo", 0x34}, - {"target", 0x35}, - {"mutegroup", 0x36}, - {"interrupt", 0x37}, - {"IsPositioned", 0x38}, - {"Spl", 0x39}, - {"MultipleInstances", 0x3a}, - {"AssociatedTrack1", 0x3b}, - {"AssociatedTrack2", 0x3c}, - {"AssociatedTrack3", 0x3d}, - {"AssociatedTrack4", 0x3e}, - {"AssociatedTrack5", 0x3f}, - {"AssociatedTrack6", 0x40}, - {"AssociatedTrack7", 0x41}, - {"AssociatedTrack8", 0x42}, - {"SimSpeed", 0x64}, - {"test_g1", 0x65}, - {"test_g2", 0x66}, - {"test_g3", 0x67}, - {"test_g4", 0x68}, - {"test_g5", 0x69}, - {"test_g6", 0x6a}, - {"test_g7", 0x6b}, - {"test_g8", 0x6c}, - {"test_g9", 0x6d}, - {"main_songnum", 0x6e}, - {"main_musichitlistid", 0x6f}, - {"campfire_nexttrack", 0x70}, - {"campfire_busy", 0x71}, - {"main_duckpri", 0x7b}, - {"main_vol", 0x7c}, - {"main_fxtype", 0x7d}, - {"main_fxlevel", 0x7e}, - {"main_pause", 0x7f}, -}; - -#define ConstantCount 72 -static const variable_t Constants[] = { - {"duckpri_always", 0x0}, - {"duckpri_low", 0xa}, - {"duckpri_normal", 0x14}, - {"duckpri_high", 0x1e}, - {"duckpri_higher", 0x28}, - {"duckpri_evenhigher", 0x32}, - {"duckpri_never", 0x64}, - {"spl_infinite", 0x0}, - {"spl_loud", 0xa}, - {"spl_normal", 0x14}, - {"spl_quiet", 0x64}, - {"Instance", 0x0}, - {"Gender", 0x1}, - {"GroupMusic", 0x1}, - {"GroupDialogMain", 0x2}, - {"GroupDialogOverlay", 0x3}, - {"PchDishwasherClose", 0x32}, - {"PchDishwasherLoad", 0x33}, - {"PchDishwasherLoad2", 0x34}, - {"PchDishwasherOpen", 0x35}, - {"PchDishwasherTurnDial", 0x39}, - {"PchDishwasherTurnDial2", 0x3a}, - {"TrkRadioStationCountry", 0x104}, - {"TrkRadioStationBossaNova", 0x10e}, - {"TrkRadioStationClassical", 0x10d}, - {"TrkRadioStationRock", 0x118}, - {"kSndobPlay", 1}, - {"kSndobStop", 2}, - {"kSndobKill", 3}, - {"kSndobUpdate", 4}, - {"kSndobSetVolume", 5}, - {"kSndobSetPitch", 6}, - {"kSndobSetPan", 7}, - {"kSndobSetPosition", 8}, - {"kSndobSetFxType", 9}, - {"kSndobSetFxLevel", 10}, - {"kSndobPause", 11}, - {"kSndobUnpause", 12}, - {"kSndobLoad", 13}, - {"kSndobUnload", 14}, - {"kSndobCache", 15}, - {"kSndobUncache", 16}, - {"kSndobCancelNote", 19}, - {"kPlayPiano", 43}, - {"kSetMusicMode", 36}, - {"kLive", 0}, - {"kBuy", 1}, - {"kBuild", 2}, - {"kHood", 3}, - {"kFrontEnd", 4}, - {"kGroupSfx", 1}, - {"kGroupMusic", 2}, - {"kGroupVox", 3}, - {"kAction", 1000}, - {"kComedy", 1001}, - {"kRomance", 1002}, - {"kNews", 1003}, - {"kCountry", 1004}, - {"kRock", 1005}, - {"kJazz", 1006}, - {"kClassical", 1007}, - {"kArgsNormal", 0}, - {"kArgsVolPan", 1}, - {"kArgsIdVolPan", 2}, - {"kArgsXYZ", 3}, - {"kKillAll", 20}, - {"kPause", 21}, - {"kUnpause", 22}, - {"kKillInstance", 23}, - {"kTurnOnTv", 30}, - {"kTurnOffTv", 31}, - {"kUpdateSourceVolPan", 32}, -}; - -static const uint8_t ObjectHeader[] = { - 0x7F, 0x45, 0x4C, 0x46, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, - 0x06, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 -}; \ No newline at end of file diff --git a/Libraries/FileHandler/tga/read_tga.c b/Libraries/FileHandler/tga/read_tga.c deleted file mode 100644 index 3087033..0000000 --- a/Libraries/FileHandler/tga/read_tga.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - FileHandler - General-purpose file handling library for Niotso - read_tga.c - Copyright (c) 2012 Niotso Project - Author(s): Fatbag - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ - -#include -#include -#include -#include "read_tga.h" - -#ifndef read_uint32 - #define read_uint32(x) (unsigned)(((x)[0]<<(8*0)) | ((x)[1]<<(8*1)) | ((x)[2]<<(8*2)) | ((x)[3]<<(8*3))) - #define read_uint16(x) (unsigned)(((x)[0]<<(8*0)) | ((x)[1]<<(8*1))) -#endif - -int tga_read_header(tgaheader_t * TGAHeader, const uint8_t * Buffer, size_t FileSize){ - unsigned padding; - if(FileSize < ?) return 0; - TGAHeader->IDLength = read_uint8(Buffer); - TGAHeader->ColorMapType = read_uint8(Buffer+1); - TGAHeader->ImageType = read_uint8(Buffer+2); - - /* Color map */ - TGAHeader->FirstEntry = read_uint16(Buffer+3); - TGAHeader->ColorMapLength = read_uint16(Buffer+5); - TGAHeader->EntrySize = read_uint8(Buffer+7); - - /* Image */ - TGAHeader->XOrigin = read_uint16(Buffer+8); - TGAHeader->YOrigin = read_uint16(Buffer+10); - TGAHeader->Width = read_uint16(Buffer+12); - TGAHeader->Height = read_uint16(Buffer+14); - TGAHeader->ImageDepth = read_uint8(Buffer+16); - TGAHeader->Descriptor = read_uint8(Buffer+17); - - return 1; -} diff --git a/Libraries/FileHandler/tga/read_tga.h b/Libraries/FileHandler/tga/read_tga.h deleted file mode 100644 index 168d13e..0000000 --- a/Libraries/FileHandler/tga/read_tga.h +++ /dev/null @@ -1,17 +0,0 @@ -/* - FileHandler - General-purpose file handling library for Niotso - read_tga.h - Copyright (c) 2012 Niotso Project - Author(s): Fatbag - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ \ No newline at end of file diff --git a/Libraries/FileHandler/tga/tsov2.txt b/Libraries/FileHandler/tga/tsov2.txt deleted file mode 100644 index 3261a93..0000000 --- a/Libraries/FileHandler/tga/tsov2.txt +++ /dev/null @@ -1,10644 +0,0 @@ -BASEID_TRACKDATA 15000 - -; -; generated by MakeTrax. -; - -; useful symbols: -; kSndobPlay = 1 -; tkd_Generic 1 -; tkd_GenericLooped 2 -; tkd_GenericHitList 3 - -INCLUDE defaultsyms.txt -INCLUDE SimsGlobals.txt - -LIST [Options] Version=1 -LIST [Options] LoadPriority=2 - -;LIST [EventMappingEquate] kSndobPlay=1 -; --- end of standard intro text --- - -SYMBOLFILE tsov2.hsm -INIFILE tsov2.ini - -# User data include -INCLUDE tsov2_userdata.txt - -BINARY -[ -Vox_huggee_good_tso - loadl v1 #16962 - loadl v2 #16963 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_tradee_reject_loop - loadl v1 #17238 - loadl v2 #17239 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Vox_tease_sit - loadl v1 #17218 - loadl v2 #17219 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_silly_throwup - loadl v1 #17168 - loadl v2 #17169 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -gametimer_break - loadl v1 #17391 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -jobobject_light_flash - loadl v1 #17427 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -tutorial_lpa_sfx - loadl v1 #15014 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_bunkbed_top_make - loadl v1 #15127 - loadl v2 #15128 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_insultee_tso - loadl v1 #16994 - loadl v2 #16995 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_boo_sit - loadl v1 #15119 - loadl v2 #15120 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -jobmech_success_vox - loadl v1 #16449 - loadl v2 #16450 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_handshakee - loadl v1 #16946 - loadl v2 #16947 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_dance_swingee - loadl v1 #16733 - loadl v2 #16734 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_booer - loadl v1 #16623 - loadl v2 #16624 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -ui_call_rec_next - loadl v1 #17536 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -Pinata_swingha_vox - loadl v1 #16478 - loadl v2 #16479 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Vox_kisser_sweet - loadl v1 #17014 - loadl v2 #17015 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_game_repair - loadl v1 #15056 - loadl v2 #15057 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_afraida_loopa - loadl v1 #16518 - loadl v2 #16519 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -game_piece_put - loadl v1 #17381 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -Vox_insult_kneel - loadl v1 #16988 - loadl v2 #16989 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_afraida_loopb - loadl v1 #16520 - loadl v2 #16521 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -jobmech_fuse_slap - loadl v1 #17422 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -flower_throw_down - loadl v1 #17372 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_sexy_mgrowl - loadl v1 #17150 - loadl v2 #17151 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_afraida_loopc - loadl v1 #16522 - loadl v2 #16523 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Pinata_swingmc_vox - loadl v1 #16488 - loadl v2 #16489 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_talk_askint - loadl v1 #17212 - loadl v2 #17213 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vpoker_lpa_vox - loadl v1 #15237 - loadl v2 #15238 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_handshaker - loadl v1 #16948 - loadl v2 #16949 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_dance_swinger - loadl v1 #16735 - loadl v2 #16736 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_teleport_swapskin - loadl v1 #15235 - loadl v2 #15236 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -pizza_appear_close - loadl v1 #17462 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -game_draw_place - loadl v1 #17378 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -chalkb_erasec_vox - loadl v1 #16399 - loadl v2 #16400 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -nails_file_a - loadl v1 #15280 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -nails_file_b - loadl v1 #15281 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -nails_file_c - loadl v1 #15282 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -joblogic_switch - loadl v1 #17417 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -pizza_dough_throw - loadl v1 #17467 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_breaker_friendship - loadl v1 #16647 - loadl v2 #16648 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_tickler_extreme - loadl v1 #17230 - loadl v2 #17231 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Death_guts_putback - loadl v1 #17352 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -repair_piano_start - loadl v1 #17503 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_armkissee - loadl v1 #16557 - loadl v2 #16558 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_foot_stomp_missera - loadl v1 #16870 - loadl v2 #16871 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_eyepoker_tso - loadl v1 #16815 - loadl v2 #16816 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_foot_stomp_misserb - loadl v1 #16872 - loadl v2 #16873 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Vox_cheerupee_pos - loadl v1 #16653 - loadl v2 #16654 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Vox_flyhuggee_neg_tso - loadl v1 #16856 - loadl v2 #16857 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -trashcompact_open - loadl v1 #15275 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -map_read_unroll - loadl v1 #17441 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -map_read_reada - loadl v1 #17437 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -jobbody_success_vox - loadl v1 #16433 - loadl v2 #16434 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -map_read_readb - loadl v1 #17438 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_gmoneyer_reject - loadl v1 #16910 - loadl v2 #16911 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -map_read_readc - loadl v1 #17439 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_armkisser - loadl v1 #16559 - loadl v2 #16560 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -cardtable_dealer_spin - loadl v1 #17310 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_bunkbed_bottom_make - loadl v1 #15123 - loadl v2 #15124 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -repair_typew_stop - loadl v1 #17506 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_angryc_loopa - loadl v1 #16551 - loadl v2 #16552 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -gamecomp_hit_hard - loadl v1 #17386 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_angryc_loopb - loadl v1 #16553 - loadl v2 #16554 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_angryc_loopc - loadl v1 #16555 - loadl v2 #16556 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -spades_deal_lp - loadl v1 #15010 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vpoker_lpc_sfx - loadl v1 #15020 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -pizza_oven_break - loadl v1 #17468 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -Vox_proposer_no - loadl v1 #17100 - loadl v2 #17101 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_visitor_kickee - loadl v1 #17258 - loadl v2 #17259 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_pout - loadl v1 #17088 - loadl v2 #17089 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_trader_rejecta_start - loadl v1 #17252 - loadl v2 #17253 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Vox_breakee_friendship - loadl v1 #16645 - loadl v2 #16646 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -elevator_open - loadl v1 #15024 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -smokears - loadl v1 #17519 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -Vox_flirt_stand - loadl v1 #16854 - loadl v2 #16855 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Vox_fight_sissyer_pushee - loadl v1 #16823 - loadl v2 #16824 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -door_turnstile_open - loadl v1 #17364 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -blackjack_stay_vox - loadl v1 #16395 - loadl v2 #16396 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Death_mhead_putback - loadl v1 #17354 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -compact_close - loadl v1 #17332 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -ctrunk_wlocker_close - loadl v1 #17342 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -pizza_prep_dough - loadl v1 #17475 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -Latin_feet - loadl v1 #17433 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_game_vote_ballot - loadl v1 #15155 - loadl v2 #15156 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_visitor_kicker - loadl v1 #17260 - loadl v2 #17261 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Vox_giftgetter - loadl v1 #16898 - loadl v2 #16899 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_repair_chess_start - loadl v1 #15181 - loadl v2 #15182 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_hatrack_consider - loadl v1 #15167 - loadl v2 #15168 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_eeeew - loadl v1 #16803 - loadl v2 #16804 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Vox_fight_sissyer_pusher - loadl v1 #16825 - loadl v2 #16826 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -repair_gnome_lp - loadl v1 #17496 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -chalkb_erasea - loadl v1 #17314 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -chalkb_eraseb - loadl v1 #17315 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -chalkb_erasec - loadl v1 #17316 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_drunk - loadl v1 #16801 - loadl v2 #16802 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -chalkb_erased - loadl v1 #17317 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_dance_td - loadl v1 #16741 - loadl v2 #16742 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -gem_pickaxe_tired_vox - loadl v1 #15077 - loadl v2 #15078 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -gametimer_button - loadl v1 #17392 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_bawl - loadl v1 #16603 - loadl v2 #16604 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Door_stall_open - loadl v1 #15066 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -pizza_appear_raise - loadl v1 #17464 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -Vox_dancee_slow_reject - loadl v1 #16745 - loadl v2 #16746 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_vogue - loadl v1 #17262 - loadl v2 #17263 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -spades_score_start_vox - loadl v1 #15111 - loadl v2 #15112 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -foodtray_give_voxnffod - loadl v1 #15309 - loadl v2 #15309 - loadl v3 #15309 - call #generic_fm_smartlists - end -] - -BINARY -[ -ctrunk_scifi_change - loadl v1 #17341 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_game_vote_start - loadl v1 #15159 - loadl v2 #15160 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -coin_toss - loadl v1 #17331 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -cannonball_pickup - loadl v1 #17303 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -tipjar_money_getf - loadl v1 #17524 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_tickler_wetself - loadl v1 #17232 - loadl v2 #17233 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_repair_comp_start - loadl v1 #15183 - loadl v2 #15184 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -slotc_win - loadl v1 #17518 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -fart_sfx - loadl v1 #15256 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -Vox_proposee_yes - loadl v1 #17098 - loadl v2 #17099 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -mic_adjust - loadl v1 #17442 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_monologue - loadl v1 #17064 - loadl v2 #17065 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -jobmech_fuse_bang - loadl v1 #17421 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -jobmech_ponderc_vox - loadl v1 #16447 - loadl v2 #16448 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -sting_death - loadl v1 #15267 - call #userdata_sting_death - end -] - -BINARY -[ -foodtray_order_voxnffod - loadl v1 #15310 - loadl v2 #15310 - loadl v3 #15310 - call #generic_fm_smartlists - end -] - -BINARY -[ -tmarket_phone_putf - loadl v1 #17531 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -tipjar_money_gett - loadl v1 #17525 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_sit_shakefist - loadl v1 #17188 - loadl v2 #17189 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -jobbody_push_lever - loadl v1 #17411 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_insulter_tso - loadl v1 #16996 - loadl v2 #16997 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_roomater_kickout - loadl v1 #17118 - loadl v2 #17119 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -tmarket_phone_puts - loadl v1 #17532 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -gamecomp_hit_soft - loadl v1 #17388 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_gymnastic - loadl v1 #16940 - loadl v2 #16941 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -blackjack_cards_shuffle - loadl v1 #17285 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_sword_swallow - loadl v1 #17208 - loadl v2 #17209 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Ctrunk_mlocker_open - loadl v1 #17339 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -roulette_spin_stop - loadl v1 #15262 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -typewriter_loop - loadl v1 #17533 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_yawn_stretch - loadl v1 #17272 - loadl v2 #17273 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Vox_flyhugger_start_tso - loadl v1 #16864 - loadl v2 #16865 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -repair_easel_start - loadl v1 #17494 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -ui_letter_send - loadl v1 #17540 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_boredc_loopa - loadl v1 #16637 - loadl v2 #16638 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -gamecomp_target_hit - loadl v1 #17390 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_boredc_loopb - loadl v1 #16639 - loadl v2 #16640 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_boredc_loopc - loadl v1 #16641 - loadl v2 #16642 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_chin_ticklee_bat - loadl v1 #15131 - loadl v2 #15132 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Pinata_start_vox - loadl v1 #16474 - loadl v2 #16475 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -foodtray_greet_voxnffod - loadl v1 #15311 - loadl v2 #15311 - loadl v3 #15311 - call #generic_fm_smartlists - end -] - -BINARY -[ -Vox_cheeruper_pos - loadl v1 #16657 - loadl v2 #16658 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_piledrivera - loadl v1 #17084 - loadl v2 #17085 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_piledriverb - loadl v1 #17086 - loadl v2 #17087 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Vox_backrubber_refused - loadl v1 #16599 - loadl v2 #16600 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -gem_pickaxe_lpc_vox - loadl v1 #15075 - loadl v2 #15076 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -door_vault_close - loadl v1 #17365 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -bunkbed_bottom_getout - loadl v1 #17291 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -pinata_swing_hita - loadl v1 #17456 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -chalkb_write_final - loadl v1 #17319 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -pinata_swing_hitb - loadl v1 #17457 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -pinata_swing_hitc - loadl v1 #17458 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -spades_deal_idlea_vox - loadl v1 #15099 - loadl v2 #15100 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_game_draw_start - loadl v1 #15151 - loadl v2 #15152 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_groovyb_loopa - loadl v1 #16920 - loadl v2 #16921 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_groovyb_loopb - loadl v1 #16922 - loadl v2 #16923 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_groovyb_loopc - loadl v1 #16924 - loadl v2 #16925 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_brow_wipe - loadl v1 #16649 - loadl v2 #16650 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -ui_call_rec_first - loadl v1 #17535 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -chalkb_writef_vox - loadl v1 #16421 - loadl v2 #16422 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -pinata_coins_grab - loadl v1 #17454 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -dingbat_kiss - loadl v1 #17362 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -blackjack_cards_deal - loadl v1 #17282 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_repair_mbull_start - loadl v1 #15205 - loadl v2 #15206 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_heartee_pullout - loadl v1 #16954 - loadl v2 #16955 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_food_give_seated - loadl v1 #15145 - loadl v2 #15146 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_talk_normal - loadl v1 #15229 - loadl v2 #15230 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_sit_bored_sigh - loadl v1 #17176 - loadl v2 #17177 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_teleport_insideout - loadl v1 #15233 - loadl v2 #15234 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_repair_mirror_stop - loadl v1 #15209 - loadl v2 #15210 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -gamecomp_target_full - loadl v1 #17389 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -Vox_fight_sissyer_start - loadl v1 #16827 - loadl v2 #16828 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -slotb_lose - loadl v1 #17513 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_dance_hiphop - loadl v1 #16715 - loadl v2 #16716 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -tmarketer_react_good_vox - loadl v1 #16514 - loadl v2 #16515 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_cheerupee_pup_pos - loadl v1 #15291 - loadl v2 #15292 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_sigh_weak - loadl v1 #17166 - loadl v2 #17167 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_laugh_happy - loadl v1 #17046 - loadl v2 #17047 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_tradee_rejecta_start - loadl v1 #17240 - loadl v2 #17241 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Vox_proposer_tso - loadl v1 #17102 - loadl v2 #17103 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Vox_dancee_slow_stop - loadl v1 #16747 - loadl v2 #16748 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -jobobject_sequencea - loadl v1 #17430 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -jobobject_sequenceb - loadl v1 #17431 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_game_cont_wina - loadl v1 #15048 - loadl v2 #15049 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -jobobject_sequencec - loadl v1 #17432 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_game_cont_winb - loadl v1 #15050 - loadl v2 #15051 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -tutorial_lpc_vox - loadl v1 #15117 - loadl v2 #15118 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_game_cont_idlea - loadl v1 #16882 - loadl v2 #16883 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_game_cont_idleb - loadl v1 #16884 - loadl v2 #16885 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_game_cont_idlec - loadl v1 #16886 - loadl v2 #16887 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_fiver_react_bad - loadl v1 #16837 - loadl v2 #16838 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -map_reader_loopa_vox - loadl v1 #16466 - loadl v2 #16467 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_repair_exmach_stop - loadl v1 #15195 - loadl v2 #15196 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -roulette_spin - loadl v1 #15261 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -repair_guitar_start - loadl v1 #17498 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -Vox_tease_stand - loadl v1 #17220 - loadl v2 #17221 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -repair_typew_lp - loadl v1 #17504 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -pizza_door_open - loadl v1 #17466 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -chalkb_writec_vox - loadl v1 #16415 - loadl v2 #16416 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_peck_acceptee - loadl v1 #17070 - loadl v2 #17071 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -pizza_prep_cheese - loadl v1 #17474 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -spades_cards_play_vox - loadl v1 #15097 - loadl v2 #15098 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Vox_whisper_secret - loadl v1 #17264 - loadl v2 #17265 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -door_turnstile_close - loadl v1 #17363 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -Vox_fight_sissyee_cower - loadl v1 #16819 - loadl v2 #16820 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Ctrunk_Scifi_Button - loadl v1 #17340 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_dance_tangoee - loadl v1 #16737 - loadl v2 #16738 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -door_vault_open - loadl v1 #17367 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_scream_primal - loadl v1 #17142 - loadl v2 #17143 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_repair_gnome_start - loadl v1 #15197 - loadl v2 #15198 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -blackjack_chip_place - loadl v1 #17287 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_peck_accepter - loadl v1 #17072 - loadl v2 #17073 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_dance_discoee - loadl v1 #16705 - loadl v2 #16706 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vpoker_repair_start - loadl v1 #15022 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -chalkb_writea - loadl v1 #17320 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -tmarketee_react_good_vox - loadl v1 #16508 - loadl v2 #16509 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -chalkb_writeb - loadl v1 #17321 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_coin_flippee_lose - loadl v1 #16665 - loadl v2 #16666 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -ui_call_send - loadl v1 #17537 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -chalkb_writec - loadl v1 #17322 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -lot_enter - loadl v1 #15025 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_chin_ticklee_back - loadl v1 #15129 - loadl v2 #15130 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -chalkb_writed - loadl v1 #17323 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_dance_tangoer - loadl v1 #16739 - loadl v2 #16740 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -chalkb_writee - loadl v1 #17324 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -blackjack_hitme - loadl v1 #17289 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -chalkb_writef - loadl v1 #17325 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_arrogc_loopb - loadl v1 #16573 - loadl v2 #16574 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -chalkb_writeg - loadl v1 #17326 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_dance_belly - loadl v1 #16701 - loadl v2 #16702 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_arrogc_loopc - loadl v1 #16575 - loadl v2 #16576 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -chalkb_writeh - loadl v1 #17327 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -scoreboard_repair - loadl v1 #15069 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -gem_pickaxe_get - loadl v1 #15001 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -chalkb_scratch_vox - loadl v1 #16407 - loadl v2 #16408 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -cardtable_dealer_pickup - loadl v1 #17307 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_dance_discoer - loadl v1 #16707 - loadl v2 #16708 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -gem_pickaxe_lpb_sfx - loadl v1 #15003 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -foodtray_loop_voxnffod - loadl v1 #15308 - loadl v2 #15308 - loadl v3 #15308 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_evil_laugh - loadl v1 #16807 - loadl v2 #16808 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -game_vote_scribblea - loadl v1 #17383 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -game_vote_scribbleb - loadl v1 #17384 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -bunkbed_bottom_getin - loadl v1 #17290 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_puppeter_get_petted - loadl v1 #15303 - loadl v2 #15304 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -mic_tap - loadl v1 #17443 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -jar_seal - loadl v1 #17407 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -blackjack_cards_pickup - loadl v1 #17284 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -Vox_cheeruper_start - loadl v1 #16659 - loadl v2 #16660 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -pinata_swing_missa - loadl v1 #17459 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_inlovea_loopa - loadl v1 #16970 - loadl v2 #16971 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -map_nav_loopa - loadl v1 #15271 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -pinata_swing_missb - loadl v1 #17460 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_inlovea_loopb - loadl v1 #16972 - loadl v2 #16973 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_backcracker_accept - loadl v1 #16589 - loadl v2 #16590 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -roulette_bet_place_sfx - loadl v1 #15259 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -map_nav_loopb - loadl v1 #15272 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -pinata_swing_missc - loadl v1 #17461 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_inlovea_loopc - loadl v1 #16974 - loadl v2 #16975 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -map_nav_loopc - loadl v1 #15273 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_friend_makee - loadl v1 #16878 - loadl v2 #16879 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Vox_giftgiver - loadl v1 #16900 - loadl v2 #16901 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -map_reader_defeated_vox - loadl v1 #0 - loadl v2 #16465 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -eyepoke - loadl v1 #17368 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_dance_jitteree - loadl v1 #16723 - loadl v2 #16724 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -tmarket_paper_get - loadl v1 #17528 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -Vox_tantrum - loadl v1 #17214 - loadl v2 #17215 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_chin_tickler_bat - loadl v1 #15135 - loadl v2 #15136 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -repair_mirror_lp - loadl v1 #17501 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -repair_mbull_lp - loadl v1 #17499 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_ticklee_extreme - loadl v1 #17224 - loadl v2 #17225 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_roomatee_invite - loadl v1 #17112 - loadl v2 #17113 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_grovelee_deny_tso - loadl v1 #16934 - loadl v2 #16935 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_sadc_loopa - loadl v1 #17132 - loadl v2 #17133 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_friend_maker - loadl v1 #16880 - loadl v2 #16881 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_sadc_loopb - loadl v1 #17134 - loadl v2 #17135 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -repair_can_lp - loadl v1 #17485 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -Vox_sadc_loopc - loadl v1 #17136 - loadl v2 #17137 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_trader_accept_loop - loadl v1 #17244 - loadl v2 #17245 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_kneel_armpump - loadl v1 #17018 - loadl v2 #17019 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_dance_groove - loadl v1 #16713 - loadl v2 #16714 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -jobbody_fail_vox - loadl v1 #16427 - loadl v2 #16428 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -repair_piano_lp - loadl v1 #17502 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -tipjar_putt_vox - loadl v1 #16504 - loadl v2 #16505 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_dance_jitterer - loadl v1 #16725 - loadl v2 #16726 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -tipjar_getf_vox - loadl v1 #16498 - loadl v2 #16499 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_repair_mbull_stop - loadl v1 #15207 - loadl v2 #15208 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -map_nav_loopc_vox - loadl v1 #16459 - loadl v2 #16460 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -jobobject_loop - loadl v1 #17428 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -Vox_hugger_refuse_tso - loadl v1 #16968 - loadl v2 #16969 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -map_nav_celebrate_vox - loadl v1 #16451 - loadl v2 #16452 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Backdrop_start - loadl v1 #17275 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_repair_dcage_start - loadl v1 #15187 - loadl v2 #15188 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -tutorial_lpb_sfx - loadl v1 #15015 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_eyepokee - loadl v1 #16813 - loadl v2 #16814 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_airkisser_accept - loadl v1 #16537 - loadl v2 #16538 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_repair_typew_start - loadl v1 #15215 - loadl v2 #15216 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_entrance - loadl v1 #16805 - loadl v2 #16806 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Pinata_swinghb_vox - loadl v1 #16480 - loadl v2 #16481 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_joke_tell - loadl v1 #17000 - loadl v2 #17001 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Vox_compliment_stand - loadl v1 #16681 - loadl v2 #16682 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_flex_musclea - loadl v1 #16842 - loadl v2 #16843 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -npc_bj_cards_dhit_vox - loadl v1 #15253 - loadl v2 #15253 - loadl v3 #15253 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_flex_muscleb - loadl v1 #15247 - loadl v2 #15248 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_flex_musclec - loadl v1 #15141 - loadl v2 #15142 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -tapdance_feet - loadl v1 #17523 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_juggler_stop - loadl v1 #17002 - loadl v2 #17003 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vpoker_lpb_vox - loadl v1 #15239 - loadl v2 #15240 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -cardtable_dealer_start - loadl v1 #17311 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -pizza_appear_open - loadl v1 #17463 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_kneel_pout - loadl v1 #17036 - loadl v2 #17037 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_bored_check_watch - loadl v1 #16625 - loadl v2 #16626 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_stand_laugha - loadl v1 #17204 - loadl v2 #17205 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_stand_laughb - loadl v1 #17206 - loadl v2 #17207 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_afraidc_loopa - loadl v1 #0 - loadl v2 #16530 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_afraidc_loopb - loadl v1 #16531 - loadl v2 #16532 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -ui_letter_rec - loadl v1 #17539 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -blackjack_hitme_vox - loadl v1 #16393 - loadl v2 #16394 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_afraidc_loopc - loadl v1 #16533 - loadl v2 #16534 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -gem_break - loadl v1 #15000 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -spades_pickup_hand_sfx - loadl v1 #15012 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -Vox_huggee_refuse_tso - loadl v1 #16964 - loadl v2 #16965 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -ui_call_q_full - loadl v1 #17534 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -crackback_crack - loadl v1 #17337 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -roulette_watcha_vox - loadl v1 #15091 - loadl v2 #15092 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -repair_bkcase_lp - loadl v1 #17480 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -Death_possess_in - loadl v1 #17356 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_giddy - loadl v1 #16888 - loadl v2 #16889 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -repair_exmach_lp - loadl v1 #17495 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -joblogic_getpaper - loadl v1 #17413 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -joblogic_typeswitch - loadl v1 #17420 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -hatrack_hat_take - loadl v1 #17400 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -gem_start_vox - loadl v1 #15083 - loadl v2 #15084 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -repair_comp_lp - loadl v1 #17490 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -Vox_sing_serenade_short - loadl v1 #17170 - loadl v2 #17171 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -npc_bj_chip_give_vox - loadl v1 #15255 - loadl v2 #15255 - loadl v3 #15255 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_ticklee_wetself - loadl v1 #17226 - loadl v2 #17227 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -giddy_footsteps - loadl v1 #17396 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -coin_catch - loadl v1 #15278 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_death_marblee_rej - loadl v1 #16761 - loadl v2 #16762 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_repair_piano_start - loadl v1 #15211 - loadl v2 #15212 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -roulette_pay_sfx - loadl v1 #15260 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -tipjar_money_putf - loadl v1 #17526 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -Pinata_swingma_vox - loadl v1 #16484 - loadl v2 #16485 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -jobmech_pipe_break - loadl v1 #17424 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_repair_guitar_start - loadl v1 #15201 - loadl v2 #15202 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_dancee_reject - loadl v1 #16743 - loadl v2 #16744 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Death_mhead_remove - loadl v1 #17355 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_headspin - loadl v1 #16952 - loadl v2 #16953 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -chalkb_erasea_vox - loadl v1 #16397 - loadl v2 #16398 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Vox_kissee_sweet - loadl v1 #17008 - loadl v2 #17009 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_dance_sultry_acceptee - loadl v1 #16731 - loadl v2 #16732 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_coin_flipper_start - loadl v1 #16671 - loadl v2 #16672 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -tipjar_money_putt - loadl v1 #17527 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_roomatee_kickout - loadl v1 #17114 - loadl v2 #17115 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -gem_repair_start_vox - loadl v1 #15079 - loadl v2 #15080 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -spades_cards_stop_sfx - loadl v1 #15008 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_angryb_loopa - loadl v1 #16545 - loadl v2 #16546 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -repair_easel_lp - loadl v1 #17493 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_angryb_loopb - loadl v1 #16547 - loadl v2 #16548 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_hotdog_choose - loadl v1 #15312 - loadl v2 #15313 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_angryb_loopc - loadl v1 #16549 - loadl v2 #16550 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -heart_pullout - loadl v1 #17401 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -slotb_wheels_spin - loadl v1 #17514 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -Vox_hugger_good_tso - loadl v1 #16966 - loadl v2 #16967 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_peck_rejectee - loadl v1 #17076 - loadl v2 #17077 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -spades_score_lp_vox - loadl v1 #15109 - loadl v2 #15110 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -repair_chess_lp - loadl v1 #17489 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -cannonball_load - loadl v1 #17301 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -Vox_compliment_appreciate - loadl v1 #16675 - loadl v2 #16676 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Vox_kisser_passion_tso - loadl v1 #17010 - loadl v2 #17011 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_backcrackee_reject - loadl v1 #16587 - loadl v2 #16588 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_cheeruper_pup_neg - loadl v1 #15289 - loadl v2 #15290 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_shakefist - loadl v1 #17152 - loadl v2 #17153 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -blackjack_cards_check_vox - loadl v1 #16391 - loadl v2 #16392 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_peck_rejecter - loadl v1 #17078 - loadl v2 #17079 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_tickler_ext_reject - loadl v1 #17228 - loadl v2 #17229 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Vox_backrubbee_stop - loadl v1 #16597 - loadl v2 #16598 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_model - loadl v1 #17062 - loadl v2 #17063 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -tmarketee_sell_vox - loadl v1 #16510 - loadl v2 #16511 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vpoker_lpa_sfx - loadl v1 #15018 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_greet_wave_tso - loadl v1 #16912 - loadl v2 #16913 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_coin_flipper_lose - loadl v1 #16669 - loadl v2 #16670 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_chin_tickler_back - loadl v1 #15133 - loadl v2 #15134 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -pizza_repaira_vox - loadl v1 #16494 - loadl v2 #16495 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Pinata_celebrate_vox - loadl v1 #16472 - loadl v2 #16473 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_sit_sigh - loadl v1 #17190 - loadl v2 #17191 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_fivee_reject - loadl v1 #16835 - loadl v2 #16836 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_game_host_read - loadl v1 #15054 - loadl v2 #15055 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -hat_head_on - loadl v1 #17398 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -Vox_backrubbee_refused - loadl v1 #16595 - loadl v2 #16596 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -logo_intel_filtered - loadl v1 #15284 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -joblogic_handlepull - loadl v1 #17414 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -Vox_kissee_reject - loadl v1 #17006 - loadl v2 #17007 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_repair_easel_stop - loadl v1 #15191 - loadl v2 #15192 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -hat_head_off - loadl v1 #17397 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -Death_fhead_dribble - loadl v1 #17349 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_kneel_booa - loadl v1 #17020 - loadl v2 #17021 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_kneel_boob - loadl v1 #17022 - loadl v2 #17023 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_kneel_booc - loadl v1 #17024 - loadl v2 #17025 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_muscle_kiss - loadl v1 #15245 - loadl v2 #15246 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_gmoneyer_accept - loadl v1 #16908 - loadl v2 #16909 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_kneel_wipebrow - loadl v1 #17040 - loadl v2 #17041 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_tradee_accept_loop - loadl v1 #17234 - loadl v2 #17235 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Vox_smokears - loadl v1 #17200 - loadl v2 #17201 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_primp_male - loadl v1 #17092 - loadl v2 #17093 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_death_spookee - loadl v1 #16773 - loadl v2 #16774 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_joke_respond_pos - loadl v1 #16998 - loadl v2 #16999 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_talk_subtle - loadl v1 #15231 - loadl v2 #15232 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Ctrunk_wlockerq_close - loadl v1 #17344 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_repair_mbull_lp - loadl v1 #15203 - loadl v2 #15204 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -backdrop_pull - loadl v1 #17274 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_ticklee_ext_reject - loadl v1 #17222 - loadl v2 #17223 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_repair_gnome_stop - loadl v1 #15199 - loadl v2 #15200 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_repair_typew_stop - loadl v1 #15217 - loadl v2 #15218 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -click_heels - loadl v1 #17328 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_giggle - loadl v1 #16902 - loadl v2 #16903 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -repair_break_metal - loadl v1 #17483 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_sit_wipebrow - loadl v1 #17192 - loadl v2 #17193 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_death_spooker - loadl v1 #15042 - loadl v2 #15043 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_kickfloor - loadl v1 #17004 - loadl v2 #17005 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -foot_stomp - loadl v1 #15264 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -Death_eyeball_remove - loadl v1 #17348 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -pizza_prep_mush - loadl v1 #17476 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -npc_bj_win_declare_vox - loadl v1 #15254 - loadl v2 #15254 - loadl v3 #15254 - call #generic_fm_smartlists - end -] - -BINARY -[ -gem_stop_vox - loadl v1 #15085 - loadl v2 #15086 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Vox_flirt_kneel - loadl v1 #16848 - loadl v2 #16849 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -bunkbed_top_getout - loadl v1 #17294 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -logo_intel - loadl v1 #15283 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_lookatme - loadl v1 #17052 - loadl v2 #17053 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -jobbody_paperget_vox - loadl v1 #16431 - loadl v2 #16432 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -jobmech_pondera_vox - loadl v1 #16443 - loadl v2 #16444 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -jar_put_crate - loadl v1 #17406 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_sit_woohoo - loadl v1 #17194 - loadl v2 #17195 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_dipkissee - loadl v1 #16797 - loadl v2 #16798 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -gametimer_buzzer - loadl v1 #17393 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vpoker_repair_stop - loadl v1 #15274 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_sit_bored_stretch - loadl v1 #15058 - loadl v2 #15059 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -flower_stomp - loadl v1 #17371 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -jobmech_trans_bang - loadl v1 #17425 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -sissy_slap_shoulders - loadl v1 #15270 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -Bunkbed_step_wood - loadl v1 #17292 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -spades_deal_idleb_vox - loadl v1 #15101 - loadl v2 #15102 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_repair_easel_start - loadl v1 #15189 - loadl v2 #15190 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_boredb_loopa - loadl v1 #16631 - loadl v2 #16632 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_boredb_loopb - loadl v1 #16633 - loadl v2 #16634 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_boredb_loopc - loadl v1 #16635 - loadl v2 #16636 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_dipkisser - loadl v1 #16799 - loadl v2 #16800 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_death_marbler_rej - loadl v1 #15034 - loadl v2 #15035 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -blackjack_chip_give - loadl v1 #17286 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_bunkbed_bottom_getup - loadl v1 #15121 - loadl v2 #15122 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -jobbody_getin_vox - loadl v1 #16429 - loadl v2 #16430 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Vox_scream_startled - loadl v1 #17146 - loadl v2 #17147 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -chalkb_writeg_vox - loadl v1 #16423 - loadl v2 #16424 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_groveler_accept_tso - loadl v1 #16936 - loadl v2 #16937 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -door_vault_lock - loadl v1 #17366 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -cardtable_dealer_brush - loadl v1 #17305 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -Death_eyeball_collide - loadl v1 #17346 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -Puzzle_twoper_close - loadl v1 #17478 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_groovya_loopa - loadl v1 #16914 - loadl v2 #16915 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_groovya_loopb - loadl v1 #16916 - loadl v2 #16917 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_groovya_loopc - loadl v1 #16918 - loadl v2 #16919 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_nails_file - loadl v1 #17068 - loadl v2 #17069 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -fridge_med_loop - loadl v1 #15249 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - loop -] - -BINARY -[ -vox_dance_popstar - loadl v1 #15137 - loadl v2 #15138 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Vox_blowkiss - loadl v1 #16621 - loadl v2 #16622 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_benchpresseea - loadl v1 #16605 - loadl v2 #16606 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -gem_pickaxe_lpa_vox - loadl v1 #15071 - loadl v2 #15072 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_benchpresseeb - loadl v1 #16607 - loadl v2 #16608 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -sissy_slap_head - loadl v1 #17511 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_grovelee_accept_tso - loadl v1 #16932 - loadl v2 #16933 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -tutorial_start - loadl v1 #15017 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -Vox_berate_stand - loadl v1 #16619 - loadl v2 #16620 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Vox_gift_appreciatee - loadl v1 #16890 - loadl v2 #16891 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -foodtray_start_voxnffod - loadl v1 #15307 - loadl v2 #15307 - loadl v3 #15307 - call #generic_fm_smartlists - end -] - -BINARY -[ -scoreboard_button - loadl v1 #17507 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -map_reader_loopb_vox - loadl v1 #16468 - loadl v2 #16469 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -pizza_oven_repaira - loadl v1 #17471 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -spades_deal_start_vox - loadl v1 #15105 - loadl v2 #15106 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -pizza_oven_repairb - loadl v1 #17472 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -pizza_oven_put - loadl v1 #17470 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -pizza_oven_repairc - loadl v1 #17473 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -balloons_pop - loadl v1 #15063 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -chalkb_writed_vox - loadl v1 #16417 - loadl v2 #16418 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Vox_gift_appreciater - loadl v1 #16892 - loadl v2 #16893 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_trader_acceptb_start - loadl v1 #17248 - loadl v2 #17249 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_death_guts - loadl v1 #15030 - loadl v2 #15031 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Death_spooka - loadl v1 #17358 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -ctrunk_wlockerq_open - loadl v1 #17345 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -joblogic_success_vox - loadl v1 #16439 - loadl v2 #16440 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Death_spookb - loadl v1 #17359 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_sit_boo - loadl v1 #17174 - loadl v2 #17175 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_happy_woohoo - loadl v1 #16950 - loadl v2 #16951 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Conveyer_on - loadl v1 #17336 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_death_mheadless - loadl v1 #15036 - loadl v2 #15037 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_dance_hustlee - loadl v1 #16717 - loadl v2 #16718 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -butt_kick - loadl v1 #17295 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_attackee_win - loadl v1 #16579 - loadl v2 #16580 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Ctrunk_mlocker_close - loadl v1 #17338 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -fruit_pot_stir - loadl v1 #15251 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -jobobject_paper_appear - loadl v1 #17429 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_dance_tapfunk - loadl v1 #15061 - loadl v2 #15062 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Vox_proposee_no - loadl v1 #17094 - loadl v2 #17095 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_repair_comp_stop - loadl v1 #15185 - loadl v2 #15186 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_sign_write_stop - loadl v1 #15219 - loadl v2 #15220 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_gmoneyee_reject - loadl v1 #16906 - loadl v2 #16907 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_talk_eng_sports - loadl v1 #15223 - loadl v2 #15224 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -piledrivea - loadl v1 #17452 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -piledriveb - loadl v1 #17453 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_dance_hustler - loadl v1 #16719 - loadl v2 #16720 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_repair_piano_stop - loadl v1 #15213 - loadl v2 #15214 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -gem_pickaxe_lpc_sfx - loadl v1 #15004 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -Vox_fight_sissyee_start - loadl v1 #16821 - loadl v2 #16822 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -cardtable_dealer_putdown - loadl v1 #17308 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -tutorial_lpa_vox - loadl v1 #15115 - loadl v2 #15116 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -fridge_cheap_loop - loadl v1 #15060 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - loop -] - -BINARY -[ -repair_dcage_lp - loadl v1 #17492 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -gametimer_repair_lp - loadl v1 #17394 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -Vox_backrubber_stop - loadl v1 #16601 - loadl v2 #16602 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -gem_repair_stop_vox - loadl v1 #15081 - loadl v2 #15082 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -ui_letter_q_full - loadl v1 #17538 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_arrogb_loopa - loadl v1 #16567 - loadl v2 #16568 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -jobbody_pull_lever - loadl v1 #17410 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_arrogb_loopb - loadl v1 #16569 - loadl v2 #16570 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_meltdown - loadl v1 #17056 - loadl v2 #17057 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_arrogb_loopc - loadl v1 #16571 - loadl v2 #16572 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_complimentor_tso - loadl v1 #16689 - loadl v2 #16690 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -chalkb_writea_vox - loadl v1 #16411 - loadl v2 #16412 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_shove_blockee - loadl v1 #17158 - loadl v2 #17159 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Vox_proposee_think - loadl v1 #17096 - loadl v2 #17097 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -spades_collect_cards_sfx - loadl v1 #15009 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -Vox_insult_stand - loadl v1 #16992 - loadl v2 #16993 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_inlovec_loopb - loadl v1 #16982 - loadl v2 #16983 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_inlovec_loopc - loadl v1 #16984 - loadl v2 #16985 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -fruit_pot_put - loadl v1 #17375 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -game_piece_get - loadl v1 #17380 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_slapfightee - loadl v1 #17196 - loadl v2 #17197 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -trashcompact_close - loadl v1 #15276 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_berate - loadl v1 #16613 - loadl v2 #16614 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_fiver_react_good - loadl v1 #16839 - loadl v2 #0 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_foot_stomp_misseea - loadl v1 #16866 - loadl v2 #16867 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_foot_stomp_misseeb - loadl v1 #16868 - loadl v2 #16869 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -phone_ring_pizza - loadl v1 #17449 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_repair_can_start - loadl v1 #15173 - loadl v2 #15174 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_shove_blocker - loadl v1 #17160 - loadl v2 #17161 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -hatrack_hat_put - loadl v1 #17399 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vpoker_repair_vox - loadl v1 #15243 - loadl v2 #15244 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -repair_guitar_lp - loadl v1 #17497 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_slapfighter - loadl v1 #17198 - loadl v2 #17199 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -fiver_clap - loadl v1 #17370 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_sit_laugha - loadl v1 #17180 - loadl v2 #17181 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_sit_laughb - loadl v1 #17182 - loadl v2 #17183 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -fruit_chop - loadl v1 #17374 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_sit_laughc - loadl v1 #17184 - loadl v2 #17185 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_death_fheadless - loadl v1 #15028 - loadl v2 #15029 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_sadb_loopa - loadl v1 #17126 - loadl v2 #17127 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_bunkbed_top_getup - loadl v1 #15125 - loadl v2 #15126 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -spades_deal_stop_vox - loadl v1 #15107 - loadl v2 #15108 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_sadb_loopb - loadl v1 #17128 - loadl v2 #17129 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_sadb_loopc - loadl v1 #17130 - loadl v2 #17131 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_pull_hair - loadl v1 #17106 - loadl v2 #17107 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -dice_repair - loadl v1 #15070 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -tutorial_lpc_sfx - loadl v1 #15016 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -Vox_gift_stompee - loadl v1 #16894 - loadl v2 #16895 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_death_possee - loadl v1 #16767 - loadl v2 #16768 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_dance_freakee - loadl v1 #16709 - loadl v2 #16710 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_worship - loadl v1 #17270 - loadl v2 #17271 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Vox_tease_kneel - loadl v1 #17216 - loadl v2 #17217 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Pinata_swinghc_vox - loadl v1 #16482 - loadl v2 #16483 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_compliment_sit - loadl v1 #16679 - loadl v2 #16680 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -cardtable_dealer_stop - loadl v1 #17312 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_game_gest - loadl v1 #15153 - loadl v2 #15154 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Vox_berate_sit - loadl v1 #16617 - loadl v2 #16618 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_fivee_react_good - loadl v1 #16833 - loadl v2 #16834 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Vox_gift_stomper - loadl v1 #16896 - loadl v2 #16897 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_dance_jazz - loadl v1 #16721 - loadl v2 #16722 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_death_posser - loadl v1 #15038 - loadl v2 #15039 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vpoker_lpc_vox - loadl v1 #15241 - loadl v2 #15242 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_dance_freaker - loadl v1 #16711 - loadl v2 #16712 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -spades_cards_play_sfx - loadl v1 #15007 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_eat_seated - loadl v1 #15139 - loadl v2 #15140 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Vox_cheerupee_start - loadl v1 #16655 - loadl v2 #16656 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_death_marblee_acc - loadl v1 #16759 - loadl v2 #16760 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -pizza_oven_buzzer - loadl v1 #17469 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_cheeruper_pup_start - loadl v1 #15285 - loadl v2 #15286 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -moneyee_rub_hands - loadl v1 #15279 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_sit_armpump - loadl v1 #17172 - loadl v2 #17173 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_insult - loadl v1 #16986 - loadl v2 #16987 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_gametimer_repair_start - loadl v1 #15163 - loadl v2 #15164 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -money_count - loadl v1 #17444 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -roulette_watchb_vox - loadl v1 #15093 - loadl v2 #15094 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -repair_break_glass - loadl v1 #17482 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -roulette_bet_change - loadl v1 #15258 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_scoreboard_repair - loadl v1 #17140 - loadl v2 #17141 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -gamecomp_ball_collide - loadl v1 #17385 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -map_nav_loopa_vox - loadl v1 #16455 - loadl v2 #16456 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Vox_flyhugger_pos_tso - loadl v1 #16862 - loadl v2 #16863 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_dancer_invite_tso - loadl v1 #16751 - loadl v2 #16752 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -joblogic_type - loadl v1 #17418 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_cheerupee_pup_neg - loadl v1 #15293 - loadl v2 #15294 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_afraidb_loopa - loadl v1 #16524 - loadl v2 #16525 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_afraidb_loopb - loadl v1 #16526 - loadl v2 #16527 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_repair_exmach_start - loadl v1 #15193 - loadl v2 #15194 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_afraidb_loopc - loadl v1 #16528 - loadl v2 #16529 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -gem_repair_lp - loadl v1 #15005 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -sting_death_fish - loadl v1 #15268 - call #userdata_sting_death_fish - end -] - -BINARY -[ -slotc_lose - loadl v1 #17516 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_foot_stompee - loadl v1 #16874 - loadl v2 #16875 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_puppetee_pet - loadl v1 #15305 - loadl v2 #15306 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_cry - loadl v1 #16691 - loadl v2 #16692 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -jar_get_pot - loadl v1 #17405 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -Vox_fight_sissyer_taunt - loadl v1 #16829 - loadl v2 #16830 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Death_guts_remove - loadl v1 #17353 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -Game_comp_buzzer - loadl v1 #17376 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_sexy_fgrowl - loadl v1 #17148 - loadl v2 #17149 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -tmarket_paper_put - loadl v1 #17529 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_dance_break - loadl v1 #16703 - loadl v2 #16704 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Vox_flirt_male - loadl v1 #16850 - loadl v2 #16851 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -chalkb_frustrate_vox - loadl v1 #16405 - loadl v2 #16406 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_attacker_win - loadl v1 #16583 - loadl v2 #16584 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_foot_stomper - loadl v1 #16876 - loadl v2 #16877 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Pinata_swingmb_vox - loadl v1 #16486 - loadl v2 #16487 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_fart - loadl v1 #16817 - loadl v2 #16818 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_repair_bkcase_lp - loadl v1 #15169 - loadl v2 #15170 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -heart_stomp - loadl v1 #17402 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -compact_open - loadl v1 #17333 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_eyepoke_blockee - loadl v1 #16809 - loadl v2 #16810 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_shovee_tso - loadl v1 #17162 - loadl v2 #17163 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_groveler_deny_tso - loadl v1 #16938 - loadl v2 #16939 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_dancee_stop - loadl v1 #16749 - loadl v2 #16750 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -lot_exit - loadl v1 #15026 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -repair_comp_start - loadl v1 #17491 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -jobmech_fail_vox - loadl v1 #16441 - loadl v2 #16442 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_shandshakee - loadl v1 #17154 - loadl v2 #17155 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_hat_admire - loadl v1 #15165 - loadl v2 #15166 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -chalkb_euraka_vox - loadl v1 #16401 - loadl v2 #16402 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_tradee_acceptb_start - loadl v1 #17236 - loadl v2 #17237 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_talk_angry - loadl v1 #15221 - loadl v2 #15222 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_eyepoke_blocker - loadl v1 #16811 - loadl v2 #16812 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_kneel_bored_stretch - loadl v1 #17028 - loadl v2 #17029 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_repair_can_lp - loadl v1 #15171 - loadl v2 #15172 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -sign_write_lp - loadl v1 #17509 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -map_nav_start_vox - loadl v1 #16461 - loadl v2 #16462 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_game_host_idleb - loadl v1 #15052 - loadl v2 #15053 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_shandshaker - loadl v1 #17156 - loadl v2 #17157 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_belch - loadl v1 #15269 - loadl v2 #15269 - loadl v3 #15269 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_kneel_cry - loadl v1 #17030 - loadl v2 #17031 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_game_buzzer_read_lp - loadl v1 #15149 - loadl v2 #15150 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Vox_catcall - loadl v1 #16651 - loadl v2 #16652 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_complimentee_tso - loadl v1 #16685 - loadl v2 #16686 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -game_vote_ballot - loadl v1 #17382 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -game_draw_write - loadl v1 #17379 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_trader_rejectb_start - loadl v1 #17254 - loadl v2 #17255 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_scream_pup - loadl v1 #17144 - loadl v2 #17145 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_salute_herioc - loadl v1 #17138 - loadl v2 #17139 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_dance_scat - loadl v1 #16729 - loadl v2 #16730 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -chalkb_finale_vox - loadl v1 #16403 - loadl v2 #16404 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_angrya_loopa - loadl v1 #16539 - loadl v2 #16540 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_angrya_loopb - loadl v1 #16541 - loadl v2 #16542 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_handkiss_rejectee - loadl v1 #16942 - loadl v2 #16943 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_angrya_loopc - loadl v1 #16543 - loadl v2 #16544 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_backflip - loadl v1 #16593 - loadl v2 #16594 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Vox_compliment_kneel - loadl v1 #16677 - loadl v2 #16678 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -sissy_slap_hands - loadl v1 #17510 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_attacker_tso - loadl v1 #16581 - loadl v2 #16582 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_piledriveea - loadl v1 #17080 - loadl v2 #17081 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_piledriveeb - loadl v1 #17082 - loadl v2 #17083 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -magic_repair - loadl v1 #15277 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vpoker_lpb_sfx - loadl v1 #15019 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -tipjar_gett_vox - loadl v1 #16500 - loadl v2 #16501 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -pizza_repairb_vox - loadl v1 #16496 - loadl v2 #16497 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_handkiss_rejecter - loadl v1 #16944 - loadl v2 #16945 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_kneel_woohoo - loadl v1 #17042 - loadl v2 #17043 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -jobbody_paper_slot - loadl v1 #17409 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -coin_catch_slap - loadl v1 #17330 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -repair_cboard_start - loadl v1 #17488 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -JobObject_Conveyor_Loop - loadl v1 #17426 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -pizza_door_close - loadl v1 #17465 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -cardtable_cardscrape - loadl v1 #17304 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -fridge_exp_loop - loadl v1 #15250 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - loop -] - -BINARY -[ -vox_roomater_invite - loadl v1 #17116 - loadl v2 #17117 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -spades_score_stop_vox - loadl v1 #15113 - loadl v2 #15114 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_sit_cry - loadl v1 #17178 - loadl v2 #17179 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_coin_flippee_start - loadl v1 #16667 - loadl v2 #16668 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -repair_break_elec - loadl v1 #17481 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_kneel_bored_sigh - loadl v1 #17026 - loadl v2 #17027 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -game_draw_draw - loadl v1 #17377 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_death_marbler_acc - loadl v1 #15032 - loadl v2 #15033 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -pizza_order_vox - loadl v1 #16490 - loadl v2 #16491 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Pinata_swingf_vox - loadl v1 #16476 - loadl v2 #16477 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Vox_flyhugger_neg_tso - loadl v1 #16860 - loadl v2 #16861 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_attackee_lose - loadl v1 #16577 - loadl v2 #16578 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_complimenter_reject_tso - loadl v1 #16687 - loadl v2 #16688 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_hebejebe_a - loadl v1 #16958 - loadl v2 #16959 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -slotb_win - loadl v1 #17515 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vpoker_repair_lp - loadl v1 #15021 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_nails_blowon - loadl v1 #17066 - loadl v2 #17067 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -joblogic_type_load - loadl v1 #17419 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -Dice_button_push - loadl v1 #17360 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -pizza_prep_vox - loadl v1 #16492 - loadl v2 #16493 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -jobmech_ponderb_vox - loadl v1 #16445 - loadl v2 #16446 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_backcrackee_accept - loadl v1 #16585 - loadl v2 #16586 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Jobbody_Light_Flash - loadl v1 #17408 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_rasp_tso - loadl v1 #17108 - loadl v2 #17109 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -jobbody_weary_vox - loadl v1 #16435 - loadl v2 #16436 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vpoker_start - loadl v1 #15023 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -map_read_rollup - loadl v1 #17440 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_refuse - loadl v1 #17110 - loadl v2 #17111 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Death_eyeball_putback - loadl v1 #17347 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -roulette_spin_start_vox - loadl v1 #15089 - loadl v2 #15089 - loadl v3 #15089 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_dice_repair - loadl v1 #16795 - loadl v2 #16796 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_coinflip_talk - loadl v1 #16673 - loadl v2 #16674 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -spades_deal_idlec_vox - loadl v1 #15103 - loadl v2 #15104 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Conveyer_off - loadl v1 #17335 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -spades_score_lp_sfx - loadl v1 #15013 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -ui_online_sim - loadl v1 #17544 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_talk_eng_vacation - loadl v1 #15225 - loadl v2 #15226 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -repair_can_stop - loadl v1 #17486 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -Death_possess_out - loadl v1 #17357 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -chalkb_writeh_vox - loadl v1 #16425 - loadl v2 #16426 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_death_squarea - loadl v1 #16777 - loadl v2 #16778 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_death_squareb - loadl v1 #16779 - loadl v2 #16780 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_food_return_seated - loadl v1 #15147 - loadl v2 #15148 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_death_squarec - loadl v1 #16781 - loadl v2 #16782 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -bunkbed_top_getin - loadl v1 #17293 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_death_squared - loadl v1 #16783 - loadl v2 #16784 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -tmarketer_react_bad_vox - loadl v1 #16512 - loadl v2 #16513 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Vox_complimentee_reject_tso - loadl v1 #16683 - loadl v2 #16684 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_death_squaree - loadl v1 #16785 - loadl v2 #16786 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_shover_tso - loadl v1 #17164 - loadl v2 #17165 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_death_revitalee - loadl v1 #15040 - loadl v2 #15041 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_death_squaref - loadl v1 #16787 - loadl v2 #16788 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_death_squareg - loadl v1 #16789 - loadl v2 #16790 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_tude - loadl v1 #17256 - loadl v2 #17257 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_death_squareh - loadl v1 #16791 - loadl v2 #16792 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_death_squarei - loadl v1 #16793 - loadl v2 #16794 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_boreda_loopa - loadl v1 #16627 - loadl v2 #16628 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -tmarketer_sell_vox - loadl v1 #16516 - loadl v2 #16517 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_boreda_loopb - loadl v1 #16629 - loadl v2 #16630 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -gamecomp_hit_med - loadl v1 #17387 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -ui_online_prop - loadl v1 #17543 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -Vox_fist_shake - loadl v1 #16831 - loadl v2 #16832 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_airkissee_accept - loadl v1 #16535 - loadl v2 #16536 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -repair_break_wood - loadl v1 #17484 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -map_nav_defeated_vox - loadl v1 #15064 - loadl v2 #15065 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -gametimer_repair_start - loadl v1 #17395 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_groovyc_loopa - loadl v1 #16926 - loadl v2 #16927 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_trader_reject_loop - loadl v1 #17250 - loadl v2 #17251 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_groovyc_loopb - loadl v1 #16928 - loadl v2 #16929 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_groovyc_loopc - loadl v1 #16930 - loadl v2 #16931 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_make_enemy - loadl v1 #17054 - loadl v2 #17055 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -slotc_wheels_spin - loadl v1 #17517 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -blackjack_chip_take - loadl v1 #17288 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -repair_medcab_lp - loadl v1 #17500 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -cardtable_dealer_deal - loadl v1 #17306 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_kneel_sigh - loadl v1 #17038 - loadl v2 #17039 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -ui_offline_sim - loadl v1 #17542 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -gem_pickaxe_lpb_vox - loadl v1 #15073 - loadl v2 #15074 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -tipjar_putf_vox - loadl v1 #16502 - loadl v2 #16503 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -cardtable_dealer_shuffle - loadl v1 #17309 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_dancer_reject - loadl v1 #16753 - loadl v2 #16754 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -map_reader_loopc_vox - loadl v1 #16470 - loadl v2 #16471 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_hotdog_receive - loadl v1 #15314 - loadl v2 #15315 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Death_fhead_remove - loadl v1 #17351 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -roulette_bet_place_vox - loadl v1 #15087 - loadl v2 #15088 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_whyme_cry - loadl v1 #17266 - loadl v2 #17267 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -joblogic_fail_vox - loadl v1 #16437 - loadl v2 #16438 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -stove_bubble - loadl v1 #15263 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - loop -] - -BINARY -[ -chalkb_writee_vox - loadl v1 #16419 - loadl v2 #16420 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -jobmech_pipe_bang - loadl v1 #17423 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -Vox_insult_sit - loadl v1 #16990 - loadl v2 #16991 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -chalkb_think_vox - loadl v1 #16409 - loadl v2 #16410 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -soccer_score - loadl v1 #17522 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -cardtable_dealer_unfold - loadl v1 #17313 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_ctrunk_app - loadl v1 #16693 - loadl v2 #16694 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -pizza_prep_pep - loadl v1 #17477 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_tradee_rejectb_start - loadl v1 #17242 - loadl v2 #17243 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_food_get_seated - loadl v1 #15143 - loadl v2 #15144 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -ctrunk_wlocker_open - loadl v1 #17343 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -piggyb_shakef - loadl v1 #17450 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_puppeter_converse - loadl v1 #15301 - loadl v2 #15302 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_latin_steps - loadl v1 #17044 - loadl v2 #17045 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -gem_stop_sfx - loadl v1 #15006 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -joblogic_fist_pound - loadl v1 #17412 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_kneel_laugha - loadl v1 #17032 - loadl v2 #17033 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_kneel_laughb - loadl v1 #17034 - loadl v2 #17035 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_primp_female - loadl v1 #17090 - loadl v2 #17091 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_backcracker_reject - loadl v1 #16591 - loadl v2 #16592 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Vox_flirt_sit - loadl v1 #16852 - loadl v2 #16853 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_trader_accepta_start - loadl v1 #17246 - loadl v2 #17247 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -cannonball_pack - loadl v1 #17302 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -blackjack_cards_hit - loadl v1 #17283 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -piggyb_shaket - loadl v1 #17451 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_repair_cboard_start - loadl v1 #15177 - loadl v2 #15178 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_talk_intense - loadl v1 #15227 - loadl v2 #15228 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_fiver_start - loadl v1 #16840 - loadl v2 #16841 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Door_stall_close - loadl v1 #15067 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_psychee - loadl v1 #15265 - loadl v2 #15266 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Vox_kisser_reject - loadl v1 #17012 - loadl v2 #17013 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_kissmyding - loadl v1 #17016 - loadl v2 #17017 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -joblogic_putpaper - loadl v1 #17416 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_sit_pout - loadl v1 #17186 - loadl v2 #17187 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_break_enemy - loadl v1 #16643 - loadl v2 #16644 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_puppeter_enta - loadl v1 #15297 - loadl v2 #15298 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_puppeter_entb - loadl v1 #15299 - loadl v2 #15300 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_chin_ticklee - loadl v1 #16661 - loadl v2 #16662 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -chalkb_writeb_vox - loadl v1 #16413 - loadl v2 #16414 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Death_fhead_putback - loadl v1 #17350 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_heels_click - loadl v1 #16960 - loadl v2 #16961 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -map_reader_celebrate_vox - loadl v1 #16463 - loadl v2 #16464 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_psycher - loadl v1 #15090 - loadl v2 #0 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_chin_tickler - loadl v1 #16663 - loadl v2 #16664 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Vox_flyhuggee_pos_tso - loadl v1 #16858 - loadl v2 #16859 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_repair_cboard_stop - loadl v1 #15179 - loadl v2 #15180 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_arroga_loopa - loadl v1 #16561 - loadl v2 #16562 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -joblogic_pullpaper - loadl v1 #17415 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_arroga_loopb - loadl v1 #16563 - loadl v2 #16564 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Conveyer_loop - loadl v1 #17334 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_arroga_loopc - loadl v1 #16565 - loadl v2 #16566 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_ctrunk_dis - loadl v1 #16695 - loadl v2 #16696 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_hearter_pullout - loadl v1 #16956 - loadl v2 #16957 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_inloveb_loopa - loadl v1 #16976 - loadl v2 #16977 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_inloveb_loopb - loadl v1 #16978 - loadl v2 #16979 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_inloveb_loopc - loadl v1 #16980 - loadl v2 #16981 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_talk_anim - loadl v1 #17210 - loadl v2 #17211 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -gem_pickaxe_lpa_sfx - loadl v1 #15002 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -Vox_berate_kneel - loadl v1 #16615 - loadl v2 #16616 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_cheeruper_pup_pos - loadl v1 #15287 - loadl v2 #15288 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_ctrunk_rummagea - loadl v1 #16697 - loadl v2 #16698 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -tmarket_phone_get - loadl v1 #17530 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_ctrunk_rummageb - loadl v1 #16699 - loadl v2 #16700 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -roommate_poke - loadl v1 #15257 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_peck_psychee - loadl v1 #17074 - loadl v2 #0 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Puzzle_twoper_open - loadl v1 #17479 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_game_cont_losea - loadl v1 #15044 - loadl v2 #15045 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_game_cont_loseb - loadl v1 #15046 - loadl v2 #15047 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -spades_deal_start_sfx - loadl v1 #15011 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -npc_bj_cards_hit_vox - loadl v1 #15252 - loadl v2 #15252 - loadl v3 #15252 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_meyepokee - loadl v1 #17058 - loadl v2 #17059 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -ui_offline_prop - loadl v1 #17541 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_stand_boo - loadl v1 #17202 - loadl v2 #17203 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_gmoneyee_accept - loadl v1 #16904 - loadl v2 #16905 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -roulette_pay_vox - loadl v1 #15027 - loadl v2 #15027 - loadl v3 #15027 - call #generic_fm_smartlists - end -] - -BINARY -[ -finger_snap - loadl v1 #17369 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_sada_loopa - loadl v1 #17120 - loadl v2 #17121 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_peck_psycher - loadl v1 #17075 - loadl v2 #0 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_sada_loopb - loadl v1 #17122 - loadl v2 #17123 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_game_vote_stop - loadl v1 #15161 - loadl v2 #15162 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_puppeter_start - loadl v1 #15295 - loadl v2 #15296 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_sada_loopc - loadl v1 #17124 - loadl v2 #17125 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_benchpressera - loadl v1 #16609 - loadl v2 #16610 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_benchpresserb - loadl v1 #16611 - loadl v2 #16612 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -Vox_flirt_female - loadl v1 #16846 - loadl v2 #16847 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_meyepoker - loadl v1 #17060 - loadl v2 #17061 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_game_vote_lp - loadl v1 #15157 - loadl v2 #15158 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -repair_typew_start - loadl v1 #17505 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -tmarketee_react_bad_vox - loadl v1 #16506 - loadl v2 #16507 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_dance_rap - loadl v1 #16727 - loadl v2 #16728 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -roulette_watchc_vox - loadl v1 #15095 - loadl v2 #15096 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -pinata_swing_final - loadl v1 #17455 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_repair_can_stop - loadl v1 #15175 - loadl v2 #15176 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_listen_blowoff - loadl v1 #17048 - loadl v2 #17049 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -jar_fill_fruit - loadl v1 #17404 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -vox_wiggle_sexy - loadl v1 #17268 - loadl v2 #17269 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -vox_listen_tso - loadl v1 #17050 - loadl v2 #17051 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -chalkb_hands_rub - loadl v1 #17318 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -map_nav_loopb_vox - loadl v1 #16457 - loadl v2 #16458 - loadl v3 #0 - call #generic_fm_smartlists - end -] - -BINARY -[ -repair_cboard_lp - loadl v1 #17487 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - -BINARY -[ -heart_throwdown - loadl v1 #17403 - smart_setlist v1 - smart_choose v1 - set patch v1 - set_loop - note_on v1 - wait_samp - end -] - - -BINARY -[ -; ENTP - 69 - 78 - 84 - 80 - - #20663 #Vox_huggee_good_tso - #20803 #vox_tradee_reject_loop - #20793 #Vox_tease_sit - #20768 #vox_silly_throwup - #24159 #gametimer_break - #24195 #jobobject_light_flash - #17809 #tutorial_lpa_sfx - #20039 #vox_bunkbed_top_make - #20679 #vox_insultee_tso - #20035 #vox_boo_sit - #20396 #jobmech_success_vox - #20655 #vox_handshakee - #20547 #vox_dance_swingee - #20488 #vox_booer - #24305 #ui_call_rec_next - #20415 #Pinata_swingha_vox - #20689 #Vox_kisser_sweet - #17839 #vox_game_repair - #20435 #vox_afraida_loopa - #24149 #game_piece_put - #20676 #Vox_insult_kneel - #20436 #vox_afraida_loopb - #24190 #jobmech_fuse_slap - #24140 #flower_throw_down - #20759 #vox_sexy_mgrowl - #20437 #vox_afraida_loopc - #20420 #Pinata_swingmc_vox - #20790 #vox_talk_askint - #20094 #vpoker_lpa_vox - #20656 #vox_handshaker - #20548 #vox_dance_swinger - #20093 #vox_teleport_swapskin - #24230 #pizza_appear_close - #24146 #game_draw_place - #20371 #chalkb_erasec_vox - #20365 #nails_file_a - #20366 #nails_file_b - #20398 #nails_file_c - #24185 #joblogic_switch - #24235 #pizza_dough_throw - #20500 #vox_breaker_friendship - #20799 #vox_tickler_extreme - #24120 #Death_guts_putback - #24271 #repair_piano_start - #20455 #vox_armkissee - #20617 #vox_foot_stomp_missera - #20588 #vox_eyepoker_tso - #20618 #vox_foot_stomp_misserb - #20507 #Vox_cheerupee_pos - #20610 #Vox_flyhuggee_neg_tso - #18376 #trashcompact_open - #24209 #map_read_unroll - #24205 #map_read_reada - #20388 #jobbody_success_vox - #24206 #map_read_readb - #20637 #vox_gmoneyer_reject - #24207 #map_read_readc - #20456 #vox_armkisser - #24078 #cardtable_dealer_spin - #20037 #vox_bunkbed_bottom_make - #24274 #repair_typew_stop - #20452 #vox_angryc_loopa - #24154 #gamecomp_hit_hard - #20453 #vox_angryc_loopb - #20454 #vox_angryc_loopc - #17805 #spades_deal_lp - #17815 #vpoker_lpc_sfx - #24236 #pizza_oven_break - #20733 #Vox_proposer_no - #20813 #vox_visitor_kickee - #20727 #vox_pout - #20810 #vox_trader_rejecta_start - #20499 #Vox_breakee_friendship - #17819 #elevator_open - #24287 #smokears - #20609 #Vox_flirt_stand - #20592 #Vox_fight_sissyer_pushee - #24132 #door_turnstile_open - #20369 #blackjack_stay_vox - #24122 #Death_mhead_putback - #24100 #compact_close - #24110 #ctrunk_wlocker_close - #24243 #pizza_prep_dough - #24201 #Latin_feet - #20053 #vox_game_vote_ballot - #20814 #vox_visitor_kicker - #20631 #Vox_giftgetter - #20066 #vox_repair_chess_start - #20059 #vox_hatrack_consider - #20582 #vox_eeeew - #20593 #Vox_fight_sissyer_pusher - #24264 #repair_gnome_lp - #24082 #chalkb_erasea - #24083 #chalkb_eraseb - #24084 #chalkb_erasec - #20581 #vox_drunk - #24085 #chalkb_erased - #20551 #vox_dance_td - #20013 #gem_pickaxe_tired_vox - #24160 #gametimer_button - #20478 #vox_bawl - #20101 #Door_stall_open - #24232 #pizza_appear_raise - #20553 #Vox_dancee_slow_reject - #20815 #vox_vogue - #20031 #spades_score_start_vox - #20924 #foodtray_give_voxnffod - #24109 #ctrunk_scifi_change - #20055 #vox_game_vote_start - #24099 #coin_toss - #24071 #cannonball_pickup - #24293 #tipjar_money_getf - #20800 #vox_tickler_wetself - #20067 #vox_repair_comp_start - #24286 #slotc_win - #20139 #fart_sfx - #20732 #Vox_proposee_yes - #24210 #mic_adjust - #20714 #vox_monologue - #24189 #jobmech_fuse_bang - #20395 #jobmech_ponderc_vox - #20352 #sting_death - #20925 #foodtray_order_voxnffod - #24300 #tmarket_phone_putf - #24294 #tipjar_money_gett - #20778 #vox_sit_shakefist - #24179 #jobbody_push_lever - #20680 #vox_insulter_tso - #20743 #vox_roomater_kickout - #24301 #tmarket_phone_puts - #24156 #gamecomp_hit_soft - #20652 #vox_gymnastic - #24053 #blackjack_cards_shuffle - #20788 #vox_sword_swallow - #24107 #Ctrunk_mlocker_open - #20156 #roulette_spin_stop - #24302 #typewriter_loop - #20820 #vox_yawn_stretch - #20614 #Vox_flyhugger_start_tso - #24262 #repair_easel_start - #24309 #ui_letter_send - #20495 #vox_boredc_loopa - #24158 #gamecomp_target_hit - #20496 #vox_boredc_loopb - #20497 #vox_boredc_loopc - #20041 #vox_chin_ticklee_bat - #20413 #Pinata_start_vox - #20926 #foodtray_greet_voxnffod - #20509 #Vox_cheeruper_pos - #20725 #vox_piledrivera - #20726 #vox_piledriverb - #20476 #Vox_backrubber_refused - #20012 #gem_pickaxe_lpc_vox - #24133 #door_vault_close - #24059 #bunkbed_bottom_getout - #24224 #pinata_swing_hita - #24087 #chalkb_write_final - #24225 #pinata_swing_hitb - #24226 #pinata_swing_hitc - #20025 #spades_deal_idlea_vox - #20051 #vox_game_draw_start - #20642 #vox_groovyb_loopa - #20643 #vox_groovyb_loopb - #20644 #vox_groovyb_loopc - #20501 #vox_brow_wipe - #24304 #ui_call_rec_first - #20382 #chalkb_writef_vox - #24222 #pinata_coins_grab - #24130 #dingbat_kiss - #24050 #blackjack_cards_deal - #20078 #vox_repair_mbull_start - #20659 #vox_heartee_pullout - #20048 #vox_food_give_seated - #20090 #vox_talk_normal - #20772 #vox_sit_bored_sigh - #20092 #vox_teleport_insideout - #20080 #vox_repair_mirror_stop - #24157 #gamecomp_target_full - #20594 #Vox_fight_sissyer_start - #24281 #slotb_lose - #20538 #vox_dance_hiphop - #20433 #tmarketer_react_good_vox - #20867 #vox_cheerupee_pup_pos - #20767 #vox_sigh_weak - #20705 #vox_laugh_happy - #20804 #vox_tradee_rejecta_start - #20734 #Vox_proposer_tso - #20554 #Vox_dancee_slow_stop - #24198 #jobobject_sequencea - #24199 #jobobject_sequenceb - #17835 #vox_game_cont_wina - #24200 #jobobject_sequencec - #17836 #vox_game_cont_winb - #20034 #tutorial_lpc_vox - #20623 #vox_game_cont_idlea - #20624 #vox_game_cont_idleb - #20625 #vox_game_cont_idlec - #20599 #vox_fiver_react_bad - #20405 #map_reader_loopa_vox - #20073 #vox_repair_exmach_stop - #20155 #roulette_spin - #24266 #repair_guitar_start - #20794 #Vox_tease_stand - #24272 #repair_typew_lp - #24234 #pizza_door_open - #20379 #chalkb_writec_vox - #20717 #vox_peck_acceptee - #24242 #pizza_prep_cheese - #20024 #spades_cards_play_vox - #20816 #Vox_whisper_secret - #24131 #door_turnstile_close - #20590 #Vox_fight_sissyee_cower - #24108 #Ctrunk_Scifi_Button - #20549 #vox_dance_tangoee - #24135 #door_vault_open - #20755 #vox_scream_primal - #20074 #vox_repair_gnome_start - #24055 #blackjack_chip_place - #20718 #vox_peck_accepter - #20533 #vox_dance_discoee - #17817 #vpoker_repair_start - #24088 #chalkb_writea - #20430 #tmarketee_react_good_vox - #24089 #chalkb_writeb - #20513 #vox_coin_flippee_lose - #24306 #ui_call_send - #24090 #chalkb_writec - #17820 #lot_enter - #20040 #vox_chin_ticklee_back - #24091 #chalkb_writed - #20550 #vox_dance_tangoer - #24092 #chalkb_writee - #24057 #blackjack_hitme - #24093 #chalkb_writef - #20463 #vox_arrogc_loopb - #24094 #chalkb_writeg - #20531 #vox_dance_belly - #20464 #vox_arrogc_loopc - #24095 #chalkb_writeh - #17855 #scoreboard_repair - #17796 #gem_pickaxe_get - #20375 #chalkb_scratch_vox - #24075 #cardtable_dealer_pickup - #20534 #vox_dance_discoer - #17798 #gem_pickaxe_lpb_sfx - #20923 #foodtray_loop_voxnffod - #20584 #vox_evil_laugh - #24151 #game_vote_scribblea - #24152 #game_vote_scribbleb - #24058 #bunkbed_bottom_getin - #20880 #vox_puppeter_get_petted - #24211 #mic_tap - #24175 #jar_seal - #24052 #blackjack_cards_pickup - #20510 #Vox_cheeruper_start - #24227 #pinata_swing_missa - #20667 #vox_inlovea_loopa - #20359 #map_nav_loopa - #24228 #pinata_swing_missb - #20668 #vox_inlovea_loopb - #20471 #vox_backcracker_accept - #20153 #roulette_bet_place_sfx - #20360 #map_nav_loopb - #24229 #pinata_swing_missc - #20669 #vox_inlovea_loopc - #20361 #map_nav_loopc - #20621 #vox_friend_makee - #20632 #Vox_giftgiver - #20404 #map_reader_defeated_vox - #24136 #eyepoke - #20542 #vox_dance_jitteree - #24297 #tmarket_paper_get - #20791 #Vox_tantrum - #20043 #vox_chin_tickler_bat - #24269 #repair_mirror_lp - #24267 #repair_mbull_lp - #20796 #vox_ticklee_extreme - #20740 #vox_roomatee_invite - #20649 #vox_grovelee_deny_tso - #20750 #vox_sadc_loopa - #20622 #vox_friend_maker - #20751 #vox_sadc_loopb - #24253 #repair_can_lp - #20752 #Vox_sadc_loopc - #20806 #vox_trader_accept_loop - #20691 #vox_kneel_armpump - #20537 #vox_dance_groove - #20385 #jobbody_fail_vox - #24270 #repair_piano_lp - #20428 #tipjar_putt_vox - #20543 #vox_dance_jitterer - #20425 #tipjar_getf_vox - #20079 #vox_repair_mbull_stop - #20401 #map_nav_loopc_vox - #24196 #jobobject_loop - #20666 #Vox_hugger_refuse_tso - #20397 #map_nav_celebrate_vox - #24043 #Backdrop_start - #20069 #vox_repair_dcage_start - #17810 #tutorial_lpb_sfx - #20587 #vox_eyepokee - #20445 #vox_airkisser_accept - #20083 #vox_repair_typew_start - #20583 #vox_entrance - #20416 #Pinata_swinghb_vox - #20682 #vox_joke_tell - #20521 #Vox_compliment_stand - #20603 #vox_flex_musclea - #20133 #npc_bj_cards_dhit_vox - #20099 #vox_flex_muscleb - #20046 #vox_flex_musclec - #24292 #tapdance_feet - #20683 #vox_juggler_stop - #20095 #vpoker_lpb_vox - #24079 #cardtable_dealer_start - #24231 #pizza_appear_open - #20700 #vox_kneel_pout - #20489 #vox_bored_check_watch - #20786 #vox_stand_laugha - #20787 #vox_stand_laughb - #20441 #vox_afraidc_loopa - #20442 #vox_afraidc_loopb - #24308 #ui_letter_rec - #20368 #blackjack_hitme_vox - #20443 #vox_afraidc_loopc - #17795 #gem_break - #17807 #spades_pickup_hand_sfx - #20664 #Vox_huggee_refuse_tso - #24303 #ui_call_q_full - #24105 #crackback_crack - #20021 #roulette_watcha_vox - #24248 #repair_bkcase_lp - #24124 #Death_possess_in - #20626 #vox_giddy - #24263 #repair_exmach_lp - #24181 #joblogic_getpaper - #24188 #joblogic_typeswitch - #24168 #hatrack_hat_take - #20016 #gem_start_vox - #24258 #repair_comp_lp - #20769 #Vox_sing_serenade_short - #20135 #npc_bj_chip_give_vox - #20797 #vox_ticklee_wetself - #24164 #giddy_footsteps - #20362 #coin_catch - #20561 #vox_death_marblee_rej - #20081 #vox_repair_piano_start - #20154 #roulette_pay_sfx - #24295 #tipjar_money_putf - #20418 #Pinata_swingma_vox - #24192 #jobmech_pipe_break - #20076 #vox_repair_guitar_start - #20552 #vox_dancee_reject - #24123 #Death_mhead_remove - #20658 #vox_headspin - #20370 #chalkb_erasea_vox - #20686 #Vox_kissee_sweet - #20546 #vox_dance_sultry_acceptee - #20516 #vox_coin_flipper_start - #24296 #tipjar_money_putt - #20741 #vox_roomatee_kickout - #20014 #gem_repair_start_vox - #17803 #spades_cards_stop_sfx - #20449 #vox_angryb_loopa - #24261 #repair_easel_lp - #20450 #vox_angryb_loopb - #20927 #vox_hotdog_choose - #20451 #vox_angryb_loopc - #24169 #heart_pullout - #24282 #slotb_wheels_spin - #20665 #Vox_hugger_good_tso - #20721 #vox_peck_rejectee - #20030 #spades_score_lp_vox - #24257 #repair_chess_lp - #24069 #cannonball_load - #20518 #Vox_compliment_appreciate - #20687 #Vox_kisser_passion_tso - #20470 #vox_backcrackee_reject - #20866 #vox_cheeruper_pup_neg - #20760 #vox_shakefist - #20367 #blackjack_cards_check_vox - #20722 #vox_peck_rejecter - #20798 #vox_tickler_ext_reject - #20475 #Vox_backrubbee_stop - #20713 #vox_model - #20431 #tmarketee_sell_vox - #17813 #vpoker_lpa_sfx - #20638 #vox_greet_wave_tso - #20515 #vox_coin_flipper_lose - #20042 #vox_chin_tickler_back - #20423 #pizza_repaira_vox - #20412 #Pinata_celebrate_vox - #20779 #vox_sit_sigh - #20598 #vox_fivee_reject - #17838 #vox_game_host_read - #24166 #hat_head_on - #20474 #Vox_backrubbee_refused - #20411 #logo_intel_filtered - #24182 #joblogic_handlepull - #20685 #Vox_kissee_reject - #20071 #vox_repair_easel_stop - #24165 #hat_head_off - #24117 #Death_fhead_dribble - #20692 #vox_kneel_booa - #20693 #vox_kneel_boob - #20694 #vox_kneel_booc - #20098 #vox_muscle_kiss - #20636 #vox_gmoneyer_accept - #20702 #vox_kneel_wipebrow - #20801 #vox_tradee_accept_loop - #20784 #Vox_smokears - #20729 #vox_primp_male - #20567 #vox_death_spookee - #20681 #vox_joke_respond_pos - #20091 #vox_talk_subtle - #24112 #Ctrunk_wlockerq_close - #20077 #vox_repair_mbull_lp - #24042 #backdrop_pull - #20795 #vox_ticklee_ext_reject - #20075 #vox_repair_gnome_stop - #20084 #vox_repair_typew_stop - #24096 #click_heels - #20633 #vox_giggle - #24251 #repair_break_metal - #20780 #vox_sit_wipebrow - #17832 #vox_death_spooker - #20684 #vox_kickfloor - #19455 #foot_stomp - #24116 #Death_eyeball_remove - #24244 #pizza_prep_mush - #20134 #npc_bj_win_declare_vox - #20017 #gem_stop_vox - #20606 #Vox_flirt_kneel - #24062 #bunkbed_top_getout - #20410 #logo_intel - #20708 #vox_lookatme - #20387 #jobbody_paperget_vox - #20393 #jobmech_pondera_vox - #24174 #jar_put_crate - #20781 #vox_sit_woohoo - #20579 #vox_dipkissee - #24161 #gametimer_buzzer - #20364 #vpoker_repair_stop - #17840 #vox_sit_bored_stretch - #24139 #flower_stomp - #24193 #jobmech_trans_bang - #20358 #sissy_slap_shoulders - #24060 #Bunkbed_step_wood - #20026 #spades_deal_idleb_vox - #20070 #vox_repair_easel_start - #20492 #vox_boredb_loopa - #20493 #vox_boredb_loopb - #20494 #vox_boredb_loopc - #20580 #vox_dipkisser - #17828 #vox_death_marbler_rej - #24054 #blackjack_chip_give - #20036 #vox_bunkbed_bottom_getup - #20386 #jobbody_getin_vox - #20757 #Vox_scream_startled - #20383 #chalkb_writeg_vox - #20650 #vox_groveler_accept_tso - #24134 #door_vault_lock - #24073 #cardtable_dealer_brush - #24114 #Death_eyeball_collide - #24246 #Puzzle_twoper_close - #20639 #vox_groovya_loopa - #20640 #vox_groovya_loopb - #20641 #vox_groovya_loopc - #20716 #vox_nails_file - #20350 #fridge_med_loop - #20044 #vox_dance_popstar - #20487 #Vox_blowkiss - #20479 #vox_benchpresseea - #19890 #gem_pickaxe_lpa_vox - #20480 #vox_benchpresseeb - #24279 #sissy_slap_head - #20648 #vox_grovelee_accept_tso - #17812 #tutorial_start - #20486 #Vox_berate_stand - #20627 #Vox_gift_appreciatee - #20922 #foodtray_start_voxnffod - #24275 #scoreboard_button - #20406 #map_reader_loopb_vox - #24239 #pizza_oven_repaira - #20028 #spades_deal_start_vox - #24240 #pizza_oven_repairb - #24238 #pizza_oven_put - #24241 #pizza_oven_repairc - #17823 #balloons_pop - #20380 #chalkb_writed_vox - #20628 #Vox_gift_appreciater - #20808 #vox_trader_acceptb_start - #17826 #vox_death_guts - #24126 #Death_spooka - #24113 #ctrunk_wlockerq_open - #20391 #joblogic_success_vox - #24127 #Death_spookb - #20771 #vox_sit_boo - #20657 #vox_happy_woohoo - #24104 #Conveyer_on - #17829 #vox_death_mheadless - #20539 #vox_dance_hustlee - #24063 #butt_kick - #20466 #vox_attackee_win - #24106 #Ctrunk_mlocker_close - #20105 #fruit_pot_stir - #24197 #jobobject_paper_appear - #17842 #vox_dance_tapfunk - #20730 #Vox_proposee_no - #20068 #vox_repair_comp_stop - #20085 #vox_sign_write_stop - #20635 #vox_gmoneyee_reject - #20087 #vox_talk_eng_sports - #24220 #piledrivea - #24221 #piledriveb - #20540 #vox_dance_hustler - #20082 #vox_repair_piano_stop - #17799 #gem_pickaxe_lpc_sfx - #20591 #Vox_fight_sissyee_start - #24076 #cardtable_dealer_putdown - #20033 #tutorial_lpa_vox - #20349 #fridge_cheap_loop - #24260 #repair_dcage_lp - #24162 #gametimer_repair_lp - #20477 #Vox_backrubber_stop - #20015 #gem_repair_stop_vox - #24307 #ui_letter_q_full - #20460 #vox_arrogb_loopa - #24178 #jobbody_pull_lever - #20461 #vox_arrogb_loopb - #20710 #vox_meltdown - #20462 #vox_arrogb_loopc - #20525 #vox_complimentor_tso - #20377 #chalkb_writea_vox - #20763 #vox_shove_blockee - #20731 #Vox_proposee_think - #17804 #spades_collect_cards_sfx - #20678 #Vox_insult_stand - #20673 #vox_inlovec_loopb - #20674 #vox_inlovec_loopc - #24143 #fruit_pot_put - #24148 #game_piece_get - #20782 #vox_slapfightee - #18377 #trashcompact_close - #20483 #vox_berate - #20600 #vox_fiver_react_good - #20615 #vox_foot_stomp_misseea - #20616 #vox_foot_stomp_misseeb - #24217 #phone_ring_pizza - #20062 #vox_repair_can_start - #20764 #vox_shove_blocker - #24167 #hatrack_hat_put - #20097 #vpoker_repair_vox - #24265 #repair_guitar_lp - #20783 #vox_slapfighter - #24138 #fiver_clap - #20774 #vox_sit_laugha - #20775 #vox_sit_laughb - #24142 #fruit_chop - #20776 #vox_sit_laughc - #17825 #vox_death_fheadless - #20747 #vox_sadb_loopa - #20038 #vox_bunkbed_top_getup - #20029 #spades_deal_stop_vox - #20748 #vox_sadb_loopb - #20749 #vox_sadb_loopc - #20737 #vox_pull_hair - #17856 #dice_repair - #17811 #tutorial_lpc_sfx - #20629 #Vox_gift_stompee - #20564 #vox_death_possee - #20535 #vox_dance_freakee - #20819 #vox_worship - #20792 #Vox_tease_kneel - #20417 #Pinata_swinghc_vox - #20520 #vox_compliment_sit - #24080 #cardtable_dealer_stop - #20052 #vox_game_gest - #20485 #Vox_berate_sit - #20597 #vox_fivee_react_good - #20630 #Vox_gift_stomper - #20541 #vox_dance_jazz - #17830 #vox_death_posser - #20096 #vpoker_lpc_vox - #20536 #vox_dance_freaker - #17802 #spades_cards_play_sfx - #20045 #vox_eat_seated - #20508 #Vox_cheerupee_start - #20560 #vox_death_marblee_acc - #24237 #pizza_oven_buzzer - #20864 #vox_cheeruper_pup_start - #20363 #moneyee_rub_hands - #20770 #vox_sit_armpump - #20675 #vox_insult - #20057 #vox_gametimer_repair_start - #24212 #money_count - #20022 #roulette_watchb_vox - #24250 #repair_break_glass - #20152 #roulette_bet_change - #20754 #vox_scoreboard_repair - #24153 #gamecomp_ball_collide - #20399 #map_nav_loopa_vox - #20613 #Vox_flyhugger_pos_tso - #20556 #vox_dancer_invite_tso - #24186 #joblogic_type - #20875 #vox_cheerupee_pup_neg - #20438 #vox_afraidb_loopa - #20439 #vox_afraidb_loopb - #20072 #vox_repair_exmach_start - #20440 #vox_afraidb_loopc - #17800 #gem_repair_lp - #20353 #sting_death_fish - #24284 #slotc_lose - #20619 #vox_foot_stompee - #20881 #vox_puppetee_pet - #20526 #vox_cry - #24173 #jar_get_pot - #20595 #Vox_fight_sissyer_taunt - #24121 #Death_guts_remove - #24144 #Game_comp_buzzer - #20758 #vox_sexy_fgrowl - #24298 #tmarket_paper_put - #20532 #vox_dance_break - #20607 #Vox_flirt_male - #20374 #chalkb_frustrate_vox - #20468 #vox_attacker_win - #20620 #vox_foot_stomper - #20419 #Pinata_swingmb_vox - #20589 #vox_fart - #20060 #vox_repair_bkcase_lp - #24170 #heart_stomp - #24101 #compact_open - #20585 #vox_eyepoke_blockee - #20765 #vox_shovee_tso - #20651 #vox_groveler_deny_tso - #20555 #vox_dancee_stop - #17821 #lot_exit - #24259 #repair_comp_start - #20392 #jobmech_fail_vox - #20761 #vox_shandshakee - #20058 #vox_hat_admire - #20372 #chalkb_euraka_vox - #20802 #vox_tradee_acceptb_start - #20086 #vox_talk_angry - #20586 #vox_eyepoke_blocker - #20696 #vox_kneel_bored_stretch - #20061 #vox_repair_can_lp - #24277 #sign_write_lp - #20402 #map_nav_start_vox - #17837 #vox_game_host_idleb - #20762 #vox_shandshaker - #20356 #vox_belch - #20697 #vox_kneel_cry - #20050 #vox_game_buzzer_read_lp - #20506 #Vox_catcall - #20523 #vox_complimentee_tso - #24150 #game_vote_ballot - #24147 #game_draw_write - #20811 #vox_trader_rejectb_start - #20756 #vox_scream_pup - #20753 #vox_salute_herioc - #20545 #vox_dance_scat - #20373 #chalkb_finale_vox - #20446 #vox_angrya_loopa - #20447 #vox_angrya_loopb - #20653 #vox_handkiss_rejectee - #20448 #vox_angrya_loopc - #20473 #vox_backflip - #20519 #Vox_compliment_kneel - #24278 #sissy_slap_hands - #20467 #vox_attacker_tso - #20723 #vox_piledriveea - #20724 #vox_piledriveeb - #18379 #magic_repair - #17814 #vpoker_lpb_sfx - #20426 #tipjar_gett_vox - #20424 #pizza_repairb_vox - #20654 #vox_handkiss_rejecter - #20703 #vox_kneel_woohoo - #24177 #jobbody_paper_slot - #24098 #coin_catch_slap - #24256 #repair_cboard_start - #24194 #JobObject_Conveyor_Loop - #24233 #pizza_door_close - #24072 #cardtable_cardscrape - #20351 #fridge_exp_loop - #20742 #vox_roomater_invite - #20032 #spades_score_stop_vox - #20773 #vox_sit_cry - #20514 #vox_coin_flippee_start - #24249 #repair_break_elec - #20695 #vox_kneel_bored_sigh - #24145 #game_draw_draw - #17827 #vox_death_marbler_acc - #20421 #pizza_order_vox - #20414 #Pinata_swingf_vox - #20612 #Vox_flyhugger_neg_tso - #20465 #vox_attackee_lose - #20524 #vox_complimenter_reject_tso - #20661 #vox_hebejebe_a - #24283 #slotb_win - #17816 #vpoker_repair_lp - #20715 #vox_nails_blowon - #24187 #joblogic_type_load - #24128 #Dice_button_push - #20422 #pizza_prep_vox - #20394 #jobmech_ponderb_vox - #20469 #vox_backcrackee_accept - #24176 #Jobbody_Light_Flash - #20738 #vox_rasp_tso - #20389 #jobbody_weary_vox - #17818 #vpoker_start - #24208 #map_read_rollup - #20739 #vox_refuse - #24115 #Death_eyeball_putback - #20019 #roulette_spin_start_vox - #20578 #vox_dice_repair - #20517 #vox_coinflip_talk - #20027 #spades_deal_idlec_vox - #24103 #Conveyer_off - #17808 #spades_score_lp_sfx - #24313 #ui_online_sim - #20088 #vox_talk_eng_vacation - #24254 #repair_can_stop - #24125 #Death_possess_out - #20384 #chalkb_writeh_vox - #20569 #vox_death_squarea - #20570 #vox_death_squareb - #20049 #vox_food_return_seated - #20571 #vox_death_squarec - #24061 #bunkbed_top_getin - #20572 #vox_death_squared - #20432 #tmarketer_react_bad_vox - #20522 #Vox_complimentee_reject_tso - #20573 #vox_death_squaree - #20766 #vox_shover_tso - #17831 #vox_death_revitalee - #20574 #vox_death_squaref - #20575 #vox_death_squareg - #20812 #vox_tude - #20576 #vox_death_squareh - #20577 #vox_death_squarei - #20490 #vox_boreda_loopa - #20434 #tmarketer_sell_vox - #20491 #vox_boreda_loopb - #24155 #gamecomp_hit_med - #24312 #ui_online_prop - #20596 #Vox_fist_shake - #20444 #vox_airkissee_accept - #24252 #repair_break_wood - #17824 #map_nav_defeated_vox - #24163 #gametimer_repair_start - #20645 #vox_groovyc_loopa - #20809 #vox_trader_reject_loop - #20646 #vox_groovyc_loopb - #20647 #vox_groovyc_loopc - #20709 #vox_make_enemy - #24285 #slotc_wheels_spin - #24056 #blackjack_chip_take - #24268 #repair_medcab_lp - #24074 #cardtable_dealer_deal - #20701 #vox_kneel_sigh - #24311 #ui_offline_sim - #20011 #gem_pickaxe_lpb_vox - #20427 #tipjar_putf_vox - #24077 #cardtable_dealer_shuffle - #20557 #vox_dancer_reject - #20407 #map_reader_loopc_vox - #20928 #vox_hotdog_receive - #24119 #Death_fhead_remove - #20018 #roulette_bet_place_vox - #20817 #vox_whyme_cry - #20390 #joblogic_fail_vox - #20348 #stove_bubble - #20381 #chalkb_writee_vox - #24191 #jobmech_pipe_bang - #20677 #Vox_insult_sit - #20376 #chalkb_think_vox - #24290 #soccer_score - #24081 #cardtable_dealer_unfold - #20527 #vox_ctrunk_app - #24245 #pizza_prep_pep - #20805 #vox_tradee_rejectb_start - #20047 #vox_food_get_seated - #24111 #ctrunk_wlocker_open - #24218 #piggyb_shakef - #20879 #vox_puppeter_converse - #20704 #vox_latin_steps - #17801 #gem_stop_sfx - #24180 #joblogic_fist_pound - #20698 #vox_kneel_laugha - #20699 #vox_kneel_laughb - #20728 #vox_primp_female - #20472 #vox_backcracker_reject - #20608 #Vox_flirt_sit - #20807 #vox_trader_accepta_start - #24070 #cannonball_pack - #24051 #blackjack_cards_hit - #24219 #piggyb_shaket - #20064 #vox_repair_cboard_start - #20089 #vox_talk_intense - #20601 #vox_fiver_start - #20102 #Door_stall_close - #19456 #vox_psychee - #20688 #Vox_kisser_reject - #20690 #vox_kissmyding - #24184 #joblogic_putpaper - #20777 #vox_sit_pout - #20498 #vox_break_enemy - #20877 #vox_puppeter_enta - #20878 #vox_puppeter_entb - #20511 #vox_chin_ticklee - #20378 #chalkb_writeb_vox - #24118 #Death_fhead_putback - #20662 #vox_heels_click - #20403 #map_reader_celebrate_vox - #20020 #vox_psycher - #20512 #vox_chin_tickler - #20611 #Vox_flyhuggee_pos_tso - #20065 #vox_repair_cboard_stop - #20457 #vox_arroga_loopa - #24183 #joblogic_pullpaper - #20458 #vox_arroga_loopb - #24102 #Conveyer_loop - #20459 #vox_arroga_loopc - #20528 #vox_ctrunk_dis - #20660 #vox_hearter_pullout - #20670 #vox_inloveb_loopa - #20671 #vox_inloveb_loopb - #20672 #vox_inloveb_loopc - #20789 #vox_talk_anim - #17797 #gem_pickaxe_lpa_sfx - #20484 #Vox_berate_kneel - #20865 #vox_cheeruper_pup_pos - #20529 #vox_ctrunk_rummagea - #24299 #tmarket_phone_get - #20530 #vox_ctrunk_rummageb - #20151 #roommate_poke - #20719 #vox_peck_psychee - #24247 #Puzzle_twoper_open - #17833 #vox_game_cont_losea - #17834 #vox_game_cont_loseb - #17806 #spades_deal_start_sfx - #20132 #npc_bj_cards_hit_vox - #20711 #vox_meyepokee - #24310 #ui_offline_prop - #20785 #vox_stand_boo - #20634 #vox_gmoneyee_accept - #17822 #roulette_pay_vox - #24137 #finger_snap - #20744 #vox_sada_loopa - #20720 #vox_peck_psycher - #20745 #vox_sada_loopb - #20056 #vox_game_vote_stop - #20876 #vox_puppeter_start - #20746 #vox_sada_loopc - #20481 #vox_benchpressera - #20482 #vox_benchpresserb - #20605 #Vox_flirt_female - #20712 #vox_meyepoker - #20054 #vox_game_vote_lp - #24273 #repair_typew_start - #20429 #tmarketee_react_bad_vox - #20544 #vox_dance_rap - #20023 #roulette_watchc_vox - #24223 #pinata_swing_final - #20063 #vox_repair_can_stop - #20706 #vox_listen_blowoff - #24172 #jar_fill_fruit - #20818 #vox_wiggle_sexy - #20707 #vox_listen_tso - #24086 #chalkb_hands_rub - #20400 #map_nav_loopb_vox - #24255 #repair_cboard_lp - #24171 #heart_throwdown - - - ; EENT - 69 - 69 - 78 - 84 -] - -BINARY -[ -;note_on equ 2 -;v1 equ 5 -;wait_samp equ 11 -;end equ 12 -;loop equ 32 - -Generic - note_on v1 - wait_samp - end - -GenericLooped - note_on v1 - wait_samp - loop - end - -GenericInterrupt - loadb interrupt 1 - note_on v1 - wait_samp - end - -; Heeeeeere's a useful one. v1 and v2 are female and male hitlist ID's, respectively -; This track chooses the smartlist based on gender, picks a patch from that smartlist, -; plays it. It also kills anything else the instance (person) is saying. -; New! Now works for kids! v3 = kid smartlist - -generic_fm_smartlists - ; Kill this actor's vocals - seqgroup_kill Instance - - ; If it's male then redo it for male - loadb v7 0 ;v7 = field ID (0 = gender) - getsrcdatafield v7 arg1 v7 ;arg1 = source ID - ; if gender is 0 then use v1 is correct (male) - ifeq #_gotit - ; otherwise set v1 to female list - set v1 v2 - ; if gender == 1 then v1 is correct (female) - loadb v6 1 - cmp v7 v6 - ifeq #_gotit - ; it's a kid - set v1 to kid smartlist - set v1 v3 -_gotit - ; v1 = smartlist id - test v1 - ifeq #generic_fm_smartlists_end - smart_setlist v1 - smart_choose v1 - set patch v1 - note_on v1 - wait_samp -generic_fm_smartlists_end - end -] - diff --git a/Libraries/libvitaboy/AUTHORS b/Libraries/libvitaboy/AUTHORS deleted file mode 100644 index 256626b..0000000 --- a/Libraries/libvitaboy/AUTHORS +++ /dev/null @@ -1 +0,0 @@ -Fatbag \ No newline at end of file diff --git a/Server/AUTHORS b/Server/AUTHORS deleted file mode 100644 index 256626b..0000000 --- a/Server/AUTHORS +++ /dev/null @@ -1 +0,0 @@ -Fatbag \ No newline at end of file diff --git a/Server/CHANGES b/Server/CHANGES deleted file mode 100644 index aacc0cb..0000000 --- a/Server/CHANGES +++ /dev/null @@ -1,2 +0,0 @@ -Technical Preview 1 - * Initial release \ No newline at end of file diff --git a/Server/CMakeLists.txt b/Server/CMakeLists.txt deleted file mode 100644 index 46c3647..0000000 --- a/Server/CMakeLists.txt +++ /dev/null @@ -1,11 +0,0 @@ -cmake_minimum_required(VERSION 2.6) -project(NiotsoServer) - -if(WIN32) -else() - set(NIOTSOSERVER_SOURCES - Server.cpp - ) - add_executable(niotsod-vanilla ${NIOTSOSERVER_SOURCES}) - target_link_libraries(niotsod-vanilla) -endif() diff --git a/Server/COPYING b/Server/COPYING deleted file mode 100644 index acdc1dc..0000000 --- a/Server/COPYING +++ /dev/null @@ -1,642 +0,0 @@ -IMPORTANT: -Niotso is distributed under the terms of the GNU GPLv3. - -While this license does permit others to compile, distribute, change, -and distribute changes to Niotso, in reality, many of these freedoms -cannot legally be enacted by anybody. - -Specifically, if you make changes to Niotso such that it significantly -changes the "game experience as presented to the player", it cannot -be distributed to others. You also may not distribute a version of -Niotso that has stripped the EA or Maxis trademarked names or logos -anywhere from the game. Personal use of these modifications is okay. - -These restrictions are not enforced by us, but may potentially be used -by EA in attempt to take down your game. - -If you have any questions, you may visit - - ---- - - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS \ No newline at end of file diff --git a/Server/Server.cpp b/Server/Server.cpp deleted file mode 100644 index 82b38be..0000000 --- a/Server/Server.cpp +++ /dev/null @@ -1,177 +0,0 @@ -/* - Niotso Server - Niotso daemon based on PostgreSQL - Server.cpp - Copyright (c) 2012 Niotso Project - Author(s): Fatbag - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "Server.hpp" - -#define SHUTDOWN(X) do { syslog(LOG_INFO, " Could not recover from errors. Shutting down."); \ - exitval = EXIT_FAILURE; goto X; } while(0) -#define SHUTDOWN_M(X, Y) do { syslog(LOG_ERR, " %s (%s)", X, strerror(errno)); \ - SHUTDOWN(Y); } while(0) - -//IPV6_V6ONLY - -static void term(int) -{ -} - -int main(int, char **) -{ - const pid_t pid = fork(); - if(pid < 0){ - const char *msg1 = " Failed to create child process (%s).", *msg2 = strerror(errno); - openlog(SERVER_NAME, 0, LOG_DAEMON); - syslog(LOG_ERR, msg1, msg2); - closelog(); - fprintf(stderr, msg1, msg2); - fprintf(stderr, "\n"); - return EXIT_FAILURE; - }else if(pid > 0) - return EXIT_SUCCESS; - - int exitval = EXIT_SUCCESS, sockfd, epollfd; - { //New scope required for error handling - int ret; - FILE * fd; - - umask(0); - - openlog(SERVER_NAME, LOG_PID, LOG_DAEMON); - - if(setsid() < 0) - SHUTDOWN_M("Failed to create session", close_msg); - - if(chdir(CONFIG_DIR) < 0) - SHUTDOWN_M("Failed to change into \""CONFIG_DIR"\"", close_msg); - - close(STDIN_FILENO); - close(STDOUT_FILENO); - close(STDERR_FILENO); - - struct sigaction sigact; - sigact.sa_handler = term; - sigemptyset(&sigact.sa_mask); - sigact.sa_flags = 0; - sigaction(SIGTERM, &sigact, NULL); - sigaction(SIGINT, &sigact, NULL); - - syslog(LOG_INFO, " "SERVER_NAME" (version "VERSIONSTR") is starting..."); - - fd = fopen("network.conf", "r"); - if(!fd) - SHUTDOWN_M("Failed to open \""CONFIG_DIR"/network.conf\"", close_msg); - unsigned int port = 0; - ret = fscanf(fd, "%u", &port); - fclose(fd); - if(ret < 0) - SHUTDOWN_M("Failed to read \""CONFIG_DIR"/network.conf\"", close_msg); - if(port > 65535){ - syslog(LOG_ERR, " Invalid port '%u' specified in \""CONFIG_DIR"/network.conf\".", port); - SHUTDOWN(close_msg); - } - - sockfd = socket(AF_INET6, SOCK_DGRAM, 0); - if(sockfd < 0) - SHUTDOWN_M("Failed to open socket", close_msg); - - int flags = fcntl(sockfd, F_GETFL, 0); - if(flags < 0) - SHUTDOWN_M("Failed to read socket flags", close_socket); - if(fcntl(sockfd, F_SETFL, flags | O_NONBLOCK) < 0) - SHUTDOWN_M("Failed to set socket flags", close_socket); - - sockaddr_in6 server_addr, client_addr; - memset(&server_addr, 0, sizeof(sockaddr_in6)); - memset(&client_addr, 0, sizeof(sockaddr_in6)); - server_addr.sin6_family = AF_INET6; - server_addr.sin6_port = htons((uint16_t) port); - server_addr.sin6_addr = in6addr_any; - client_addr.sin6_family = AF_INET6; - client_addr.sin6_addr = in6addr_any; - - if(bind(sockfd, (const sockaddr*) &server_addr, sizeof(sockaddr_in6)) < 0) - SHUTDOWN_M("Failed to bind to socket", close_socket); - - epollfd = epoll_create(1); - if(epollfd < 0) - SHUTDOWN_M("Failed to create an epoll handle", close_socket); - - epoll_event epev[1]; - epev[0].events = EPOLLIN | EPOLLPRI; - epev[0].data.fd = sockfd; - if(epoll_ctl(epollfd, EPOLL_CTL_ADD, sockfd, epev) < 0) - SHUTDOWN_M("Failed to register the socket to the epoll handle", close_epoll); - - //Now that we're running, stop being terminate-on-failure-happy - syslog(LOG_INFO, " Running."); - - /**** - ** Listen loop - */ - - int eventcount; - while((eventcount = epoll_wait(epollfd, epev, 1, -1)) >= 0){ - if(eventcount == 0) - continue; - else if(epev[0].events & EPOLLERR) - SHUTDOWN_M("Socket closed unexpectedly with EPOLLERR", close_epoll); - else if(epev[0].events & EPOLLHUP) - SHUTDOWN_M("Socket closed unexpectedly with EPOLLHUP", close_epoll); - else if(!(epev[0].events & EPOLLIN) && !(epev[0].events & EPOLLPRI)) - continue; - - uint8_t packetdata[1500]; - socklen_t addrlen = sizeof(sockaddr_in6); - ssize_t packetsize = recvfrom(epev[0].data.fd, packetdata, 1500, 0, (sockaddr*) &client_addr, &addrlen); - if(packetsize < 0){ - if(errno == EINTR || errno == ECONNRESET || errno == ENOTCONN || errno == ETIMEDOUT || - errno == EAGAIN || errno == EWOULDBLOCK) - continue; - - SHUTDOWN_M("Socket closed unexpectedly on call to recvfrom", close_epoll); - } - - //Pass the packet down (even zero-length packets might be meaningful in the protocol) - //... - } - - /**** - ** Shutdown - */ - - } - close_epoll: close(epollfd); - close_socket: close(sockfd); - close_msg: syslog(LOG_INFO, " Shut down gracefully."); - closelog(); - - return exitval; -} diff --git a/Server/Server.hpp b/Server/Server.hpp deleted file mode 100644 index 77e83f9..0000000 --- a/Server/Server.hpp +++ /dev/null @@ -1,24 +0,0 @@ -/* - Niotso Server - Niotso daemon based on PostgreSQL - Server.hpp - Copyright (c) 2012 Niotso Project - Author(s): Fatbag - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#define SERVER_NAME "niotsod-vanilla" -#define CONFIG_DIR "/etc/"SERVER_NAME - -#define VERSIONSTR "0.0.0" diff --git a/Server/TODO b/Server/TODO deleted file mode 100644 index 7bb4f49..0000000 --- a/Server/TODO +++ /dev/null @@ -1,10 +0,0 @@ -Because there are too many long-term things to list that we still have "to do" to reach the next development phase (e.g. -alpha to beta), this file contains only the things that are worked on currently or that will be in the very near future. - -While anybody is free to work on _anything_ at any point during Niotso's time, this list shall ONLY contain those relevant -to complete the criteria for the next development phase, which can be found here: - - -//----------// - -Tasks will be added for the server when the development phase reaches Alpha. \ No newline at end of file diff --git a/Tools/CMakeLists.txt b/Tools/CMakeLists.txt index 5709862..06ce7b5 100644 --- a/Tools/CMakeLists.txt +++ b/Tools/CMakeLists.txt @@ -1,5 +1,7 @@ -add_subdirectory(FARDive) -add_subdirectory(hitutils) -add_subdirectory(iff2html) -add_subdirectory(rtti-reader) -add_subdirectory(tsoscan) \ No newline at end of file +add_subdirectory(far-extract) + +#add_subdirectory(FARDive) +#add_subdirectory(hitutils) +#add_subdirectory(iff2html) +#add_subdirectory(rtti-reader) +#add_subdirectory(tsoscan) \ No newline at end of file diff --git a/Tools/FARDive/CMakeLists.txt b/Tools/FARDive/CMakeLists.txt index b31d59e..252ae03 100644 --- a/Tools/FARDive/CMakeLists.txt +++ b/Tools/FARDive/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 2.6) +cmake_minimum_required(VERSION 2.6...3.29) project(FARDive) if(WIN32) diff --git a/Tools/Translate Tool/CMakeLists.txt b/Tools/Translate Tool/CMakeLists.txt deleted file mode 100644 index e69de29..0000000 diff --git a/Tools/Translate Tool/TranslateTool.hpp b/Tools/Translate Tool/TranslateTool.hpp deleted file mode 100644 index 7b604e6..0000000 --- a/Tools/Translate Tool/TranslateTool.hpp +++ /dev/null @@ -1,32 +0,0 @@ -/* - The Sims Online Translation Tool - Graphical Translation Writer for TSO - TranslateTool.hpp - Copyright (c) 2012 Niotso Project - Author(s): Fatbag - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ - -namespace Translation { - extern wchar_t Path[1024], Filename[1024]; - - extern bool IsOpen; - extern bool IsModified; - - bool Add(const wchar_t * Path); - bool Close(); - bool Open(); - bool PopulateEntries(); - bool Save(); - bool SaveAs(); - bool SetWorkspace(); -} \ No newline at end of file diff --git a/Tools/far-extract/CMakeLists.txt b/Tools/far-extract/CMakeLists.txt new file mode 100644 index 0000000..bf30983 --- /dev/null +++ b/Tools/far-extract/CMakeLists.txt @@ -0,0 +1,8 @@ +cmake_minimum_required(VERSION 2.6...3.29) +project(far-extract) + +include_directories(${format_SOURCE_DIR}) +add_executable(farextract farextract.c) +target_link_libraries(farextract far) + +set_target_properties(farextract PROPERTIES FOLDER tools) \ No newline at end of file diff --git a/Tools/far-extract/HOWTO_EXTRACT.txt b/Tools/far-extract/HOWTO_EXTRACT.txt new file mode 100644 index 0000000..98e3fee --- /dev/null +++ b/Tools/far-extract/HOWTO_EXTRACT.txt @@ -0,0 +1,9 @@ +.\farextract.exe -tso "./Avatardata/skeletons/skeletons.dat" "./out/skeletons" +.\farextract.exe -tso "./Avatardata/animations/animations.dat" "./out/animations" + +.\farextract.exe -tso "./Avatardata/bodies/meshes/meshes.dat" "./out/bodies/meshes" +.\farextract.exe -tso "./Avatardata/bodies/textures/textures.dat" "./out/bodies/textures" +.\farextract.exe -tso "./Avatardata/heads/meshes/meshes.dat" "./out/heads/meshes" +.\farextract.exe -tso "./Avatardata/heads/textures/textures.dat" "./out/heads/textures" +.\farextract.exe -tso "./Avatardata/hands/meshes/meshes.dat" "./out/hands/meshes" +.\farextract.exe -tso "./Avatardata/hands/textures/textures.dat" "./out/hands/textures" \ No newline at end of file diff --git a/Libraries/FileHandler/far/farextract.c b/Tools/far-extract/farextract.c similarity index 99% rename from Libraries/FileHandler/far/farextract.c rename to Tools/far-extract/farextract.c index 1824a3e..d12b9f8 100644 --- a/Libraries/FileHandler/far/farextract.c +++ b/Tools/far-extract/farextract.c @@ -20,11 +20,10 @@ #include #include #include -#include #include #include #include -#include "far.h" +#include "far/far.h" #ifndef read_uint32 #define read_uint32(x) (unsigned)(((x)[0]<<(8*0)) | ((x)[1]<<(8*1)) | ((x)[2]<<(8*2)) | ((x)[3]<<(8*3))) diff --git a/Libraries/FileHandler/far/libfar.svg b/Tools/far-extract/libfar.svg similarity index 100% rename from Libraries/FileHandler/far/libfar.svg rename to Tools/far-extract/libfar.svg diff --git a/Client/Bootstrap/Bootstrap.hpp b/Tools/far-extract/out/animations/.gitkeep similarity index 100% rename from Client/Bootstrap/Bootstrap.hpp rename to Tools/far-extract/out/animations/.gitkeep diff --git a/Client/README b/Tools/far-extract/out/bodies/meshes/.gitkeep similarity index 100% rename from Client/README rename to Tools/far-extract/out/bodies/meshes/.gitkeep diff --git a/Client/Window/SetCursor.cpp b/Tools/far-extract/out/bodies/textures/.gitkeep similarity index 100% rename from Client/Window/SetCursor.cpp rename to Tools/far-extract/out/bodies/textures/.gitkeep diff --git a/Libraries/FileHandler/TODO b/Tools/far-extract/out/hands/meshes/.gitkeep similarity index 100% rename from Libraries/FileHandler/TODO rename to Tools/far-extract/out/hands/meshes/.gitkeep diff --git a/Libraries/FileHandler/iff/tprp.c b/Tools/far-extract/out/hands/textures/.gitkeep similarity index 100% rename from Libraries/FileHandler/iff/tprp.c rename to Tools/far-extract/out/hands/textures/.gitkeep diff --git a/Libraries/FileHandler/iff/ttab.c b/Tools/far-extract/out/heads/meshes/.gitkeep similarity index 100% rename from Libraries/FileHandler/iff/ttab.c rename to Tools/far-extract/out/heads/meshes/.gitkeep diff --git a/Server/README b/Tools/far-extract/out/heads/textures/.gitkeep similarity index 100% rename from Server/README rename to Tools/far-extract/out/heads/textures/.gitkeep diff --git a/Tools/Server GUI/CMakeLists.txt b/Tools/far-extract/out/skeletons/.gitkeep similarity index 100% rename from Tools/Server GUI/CMakeLists.txt rename to Tools/far-extract/out/skeletons/.gitkeep diff --git a/Tools/hitutils/CMakeLists.txt b/Tools/hitutils/CMakeLists.txt index 97c1029..d247d6c 100644 --- a/Tools/hitutils/CMakeLists.txt +++ b/Tools/hitutils/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 2.6) +cmake_minimum_required(VERSION 2.6...3.29) project(hitutils) set(HITDUMP_SOURCES diff --git a/Tools/iff-export/CMakeLists.txt b/Tools/iff-export/CMakeLists.txt new file mode 100644 index 0000000..9d3d622 --- /dev/null +++ b/Tools/iff-export/CMakeLists.txt @@ -0,0 +1,5 @@ +cmake_minimum_required(VERSION 2.6...3.29) +project(iff-export) + +add_executable(iffexport iffexport.c) +target_link_libraries(iffexport iff) \ No newline at end of file diff --git a/Libraries/FileHandler/iff/iffexport.c b/Tools/iff-export/iffexport.c similarity index 100% rename from Libraries/FileHandler/iff/iffexport.c rename to Tools/iff-export/iffexport.c diff --git a/Tools/iff2html/CMakeLists.txt b/Tools/iff2html/CMakeLists.txt index 3772bfd..843a7da 100644 --- a/Tools/iff2html/CMakeLists.txt +++ b/Tools/iff2html/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 2.6) +cmake_minimum_required(VERSION 2.6...3.29) project(iff2html) set(IFF2HTML_SOURCES diff --git a/Tools/rtti-reader/CMakeLists.txt b/Tools/rtti-reader/CMakeLists.txt index 251b0eb..297fbf7 100644 --- a/Tools/rtti-reader/CMakeLists.txt +++ b/Tools/rtti-reader/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 2.6) +cmake_minimum_required(VERSION 2.6...3.29) project(rtti-reader) set(RTTIREADER_SOURCES diff --git a/Tools/tsoscan/CMakeLists.txt b/Tools/tsoscan/CMakeLists.txt index e9adf88..1e1f07f 100644 --- a/Tools/tsoscan/CMakeLists.txt +++ b/Tools/tsoscan/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 2.6) +cmake_minimum_required(VERSION 2.6...3.29) project(tsoscan) set(TSOSCAN_SOURCES diff --git a/Libraries/FileHandler/utk/CMakeLists.txt b/Tools/utk-decode/CMakeLists.txt similarity index 70% rename from Libraries/FileHandler/utk/CMakeLists.txt rename to Tools/utk-decode/CMakeLists.txt index 041261d..07de27c 100644 --- a/Libraries/FileHandler/utk/CMakeLists.txt +++ b/Tools/utk-decode/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 2.6) +cmake_minimum_required(VERSION 2.6...3.29) project(utk) set(UTK_SOURCES diff --git a/Libraries/FileHandler/utk/utkdecode.c b/Tools/utk-decode/utkdecode.c similarity index 100% rename from Libraries/FileHandler/utk/utkdecode.c rename to Tools/utk-decode/utkdecode.c diff --git a/Libraries/FileHandler/xa/CMakeLists.txt b/Tools/xa-decode/CMakeLists.txt similarity index 69% rename from Libraries/FileHandler/xa/CMakeLists.txt rename to Tools/xa-decode/CMakeLists.txt index 921ad0a..eedd1bd 100644 --- a/Libraries/FileHandler/xa/CMakeLists.txt +++ b/Tools/xa-decode/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 2.6) +cmake_minimum_required(VERSION 2.6...3.29) project(xa) set(XA_SOURCES diff --git a/Libraries/FileHandler/xa/xadecode.c b/Tools/xa-decode/xadecode.c similarity index 100% rename from Libraries/FileHandler/xa/xadecode.c rename to Tools/xa-decode/xadecode.c diff --git a/deps/CMakeLists.txt b/deps/CMakeLists.txt new file mode 100644 index 0000000..b06af5d --- /dev/null +++ b/deps/CMakeLists.txt @@ -0,0 +1,6 @@ +add_subdirectory(zlib) +add_subdirectory(libpng) +add_subdirectory(libjpeg-turbo) +#add_subdirectory(libmpg123) +#add_subdirectory(libpq) +add_subdirectory(freetype) \ No newline at end of file diff --git a/deps/freetype/CMakeLists.txt b/deps/freetype/CMakeLists.txt new file mode 100644 index 0000000..7361f87 --- /dev/null +++ b/deps/freetype/CMakeLists.txt @@ -0,0 +1,25 @@ +cmake_minimum_required(VERSION 2.6...3.29) +project(freetype) + +set(FREETYPE_SOURCES + src/autofit/autofit.c + src/base/ftbase.c + src/base/ftbitmap.c + src/base/ftglyph.c + src/base/ftinit.c + src/base/ftsystem.c + src/raster/raster.c + src/sfnt/sfnt.c + src/smooth/smooth.c + src/truetype/truetype.c +) + +file(GLOB_RECURSE FREETYPE_HEADERS ${PROJECT_SOURCE_DIR}/include/*.h) + +include_directories(${PROJECT_SOURCE_DIR}/include) +add_definitions(-DFT2_BUILD_LIBRARY) + +add_library(freetype STATIC ${FREETYPE_SOURCES} ${FREETYPE_HEADERS}) # remove static, cmake should take care of that +target_include_directories(freetype PUBLIC ${FREETYPE_HEADERS}) + +set_target_properties(freetype PROPERTIES FOLDER deps) \ No newline at end of file diff --git a/deps/freetype/ChangeLog b/deps/freetype/ChangeLog new file mode 100644 index 0000000..23b23d8 --- /dev/null +++ b/deps/freetype/ChangeLog @@ -0,0 +1,4312 @@ +2012-06-15 Werner Lemberg + + * Version 2.4.10 released. + ========================= + + + Tag sources with `VER-2-4-10'. + + * docs/VERSION.DLL: Update documentation and bump version number to + 2.4.10. + + * README, Jamfile (RefDoc), + builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html, + builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html, + builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html, + builds/win32/visualc/freetype.dsp, + builds/win32/visualc/freetype.vcproj, + builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp, + builds/win32/visualce/freetype.vcproj, + builds/win32/visualce/index.html, + builds/wince/vc2005-ce/freetype.vcproj, + builds/wince/vc2005-ce/index.html, + builds/wince/vc2008-ce/freetype.vcproj, + builds/wince/vc2008-ce/index.html: s/2.4.9/2.4.10/, s/249/2410/. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 10. + + * builds/unix/configure.raw (version_info): Set to 15:0:9. + +2012-06-15 Alexei Podtelezhnikov + + * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Improve spacing. + + * docs/CHANGES: Updated. + +2012-06-14 suzuki toshiya + + * builds/exports.mk: Add CCexe_CFLAGS and CCexe_LDFLAGS. + + to pass special compiler/linker flags under cross development. + Suggested by Savannah bug #36367. + + ChangeLog on 2010-07-15 saying as they were removed was wrong + for the official trunk of FreeType2. This commit is the first + introduction of them. + +2012-06-14 Werner Lemberg + + * docs/CHANGES: Updated. + +2012-06-14 suzuki toshiya + + [truetype] Add new versions of NEC FA family to tricky font list. + + NEC FA family dated in 1996 have different checksum. + Reported by Johnson Y. Yan ; see + + http://lists.gnu.org/archive/html/freetype-devel/2012-06/msg00023.html + + * src/truetype/ttobjs.c (tt_check_trickyness_sfnt_ids): 4 sets + of fpgm & prep table checksums for FA-Gothic, FA-Minchou, + FA-RoundedGothicM, FA-RoundedGothicB are added. The family + names in sample PDF are truncated, thus the list of the + family names in tt_check_trickyness_family() is not updated yet. + +2012-06-06 Werner Lemberg + + [ftraster] Fix rounding issue causing visual artifacts. + + Problem reported by jola ; see + + http://lists.gnu.org/archive/html/freetype-devel/2012-05/msg00036.html + + * src/raster/ftraster.c (SMulDiv_No_Round): New macro. + (Line_Up): Use it. + * src/raster/ftmisc.h (FT_MulDiv_No_Round): Copied from `ftcalc.c'. + +2012-05-28 Alexei Podtelezhnikov + + * src/base/ftoutln.c (FT_Outline_Get_Orientation): Simplify. + + We now use the cross product of the direction vectors to compute the + outline's orientation. + +2012-05-28 Werner Lemberg + + * docs/CHANGES: Updated. + +2012-05-28 Alexei Podtelezhnikov + + New function FT_Outline_EmboldenXY. + + * include/freetype/ftoutln.h (FT_Outline_EmboldenXY): Define it. + + * src/base/ftoutln.c (FT_Outline_EmboldenXY): Implement it, using a + simplified embolding algorithm. + (FT_Outline_Embolden): Make it a special case of + `FT_Outline_EmboldenXY' + +2012-05-07 Werner Lemberg + + [type1] Fix Savannah bug #36386. + + * src/type1/t1load.c (t1_load_keyword): Ignore keyword if context is + not valid. + +2012-04-07 Werner Lemberg + + Remove compiler warning. + + * src/truetype/ttgload.c (TT_Load_Glyph) + [!TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: Access `glyph->face' directly. + +2012-03-28 Werner Lemberg + + [autofit] Properly copy scaler flags to script metrics object. + + Without this patch, only the dummy and cjk autohinter modules get + them (since they copy the whole scaler object). + + * src/autofit/aflatin.c (af_latin_metrics_scale), + src/autofit/aflatin2.c (af_latin2_metrics_scale): Implement it. + +2012-03-22 Alexei Podtelezhnikov + + [bdflib] Remove redundant macro. + + * src/bdf/bdflib.c (isdigok): Remove and replace with sbitset, which + is exactly the same. + +2012-03-20 suzuki toshiya + + [configure] Fix Savannah bug #35644. + + * builds/unix/configure.raw: Check `-ansi' flag works even if gcc + is used. Bionic libc headers for Android lose the consistency + when they are parsed with __STDC_VERSION__ older than 199901L or + __STRICT_ANSI__. + +2012-03-20 Werner Lemberg + + [bdf] Improvement to Savannah bug #35656. + + * src/bdf/bdflib.c (isdigok): Add cast, as suggested in report. + +2012-03-17 Chris Liddell + + [type1] Fix Savannah bug #35847. + + * src/type1/t1load.c (parse_subrs): Fix the loop exit condition; + we want to exit when we have run out of data. + +2012-03-16 Werner Lemberg + + [bdf] Really fix Savannah bug #35658. + + * src/bdf/bdflib.c (_bdf_list_split): Add one more `field' initializer. + +2012-03-14 Yann Droneaud + + [sfnt] Make arrays static like all others. + + * src/sfnt/ttload.c (tt_face_load_maxp, tt_face_load_os2), + src/sfnt/ttmtx.c (tt_face_load_hhea): Add `static' keyword to frame + fields. + +2012-03-14 Huw Davies + + [sfnt] A refinement of the previous commit. + + * src/sfnt/sfobjs.c (tt_name_entry_ascii_from_utf16, + tt_name_entry_ascii_from_other): Stop at null byte. + +2012-03-14 Huw Davies + + [sfnt] Add `name' table compatibility to MS Windows. + + * src/sfnt/sfobjs.c (tt_name_entry_ascii_from_utf16, + tt_name_entry_ascii_from_other): Don't replace `\0' with question + marks when converting strings. + +2012-03-14 Werner Lemberg + + Fix Savannah bug #35833. + + Based on the patch given in the bug report. + + * src/type1/t1load.c (IS_INCREMENTAL): New macro. + (read_binary_data): Add parameter `incremental'. + Update all callers using `IS_INCREMENTAL'. + +2012-03-11 Werner Lemberg + + [autofit] Return correct linear advance width values. + + This was quite a subtle bug which accidentally showed up with glyph + `afii10023' of arial.ttf (version 2.76). This glyph is a composite; + the first component, `E', has an advance width of 1366 font units, + while the advance width of the composite itself (which looks like + uppercase `E' with dieresis) is 1367 font units. I think this is + actually a bug in the font itself, because there is no reason that + this glyph has not the same width as uppercase `E' without the + dieresis. Anyway, it helped identify this problem. + + Using the TrueType hinter, the correct value (1367) of `afii10023' + was returned, but the autohinter mysteriously returned 1366. + + Digging in the code showed that the autohinter recursively calls + FT_Load_Glyph to load the glyph, adding the FT_LOAD_NO_SCALE load + flag. However, the `linearHoriAdvance' field is still returned as a + scaled value. To avoid scaling twice, the old code in autofit reset + `linearHoriAdvance', using the `horiAdvance' field. This seemed to + work since FT_LOAD_NO_SCALE was in use, but it failed actually, + because `horiAdvance' is defined as the distance of the first + subglyph's phantom points, which in turn are initialized using the + advance width of the first subglyph. And as the given example + shows, these widths can differ. + + * src/autofit/afloader.c (af_loader_load_g): Temporarily set + FT_LOAD_LINEAR_DESIGN while calling FT_Load_Glyph to get unscaled + values for the linear advance widths. + +2012-03-10 Werner Lemberg + + [truetype] Fix SSW instruction. + + * src/truetype/ttinterp.c (DO_SSW): SSW *does* use font units. For + verification, it took some time to find a font which actually uses + this instruction. + +2012-03-09 Vinnie Falco + + Prepare source code for amalgamation. + + * include/freetype/freetype.h: Swap order of preprocessor blocks. + +2012-03-08 Werner Lemberg + + * Version 2.4.9 released. + ========================= + + + Tag sources with `VER-2-4-9'. + + * docs/CHANGES: Updated. + + * docs/VERSION.DLL: Update documentation and bump version number to + 2.4.9. + + * README, Jamfile (RefDoc), + builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html, + builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html, + builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html, + builds/win32/visualc/freetype.dsp, + builds/win32/visualc/freetype.vcproj, + builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp, + builds/win32/visualce/freetype.vcproj, + builds/win32/visualce/index.html, + builds/wince/vc2005-ce/freetype.vcproj, + builds/wince/vc2005-ce/index.html, + builds/wince/vc2008-ce/freetype.vcproj, + builds/wince/vc2008-ce/index.html: s/2.4.8/2.4.9/, s/248/249/. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 9. + + * builds/unix/configure.raw (version_info): Set to 14:1:8. + +2012-03-08 Werner Lemberg + + [bdf] Add missing overflow check. + + * src/bdf/bdflib.c (_bdf_parse_glyphs) : Add threshold for + `glyph->bpr'. + +2012-03-07 Vinnie Falco + + Prepare source code for amalgamation. + + * src/autofit/aferrors.h, src/bdf/bdferror.h, src/bzip2/ftbzip2.c, + src/cache/ftcerror.h, src/cff/cfferrs.h, src/cid/ciderrs.h, + src/gxvalid/gxverror.h, src/gzip/ftgzip.c, src/lzw/ftlzw.c, + src/otvalid/otverror.h, src/pcf/pcferror.h, src/pfr/pfrerror.h, + src/psaux/psauxerr.h, src/pshinter/pshnterr.h, + src/psnames/psnamerr.h, src/raster/rasterrs.h, src/sfnt/sferrors.h, + src/smooth/ftsmerrs.h, src/truetype/tterrors.h, + src/type1/t1errors.h, src/type42/t42error.h, src/winfonts/fnterrs.h: + Add #undef FT_ERR_PREFIX before #define FT_ERR_PREFIX. + +2012-03-03 Werner Lemberg + + Fix Savannah bug #35660. + + For some divisions, we use casts to 32bit entities. Always guard + against division by zero with these casts also. + + * src/base/ftcalc.c (ft_div64by32): Remove redundant cast. + (FT_MulDiv, FT_MulDiv_No_Round): Add 32bit cast. + (FT_DivFix): Add 32bit cast (this omission triggered the bug). + +2012-03-03 Werner Lemberg + + [psaux] Fix handling of track kerning. + + * src/psaux/afmparse.c (afm_parse_track_kern): Don't inverse sign + for `min_kern'. It is indeed quite common that track kerning + *increases* spacing for very small sizes. + +2012-03-02 Werner Lemberg + + [truetype] Fix Savannah bug #35689. + + * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Check first outline + point. + +2012-03-01 Werner Lemberg + + [bdf] Fix Savannah bug #35656. + + * src/bdf/bdflib.c (_bdf_parse_glyphs) <_BDF_BITMAP>: Check validity + of nibble characters instead of accessing `a2i' array. + +2012-03-01 Werner Lemberg + + [winfonts] Fix Savannah bug #35659. + + * src/winfonts/winfnt.c (FNT_Face_Init): Check number of glyphs. + +2012-03-01 Werner Lemberg + + [bdf] Fix Savannah bug #35658. + + * src/bdf/bdflib.c (_bdf_list_split): Initialize `field' elements + properly. + +2012-03-01 Werner Lemberg + + [psaux] Fix Savannah bug #35657. + + If in function `skip_spaces' the routine `skip_comment' comes to the + end of buffer, `cur' is still increased by one, so we need to check + for `p >= limit' and not `p == limit'. + + * src/psaux/psconv.c (PS_Conv_Strtol, PS_Conv_ToFixed, + PS_Conv_ASCIIHexDecode, PS_Conv_EexecDecode): Fix boundary checking. + +2012-03-01 Werner Lemberg + + [truetype] Fix Savannah bug #35646. + + * src/truetype/ttinterp.c (Ins_MIRP): Typo, present since ages. The + code is now in sync with the other operators (e.g. MSIRP) which + modify twilight points. + +2012-03-01 Werner Lemberg + + [bdf] Fix Savannah bug #35643. + + * src/bdf/bdflib.c (_bdf_list_ensure): Bring code in sync with + comment before `_bdf_list_split', this is, really allocate at least + five `field' elements. + +2012-03-01 Werner Lemberg + + [bdf] Fix Savannah bug #35641. + + * src/bdf/bdflib.c (_bdf_parse_glyphs) : Abort if + _BDF_ENCODING isn't set. We need this because access to the `glyph' + variable might be undefined otherwise. + +2012-03-01 Werner Lemberg + + [truetype] Fix Savannah bug #35640. + + * src/truetype/ttinterp.c (SkipCode, TT_RunIns): Fix boundary check + for NPUSHB and NPUSHW instructions. + +2012-02-29 Werner Lemberg + + [truetype] Fix Savannah bug #35601. + + * src/truetype/ttinterp.c (Ins_SHZ): Use number of points instead of + last point for loop. + Also remove redundant boundary check. + +2012-02-29 Werner Lemberg + + [truetype] Remove redundant check. + + * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Remove redundant + second check for ordered contour start points. + +2012-02-29 Werner Lemberg + + [truetype] Make SHC instruction behave similar to MS rasterizer. + + * src/truetype/ttinterp.c (Ins_SHC): Handle virtual contour in + twilight zone. + +2012-02-29 Alexei Podtelezhnikov + + Avoid modulo operators against a power-of-two denominator. + + * src/afcjk.c (af_hint_normal_stem), src/base/ftoutln.c + (ft_contour_has), src/cff/cffgload.c (cff_decoder_parse_charstrings) + , + src/gxvalid/gxvcommn.c (GXV_32BIT_ALIGNMENT_VALIDATE), + src/gxvalid/gxvfeat.c (gxv_feat_setting_validate): Replace `%' with + `&' operator. + +2012-02-29 Werner Lemberg + + [autofit] Don't synchronize digit widths for light rendering mode. + + We don't hint horizontally in this mode. + + * src/autofit/afloader.c (af_loader_load_g) : + Implement it. + +2012-02-26 Alexei Podtelezhnikov + + [type42] Minor code optimization (again). + + * src/type42/t42parse.c (t42_parse_sfnts): Simplify previous change. + +2012-02-26 Mateusz Jurczyk + Werner Lemberg + + [smooth] Fix Savannah bug #35604. + + * src/smooth/ftsmooth.c (ft_smooth_render_generic): Use `FT_Pos' + instead of `FT_UInt' for some variables and update comparisons + accordingly. A detailed analysis can be found in the bug report. + +2012-02-26 Alexei Podtelezhnikov + + [type42] Minor code optimization. + + * src/type42/t42parse.c (t42_parse_sfnts): Use bitmask instead of + modulo operator. + +2012-02-26 Werner Lemberg + + * docs/CHANGES: Updated. + +2012-02-26 Werner Lemberg + + [type1] Fix Savannah bug #35608. + + * src/type1/t1parse.c (T1_Get_Private_Dict): Reject too short + dictionaries. + +2012-02-26 Werner Lemberg + + [bdf] Support `ENCODING -1 ' format. + + * src/bdf/bdflib.c (_bdf_parse_glyphs) : Implement it. + +2012-02-26 Werner Lemberg + + [bdf] Fix Savannah bug #35607. + + * src/bdf/bdflib.c (_bdf_parse_glyphs) : Normalize + negative encoding values. + +2012-02-26 Werner Lemberg + + [type1] Fix Savannah bug #35606. + + * src/type1/t1load.c (parse_subrs): Add proper guards for `strncmp'. + + * src/psaux/psobjs.c (ps_parser_skip_PS_token): Emit error message + only if cur < limit. + +2012-02-25 Werner Lemberg + + [pcf] Fix Savannah bug #35603. + + * src/pcf/pcfread.c (pcf_get_properties): Assure final zero byte in + `strings' array. + +2012-02-25 Werner Lemberg + + [type42] Fix Savannah bug #35602. + + * src/type42/t42parse.c (t42_parse_sfnts): Check `string_size' more + thoroughly. + +2012-02-25 Werner Lemberg + + [bdf] Fix Savannah bugs #35599 and #35600. + + * src/bdf/bdflib.c (ACMSG16): New warning message. + (_bdf_parse_glyphs) <_BDF_BITMAP>: Check line length. + +2012-02-24 Werner Lemberg + + [bdf] Fix Savannah bugs #35597 and #35598. + + * src/bdf/bdflib.c (_bdf_is_atom): Fix handling of property value. + +2012-02-24  Vinnie Falco + + Prepare source code for amalgamation (6/6). + + * src/cff/cffdrivr.c: s/Load_Glyph/cff_glyph_load/. + + * src/cid/cidload.c: s/parse_font_matrix/cid_parse_font_matrix/. + s/t1_init_loader/cid_init_loader/. + s/t1_done_loader/cid_done_loader/. + + * src/pxaux/t1cmap.c: s/t1_get_glyph_name/psaux_get_glyph_name/. + + * src/truetype/ttdriver.c: s/Load_Glyph/tt_glyph_load/. + + * src/type1/t1load.c: s/parse_font_matrix/t1_parse_font_matrix/. + +2012-02-24  Vinnie Falco + + Prepare source code for amalgamation (5/6). + + * include/freetype/fterrors.h: Undefine FT_KEEP_ERR_PREFIX after + using it. + +2012-02-22  Vinnie Falco + + Prepare source code for amalgamation (4/6). + + * src/smooth/ftgrays.c, src/raster/ftraster.c: Undefine RAS_ARG, + RAS_ARGS, RAS_VAR, and RAS_VARS before defining it. + + * src/smooth/ftgrays.c: s/TRaster/black_TRaster/, + s/PRaster/black_PRaster/. + * src/raster/ftraster.c: s/TRaster/gray_TRaster/, + s/PRaster/gray_PRaster/. + +2012-02-20  Vinnie Falco + + Prepare source code for amalgamation (3/6). + + * src/smooth/ftgrays.c: s/TWorker/black_TWorker/, + s/PWorker/black_PWorker/. + * src/raster/ftraster.c: s/TWorker/gray_TWorker/, + s/PWorker/gray_PWorker/. + +2012-02-20  Vinnie Falco + + Prepare source code for amalgamation (2/6). + + * src/smooth/ftgrays.c, src/raster/ftraster.c: Undefine FLOOR, + CEILING, TRUNC, and SCALED before defining it. + +2012-02-20  Vinnie Falco + + Prepare source code for amalgamation (1/6). + + See discussion starting at + + http://lists.gnu.org/archive/html/freetype-devel/2012-01/msg00037.html + + * src/smooth/ftgrays.c: s/TBand/gray_TBand/. + * src/raster/ftraster.c: s/TBand/black_TBand/. + +2012-02-17 Alexei Podtelezhnikov + + [autofit] Fix outline flags. + + * src/autofit/afloader.c (af_loader_load_g): Don't reassign + `outline.flags' so that this information is preserved. See + discussion starting at + + http://lists.gnu.org/archive/html/freetype-devel/2012-02/msg00046.html + +2012-02-11 Werner Lemberg + + [truetype] Fix Savannah bug #35466. + + Jump instructions are now bound to the current function. The MS + Windows rasterizer behaves the same, as confirmed by Greg Hitchcock. + + * src/truetype/ttinterp.h (TT_CallRec): Add `Cur_End' element. + * src/truetype/ttobjs.h (TT_DefRecord): Add `end' element. + + * src/truetype/ttinterp.c (DO_JROT, DO_JMPR, DO_JROF): Check upper + bound of jump address. + (Ins_FDEF, Ins_CALL, Ins_LOOPCALL, Ins_UNKNOWN, TT_RunIns): Updated. + +2012-02-11 Werner Lemberg + + We don't use `extensions'. + + * include/freetype/internal/ftobjs.h (FT_DriverRec): Remove + `extensions' field. + +2012-02-11 Werner Lemberg + + Clean up `generic' fields. + + * include/freetype/internal/ftobjs.h (FT_ModuleRec, FT_LibraryRec): + Remove `generic' field since users can't access it. + + * src/base/ftobjs.c (FT_Done_GlyphSlot): Call `generic.finalizer' as + advertised in the documentation of FT_Generic. + (Destroy_Module, FT_Done_Library): Updated to changes in `ftobjs.h'. + +2012-02-07 Werner Lemberg + + [autofit] Harmonize function arguments. + + * src/autofit/afloader.c, src/autofit/afloader.h: Use `FT_Int32' for + `load_flags'. + +2012-02-07 Werner Lemberg + + * src/cff/cffobjs.c (cff_face_init): Remove unnecessary casts. + +2012-01-17 suzuki toshiya + + [gxvalid] Fix Savannah bug #35286. + + Patch submitted by anonymous reporter. + + * src/gxvalid/gxvcommn.c (gxv_XStateTable_subtable_setup): + gxv_set_length_by_ulong_offset() must be called with 3, not 4, + the number of the subtables in the state tables; classTable, + stateArray, entryTable. + +2012-01-17 suzuki toshiya + + [raccess] Modify for PIC build. + + Based on the patch provided by Erik Dahlstrom , + http://lists.gnu.org/archive/html/freetype-devel/2012-01/msg00010.html + + Also `raccess_guess_table[]' and `raccess_rule_by_darwin_vfs()' + are renamed with `ft_' suffixes. + + * src/base/ftbase.h: `raccess_rule_by_darwin_vfs()' is renamed + to `ft_raccess_rule_by_darwin_vfs()'. + * src/base/ftobjs.c: Ditto. + + * src/base/ftrfork.c: Declarations of FT_RFork_Rule, + raccess_guess_rec, are moved to... + * include/freetype/internal/ftrfork.h: Here. + + * include/freetype/internal/ftrfork.h: + FT_RFORK_RULE_ARRAY_{BEGIN,ENTRY,END} macros are defined + to replace raccess_guess_table[] in both of PIC and non-PIC + modes. + * src/base/ftrfork.c: raccess_guess_table[] array is rewritten + by FT_RFORK_RULE_ARRAY_{BEGIN,ENTRY,END}. + + * src/base/basepic.h (BasePIC): Add `ft_raccess_guess_table' + storage. (FT_RACCESS_GUESS_TABLE_GET): New macro to retrieve + the function pointer from `ft_raccess_guess_table' storage in + `BasePIC' structure. + * src/base/ftrfork.c (FT_Raccess_Guess): Rewritten with + FT_RACCESS_GUESS_TABLE_GET. + (raccess_get_rule_type_from_rule_index): Add `library' as the + first argument to the function, to retrieve the storage of + `ft_raccess_guess_table' from it. Also `raccess_guess_table' + is replaced by FT_RACCESS_GUESS_TABLE_GET. + (ft_raccess_rule_by_darwin_vfs): Ditto. + +2012-01-16 suzuki toshiya + + Remove trailing spaces. + +2012-01-16 suzuki toshiya + + Formatting PIC related sources. + + * src/autofit/afpic.c: Harmonize to FT2 coding conventions. + * src/base/basepic.c: Ditto. + * src/base/ftpic.c: Ditto. + * src/cff/cffpic.c: Ditto. + * src/pshinter/pshpic.c: Ditto. + * src/psnames/pspic.c: Ditto. + * src/raster/rastpic.c: Ditto. + * src/sfnt/sfntpic.c: Ditto. + * src/smooth/ftspic.c: Ditto. + * src/truetype/ttpic.c: Ditto. + +2012-01-16 suzuki toshiya + + [autofit] Fix the inclusion of `aflatin2.h' in PIC file. + + * src/autofit/afpic.c: Include `aflatin2.h' when + FT_OPTION_AUTOFIT2 is defined, as afglobal.c does so. + Unconditionally inclusion causes declared but unimplemented + warning by GCC 4.6. + +2012-01-16 suzuki toshiya + + [cff] Remove redundant declarations of cff_cmap_XXX_class_rec. + + * src/cff/cffpic.c: The declarations of + FT_Init_Class_cff_cmap_encoding_class_rec() and + FT_Init_Class_cff_cmap_unicode_class_rec() are removed. + They can be obtained by the inclusion of cffcmap.h. + cffcmap.h invokes FT_DECLARE_CMAP_CLASS() and it declares + FT_Init_Class_cff_cmap_encoding_class_rec() etc in PIC mode. + +2012-01-15 suzuki toshiya + + Fix redundant declaration warning in PIC mode. + + Originally FT_DEFINE_{DRIVER,MODULE,RENDERER}() macros were + designed to declare xxx_pic_{free,init} by themselves. + Because these macros are used at the end of the module + interface (e.g. ttdriver.c) and the wrapper source to build + a module as a single object (e.g. truetype.c) includes + the PIC file (e.g. ttpic.c) before the module interface, + these macros are expanded AFTER xxx_pic_{free,init} body + when the modules are built as single object. + The declaration after the implementation causes the redundant + declaration warnings, so the declarations are moved to module + PIC headers (e.g. ttpic.h). Separating to other header files + are needed for multi build. + + * include/freetype/internal/ftdriver.h (FT_DEFINE_DRIVER): + Remove class_##_pic_free and class_##_pic_init declarations. + * include/freetype/internal/ftobjs.h (FT_DEFINE_RENDERER, + FT_DEFINE_MODULE): Ditto. + + * src/base/basepic.h: Insert a comment and fix coding style. + * src/autofit/afpic.h: Declare autofit_module_class_pic_{free, + init}. + * src/cff/cffpic.h: Declare cff_driver_class_pic_{free,init}. + * src/pshinter/pshpic.h: Declare pshinter_module_class_pic_{free, + init}. + * src/psnames/pspic.h: Declare psnames_module_class_pic_{free, + init}. + * src/raster/rastpic.h: Declare + ft_raster{1,5}_renderer_class_pic_{free,init} + * src/sfnt/sfntpic.h: Declare sfnt_module_class_pic_{free,init}. + * src/smooth/ftspic.h: Declare + ft_smooth_{,lcd_,lcdv_}renderer_class_pic_{free,init}. + * src/truetype/ttpic.h: Declare tt_driver_class_pic_{free,init}. + +2012-01-15 suzuki toshiya + + Make pspic.c to include module error header to fix multi build. + + * src/psnames/pspic.c: Include `psnamerr.h'. + +2012-01-14 suzuki toshiya + + [base] Fix a dereference of uninitialized variable in PIC mode. + + * src/base/ftglyph.c (FT_Glyph_To_Bitmap): `glyph' must be + set before derefering to obtain `library'. The initialization + of `clazz', `glyph', `library' and NULL pointer check are + reordered to minimize PIC conditonals. + +2012-01-14 suzuki toshiya + + [base] Insert explicit cast for GCC 4.6 in PIC mode. + + * src/base/ftinit.c (FT_Add_Default_Modules): Under PIC + configuration, FT_DEFAULT_MODULES_GET returns + FT_Module_Class** pointer, GCC 4.6 warns that + const FT_Module_Class* const* variable is warned as + inappropriate to store it. To calm it, explicit cast is + inserted. Also `library' is checked to prevent the NULL + pointer dereference in FT_DEFAULT_MODULES_GET. + +2012-01-13 suzuki toshiya + + Fix PIC build broken by d9145241fe378104ba4c12a42534549faacc92e6. + + Under PIC configuration, FT_{CFF,PSCMAPS,SFNT,TT}_SERVICES_GET + take no arguments but derefer the variable named `library' + internally. + + * src/cff/cffdrivr.c (cff_get_interface): Declare `library' and + set it if non-NULL driver is passed. + * src/truetype/ttdriver.c (tt_get_interface): Ditto. + + * src/sfnt/sfdriver.c (sfnt_get_interface): Declare `library' + under PIC configuration, and set it if non-NULL module is given. + * src/psnames/psmodule.c (psnames_get_interface): Ditto. + +2012-01-13 suzuki toshiya + + Make PIC files include module error headers, to use the error codes + with per-module prefix. + + * src/autofit/afpic.c: Include `aferrors.h'. + * src/cff/cffpic.c: Include `cfferrs.h'. + * src/pshinter/pshpic.c: Include `pshnterr.h'. + * src/raster/rastpic.c: Include `rasterrs.h'. + * src/sfnt/sfntpic.c: Include `sferrors.h'. + * src/smooth/ftspic.c: Include `ftsmerrs.h'. + * src/truetype/ttpic.c: Include `tterrors.h'. + +2012-01-04 Tobias Ringström + + [truetype] Fix IP instruction if x_ppem != y_ppem. + + * src/truetype/ttinterp.c (Ins_IP): Scale `orus' coordinates + properly. + +2012-01-02 Werner Lemberg + + Fix tracing message for `loca' table. + + * src/truetype/ttpload.c (tt_face_get_location): Don't emit a + warning message if the last `loca' entry references an empty glyph. + +2011-12-10 Werner Lemberg + + Add some variable initializations. + Reported by Richard COOK . + + * src/type1/t1driver.c (t1_ps_get_font_value): Initialize `val'. + * src/smooth/ftgrays.c (gray_render_conic): Initialize `levels' + earlier. + +2011-12-08 Werner Lemberg + + Fix serious scaling bug in `FT_Get_Advances'. + + * src/base/ftadvanc.c (FT_Get_Advances): Advance values returned by + `FT_Load_Glyph' must be simply multiplied by 1024. + +2011-12-08 Werner Lemberg + + * src/bdf/bdflib.c (_bdf_parse_start): Drop redundant error tracing. + +2011-12-02 suzuki toshiya + + [mac] Unify DARWIN_NO_CARBON with FT_MACINTOSH. + + Originally FT_MACINTOSH was a pure auto macro and DARWIN_NO_CARBON + was a configurable macro to disable Carbon-dependent code. Because + now configure script sets DARWIN_NO_CARBON by default and disables + Darwin & Carbon-dependent codes, these macros can be unified. + FT_MACINTOSH (undefined by default) is kept and DARWIN_NO_CARBON + (defined by default) is removed, because DARWIN_NO_CARBON violates + FT_XXX naming convention of public macros, and a macro configured by + default is not portable for the building without configure (e.g. + make devel). + + * builds/unix/configure.raw: Define FT_MACINTOSH if Carbon-based + old Mac font support is requested and Carbon is available. + * builds/unix/ftconfig.in: Undefine FT_MACINTOSH when the support + for Mac OS X without Carbon (e.g. Mac OS X 10.4 for ppc64) is + requested. + * include/freetype/config/ftconfig.in: Ditto. + * builds/vms/ftconfig.h: Ditto. + + * src/base/ftbase.h: Remove DARWIN_NO_CARBON. + * src/base/ftbase.c: Ditto. + * src/base/ftobjs.c: Ditto. + * src/base/ftrfork.c: Ditto. + + * src/base/ftmac.c: Compile the body if FT_MACINTOSH is defined + (same with TT_USE_BYTECODE_INTERPRETER in ttinterp.c). + * builds/mac/ftmac.c: Ditto. + + * builds/mac/FreeType.m68k_cfm.make.txt: Define FT_MACINTOSH. + * builds/mac/FreeType.m68k_far.make.txt: Ditto. + * builds/mac/FreeType.ppc_classic.make.txt: Ditto. + * builds/mac/FreeType.ppc_carbon.make.txt: Ditto. + +2011-11-30 suzuki toshiya + + Fix Savannah bug #34728 (`make devel' on Mac OS X). + + * builds/toplevel.mk: Check `/dev/null' to identify the Unix- + like systems without `init' nor `hurd' (e.g. Mac OS X >= 10.4). + * builds/unix/detect.mk: Ditto. + +2011-11-30 suzuki toshiya + + [apinames] Fix the overflow of signed integer hash. + + * src/tools/apinames.c (names_add): Change the type of `h' from + int to unsigned int, to prevent undefined behaviour in the + overflow of signed integers (overflow of unsigned int is defined + to be wrap around). Found by clang test suggested by Sean + McBride. + +2011-11-30 Werner Lemberg + + [winfonts] Remove casts. + + * src/winfonts/winfnt.c (winfnt_driver_class): Remove all casts and + update affected functions. + (FNT_Size_Select): Fix number of arguments. + +2011-11-30 Werner Lemberg + + [type42] Remove casts. + + * src/type42/t42driver.c (t42_driver_class): Remove all casts and + update affected functions. + + * src/type42/t42objs.c, src/type42/t42objs.h: Updated for t42driver + changes. + +2011-11-30 Werner Lemberg + + [type1] Remove casts. + + * src/type1/t1driver.c (t1_driver_class): Remove all casts and + update affected functions. + + * src/type1/t1gload.c, src/type1/t1gload.h, src/type1/t1objs.c: + Updated for t1driver changes. + src/type1/t1objs.h (T1_Driver): Remove unused typedef. + Updated for t1driver changes. + +2011-11-27 Werner Lemberg + + [bdf] Fix Savannah bug #34896. + + ENCODING now covers the whole Unicode range. + + Note, however, that this change is quite expensive since it + increases the size of three arrays by almost 400kByte in total. The + right fix is to replace the logic with something smarter. + Additionally, there exist very old BDFs for three-byte CCCII + encoding which exceeds the range of Unicode (another reason to have + a smarter logic). + + * src/bdf/bdf.h (bdf_font_t): Increase size of `nmod' and `umod' + arrays. + * src/bdf/bdflib.c (bdf_parse_t): Increase size of `have' array. + +2011-11-27 Werner Lemberg + + [bdf] Improve tracing. + + * src/bdf/bdflib.c (DBGMSG1, DBGMSG2): New macros. + (_bdf_parse_glyphs): Use them. + +2011-11-26 Werner Lemberg + + Improve tracing. + + * src/bdf/bdfdrivr.c (BDF_Face_Done), src/pcf/pcfdrivr.c + (PCF_Face_Done): Remove tracing message. + + * src/bdf/bdfdrivr.c (BDF_Face_Init), src/cff/cffobjs.c + (cff_face_init), src/cid/cidobjs.c (cid_face_init), + src/pfr/pfrobjs.c (pfr_face_init), src/sfnt/sfobjs.c + (sfnt_init_face), src/truetype/ttobjs.c (tt_face_init), + src/type1/t1objs.c (T1_Face_Init), src/type42/t42objs.c + (T42_Face_Init), src/winfonts/winfnt.c (FNT_Face_Init): Add + `greeting' message. + + * src/sfnt/sfobjs.c (sfnt_open_font), src/type42/t42objs.c + (T42_Open_Face): Improve tracing. + +2011-11-26 Werner Lemberg + + [cid] Fix error code. + + * src/cid/cidparse.c (cid_parser_new): Do it. + +2011-11-26 Werner Lemberg + + [cff] Fix error code. + + * src/cff/cffload.c (cff_font_load): Do it. + +2011-11-26 Werner Lemberg + + Add new error code FT_Err_Missing_Module. + + Previously, FreeType misleadingly returned + FT_Err_Unknown_File_Format if a module was missing (or a test was + missing completely). + + * include/freetype/fterrdef.h (FT_Err_Missing_Module): Define. + + * src/cff/cffobjs.c (cff_face_init), src/cff/cffdrivr.c + (cff_get_glyph_name), src/cid/cidobjs.c (cid_face_init), + src/sfnt/sfobjs.c (sfnt_init_face), src/truetype/ttobjs.c + (tt_face_init), src/type1/t1objs.c (T1_Face_Init), + src/type42/t42objs.c (T42_Face_Init, T42_Driver_Init): Updated. + + * src/type1/t1afm.c (T1_Read_Metrics), src/type/t1objs.c + (T1_Face_Init), src/type42/t42objs.c (T42_Face_Init): Remove now + redundant test for `psaux'. + +2011-11-25 Werner Lemberg + + [bdf] Add more error messages. + + * src/bdf/bdflib.c (_bdf_set_default_spacing, _bdf_add_property): + Add line number argument. + Update all callers. + (ERRMSG5, ERRMSG6, ERRMSG7, ERRMSG8, ERRMSG9): New macros. + (_bdf_readstream, _bdf_set_default_spacing, _bdf_add_property, + _bdf_parse_glyphs, _bdf_parse_start): Add error messages. + +2011-11-24 Werner Lemberg + + * include/freetype/fterrors.h: Remove dead code. + +2011-11-15 Werner Lemberg + + * docs/releases: Updated. + +2011-11-15 Werner Lemberg + + * Version 2.4.8 released. + ========================= + + + Tag sources with `VER-2-4-8'. + + * docs/CHANGES: Updated. + + * docs/VERSION.DLL: Update documentation and bump version number to + 2.4.8. + + * README, Jamfile (RefDoc), + builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html, + builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html, + builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html, + builds/win32/visualc/freetype.dsp, + builds/win32/visualc/freetype.vcproj, + builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp, + builds/win32/visualce/freetype.vcproj, + builds/win32/visualce/index.html, + builds/wince/vc2005-ce/freetype.vcproj, + builds/wince/vc2005-ce/index.html, + builds/wince/vc2008-ce/freetype.vcproj, + builds/wince/vc2008-ce/index.html: s/2.4.7/2.4.8/, s/247/248/. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 8. + + * builds/unix/configure.raw (version_info): Set to 14:0:8. + +2011-11-13 Chris Liddell + + Add FT_Get_PS_Font_Value() API. + + This allows a Type 1 font face to be interrogated to retrieve most + of the dictionary keys (keys not relevant to FreeType's Type 1 + interpreter are not available). + + * include/freetype/internal/services/svpsinfo.h + (PS_GetFontValueFunc): New typedef. + (PSInfo): Add `ps_get_font_value'. + (FT_DEFINE_SERVICE_PSINFOREC): Updated. + + * include/freetype/internal/t1types.h (T1_EncodingType): Moved to... + * include/freetype/t1tables.h: Here. + (PS_Dict_Keys): New enumeration. + (FT_Get_PS_Font_Value): New declaration. + + * src/base/fttype1.c (FT_Get_PS_Font_Value): New function. + + * src/type1/t1driver.c (t1_ps_get_font_value): This new function + does the real job. + (t1_service_ps_info): Add it. + + * src/cff/cffdrivr.c (cff_service_ps_info), src/cid/cidriver.c + (cid_service_ps_info), src/type42/t42drivr.c (t42_service_ps_info): + Updated. + +2011-11-08 Braden Thomas + + [cid] Various loading fixes. + + * src/cid/cidload.c (cid_load_keyword) , + (parse_font_matrix, parse_expansion_factor): Correctly check number + of dictionaries. + (cid_read_subrs): Protect against invalid values of `num_subrs'. + Assure that the elements of the `offsets' array are ascending. + +2011-11-05 Werner Lemberg + + * README: We use copyright ranges also. + + According to + + http://www.gnu.org/prep/maintain/html_node/Copyright-Notices.html + + this should be mentioned explicitly. + +2011-10-30 suzuki toshiya + + [raccess] Supplement for previous fix. + + * src/base/ftbase.h (raccess_rule_by_darwin_vfs): Do not declare + it on native Mac OS X. + * src/base/ftrfork.c (raccess_get_rule_type_from_rule_index): + Hide raccess_get_rule_type_from_rule_index() on native Mac OS X + too. + +2011-10-30 suzuki toshiya + + [raccess] Hide raccess_rule_by_darwin_vfs() on native Mac OS X. + + * src/base/ftrfork.c (raccess_rule_by_darwin_vfs): Do not + compile on native Mac OS X because it is not used. + +2011-10-25 Werner Lemberg + + [truetype] Fix MD instruction for twilight zone. + + * src/truetype/ttinterp.c (Ins_MD): Without this fix, the MD + instruction applied to original coordinates of twilight points + always returns zero. + +2011-10-18 Werner Lemberg + + * Version 2.4.7 released. + ========================= + + + Tag sources with `VER-2-4-7'. + + * docs/CHANGES: Updated. + + * docs/VERSION.DLL: Update documentation and bump version number to + 2.4.7. + + * README, Jamfile (RefDoc), + builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html, + builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html, + builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html, + builds/win32/visualc/freetype.dsp, + builds/win32/visualc/freetype.vcproj, + builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp, + builds/win32/visualce/freetype.vcproj, + builds/win32/visualce/index.html, + builds/wince/vc2005-ce/freetype.vcproj, + builds/wince/vc2005-ce/index.html, + builds/wince/vc2008-ce/freetype.vcproj, + builds/wince/vc2008-ce/index.html: s/2.4.6/2.4.7/, s/246/247/. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 7. + + * builds/unix/configure.raw (version_info): Set to 13:2:7. + +2011-10-15 Kal Conley + + Fix handling of transformations if no renderer is present. + + * src/base/ftobjs.c (FT_Load_Glyph): Thinko. + +2011-10-15 Kal Conley + + Fix conditions for autohinting. + + * src/base/ftobjs.c (FT_Load_Glyph): Handle + FT_LOAD_IGNORE_TRANSFORM. + +2011-10-07 suzuki toshiya + + [gxvalid] Fix a bug to detect too large offset in morx table. + + * src/gxvalid/gxvmorx2.c + (gxv_morx_subtable_type2_ligActionIndex_validate): Fix a bug + that too large positive offset cannot be detected. + +2011-10-01 Braden Thomas + + Handle some border cases. + + * include/freetype/config/ftstdlib.h (FT_USHORT_MAX): New macro. + + * src/base/ftbitmap.c (FT_Bitmap_Convert): Protect against invalid + value of `target->rows'. + + * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Add check for + flex start. + + * src/raster/ftrend1.c (ft_raster1_render): Check `width' and + `height'. + + * src/truetype/ttgxvar.c (TT_Vary_Get_Glyph_Deltas): Protect against + invalid values in `localpoints' array. + +2011-10-01 Werner Lemberg + + [psnames] Handle zapfdingbats. + Problem reported by Nicolas Rougier . + + * src/tools/glnames.py (adobe_glyph_list): Add data from AGL's + `zapfdingbats.txt' file. + + * src/psnames/pstables.h: Regenerated. + +2011-09-27 Simon Bünzli + + Fix Savannah bug #34189. + + * src/type1/t1load.c (T1_Open_Face): Initialize + `face->len_buildchar'. + +2011-09-26 Werner Lemberg + + [cff] Dump SIDs while tracing. + + * src/cff/cffobjs.c (cff_face_init): Do it. + + * src/cff/cffparse.c (cff_parser_run) [FT_DEBUG_LEVEL_TRACE] + : Identify as SID. + +2011-09-17 Werner Lemberg + + Remove unused FT_ALIGNMENT macro. + + * builds/unix/ftconfig.in, builds/vms/ftconfig.h, + include/freetype/config/ftconfig.h: Do it. + +2011-09-17 Alexei Podtelezhnikov + + [smooth] Slightly optimize conic and cubic flatterners. + + * src/smooth/ftgrays.c (gray_render_conic, gray_render_cubic): Move + out some code from the main loop to speed it up. + +2011-09-11 Tomas Hoger + + Slightly improve LZW_CLEAR handling. + + * src/lzw/ftzopen.c (ft_lzwstate_io) : + Ensure that subsequent (modulo garbage byte(s)) LZW_CLEAR codes are + handled as clear codes. This also re-sets old_code and old_char to + predictable values, which is a little better than using `random' + ones if the code following LZW_CLEAR is invalid. + +2011-09-11 Tomas Hoger + + Add explicit LZW decompression stack size limit. + + Stack larger than 1<prefix[code - 256] + when traversing prefix table. Such check is less efficient and + should not be required if prefix table is constructed correctly in + the first place. + + * src/lzw/ftzopen.c (ft_lzwstate_stack_grow): Implement it. + +2011-09-11 Tomas Hoger + + Protect against loops in the prefix table. + + LZW decompressor did not sufficiently check codes read from the + input LZW stream. A specially-crafted or corrupted input could + create a loop in the prefix table, which leads to memory usage + spikes, as there's no decompression stack size limit. + + * src/lzw/ftzopen.c (ft_lzwstate_io) : First + code in valid LZW stream must be 0..255. + : In the special KwKwK case, code == free_ent, + code > free_ent is invalid. + +2011-09-09 Werner Lemberg + + Better tracing of metrics. + + * src/base/ftobjs.c (FT_Request_Size, FT_Select_Size): Decorate with + FT_TRACE. + +2011-09-07 Werner Lemberg + + Fix Savannah bug #33816. + + * src/cff/cfftypes.h (CFF_FontRecDictRec): New member + `has_font_matrix'. + * src/cff/cffparse.c (cff_parse_font_matrix): Set it. + Update tracing output. + * src/cff/cffobjs.c (cff_face_init): Use it so that the heuristics + can be removed. + +2011-08-30 Werner Lemberg + + Better tracing of metrics. + + * src/base/ftobjs.c (FT_Select_Metrics, FT_Request_Metrics): + Decorate with FT_TRACE. + +2011-08-25 Werner Lemberg + + [cff] Better tracing of the parsing process. + + * src/cff/cffload.c (cff_subfont_load, cff_font_load): Decorate with + FT_TRACE. + + * src/cff/cffparse.c (cff_parse_font_matrix, cff_parse_font_bbox, + cff_parse_private_dict, cff_parse_cid_ros): Updated. + (CFF_FIELD_NUM, CFF_FIELD_FIXED, CFF_FIELD_FIXED_1000, + CFF_FIELD_STRING, CFF_FIELD_BOOL, CFF_FIELD_CALLBACK, CFF_FIELD, + CFF_FIELD_DELTA): Add argument for ID. + (cff_parser_run): Decorate with FT_TRACE. + + * src/cff/cffparse.h (CFF_Field_Handler) [FT_DEBUG_LEVEL_TRACE]: Add + `id' member. + + * src/cff/cfftoken.h: Add IDs to all fields. + +2011-08-16 Werner Lemberg + + Fix Savannah bug #34022. + + * README, docs/INSTALL: Remove references to UPGRADE.UNIX. + +2011-08-15 Werner Lemberg + + Fix Savannah bug #34018. + + * docs/UPGRADE.UNIX: Removed. Obsolete. + +2011-08-15 David Bevan + + Fix Savannah bug #33992. + + * src/base/ftstroke.c (FT_Stroker_ParseOutline): Fix border case. + +2011-08-12 Werner Lemberg + + Fix Savannah bug #33975. + + * src/cff/cffparse.c (cff_parse_font_matrix): Fix typo. + +2011-07-29 Werner Lemberg + + * Version 2.4.6 released. + ========================= + + + Tag sources with `VER-2-4-6'. + + * docs/CHANGES: Updated. + + * docs/VERSION.DLL: Update documentation and bump version number to + 2.4.6. + + * README, Jamfile (RefDoc), + builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html, + builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html, + builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html, + builds/win32/visualc/freetype.dsp, + builds/win32/visualc/freetype.vcproj, + builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp, + builds/win32/visualce/freetype.vcproj, + builds/win32/visualce/index.html, + builds/wince/vc2005-ce/freetype.vcproj, + builds/wince/vc2005-ce/index.html, + builds/wince/vc2008-ce/freetype.vcproj, + builds/wince/vc2008-ce/index.html: s/2.4.5/2.4.6/, s/245/246/. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 6. + + * builds/unix/configure.raw (version_info): Set to 13:1:7. + +2011-07-29 Werner Lemberg + + [cff] Add some more tracing infos. + + * src/cff/cffparse.c (cff_parse_font_matrix, cff_parse_font_bbox, + cff_parse_cid_ros): Add tracing. + +2011-07-22 Dirk Müller + + [psaux, type1] Fix null pointer dereferences. + + Found with font fuzzying. + + * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Check + `decoder->buildchar'. + + * src/type1/t1load.c (t1_load_keyword): Check `blend->num_designs'. + +2011-07-20 Chris Morgan + + Add FT_CONFIG_OPTION_DISABLE_STREAM_SUPPORT. + + Useful for embedded systems which don't need file stream support. + + * src/base/ftsystem.c, src/base/ftobjs.c (FT_Stream_New): Implement + it. + +2011-07-20 Elton Chung + + * src/base/ftpatent.c (FT_Face_SetUnpatentedHinting): Fix typo. + +2011-07-16 Steven Chu + + [truetype] Fix metrics on size request for scalable fonts. + + * src/truetype/ttdriver.c (tt_size_request): Fix copying metrics + from TT_Size to FT_Size if scalable font. + + See + + http://lists.gnu.org/archive/html/freetype-devel/2011-07/msg00049.html + + for some comparison images. + +2011-07-14 Matthias Drochner . + + [psaux] Fix potential sign extension problems. + + When shifting right a signed value, it is not defined by the + C standard whether one gets a sign extension or not. Use a macro to + do an explicit cast from a signed short (assuming that this is + 16bit) to an int. + + * src/psaux/t1decode.c (Fix2Int): New macro. + Use it where appropriate. + +2011-07-14 Werner Lemberg + + * src/psaux/t1decode.c (t1_decoder_parse_charstrings) + : Better handling of subroutine index 0. + From Matthias Drochner . + +2011-07-10 ÐлекÑей Подтележников + + [psaux] Optimize previous commit. + + * src/psaux/t1decode.c (t1_decoder_parse_charstrings) + : Move error check down to avoid testing twice for + good cases. + +2011-07-08 Werner Lemberg + + [psaux] Add better argument check for `callothersubr'. + + * src/psaux/t1decode.c (t1_decoder_parse_charstrings) + : Reject negative arguments. + +2011-07-07 Werner Lemberg + + [sfnt] Try harder to find non-zero values for ascender and descender. + + * src/sfnt/sfobjs.c (sfnt_load_face): Consult `OS/2' table in case + the `hhea' table's values are zero. + +2011-07-03 Werner Lemberg + + Fix previous commit. + + We want to unset FT_FACE_FLAG_SCALABLE only if there are bitmap + strikes in the font. + + * src/truetype/ttobjs.c (tt_face_init): Implement it. + + * docs/CHANGES: Updated. + +2011-07-02 Just Fill Bugs + + Fix Savannah bug #33246. + + * src/truetype/ttobjs.c (tt_check_single_notdef): New function. + (tt_face_init): Use it to test FT_FACE_FLAG_SCALABLE. + +2011-07-02 Werner Lemberg + + * docs/CHANGES: Updated. + +2011-07-02 David Bevan + + [ftstroke] Major revision. + + The main problems + ----------------- + + o If FT_STROKER_LINEJOIN_BEVEL was specified, unlimited miter + joins (not bevel joins) were generated. Indeed, the meanings of + `miter' and `bevel' were incorrectly reversed (consistently) in + both the code and comments. + + o The way bevel joins were constructed (whether specified + explicitly, or created as a result of exceeding the miter limit) + did not match what is required for stroked text in PostScript or + PDF. + + The main fixes + -------------- + + o The behaviour of FT_STROKER_LINEJOIN_BEVEL has been corrected. + + o A new line join style, FT_STROKER_LINEJOIN_MITER_FIXED, has been + introduced to support PostScript and PDF miter joins. + + o FT_STROKER_LINEJOIN_MITER_VARIABLE has been introduced as an + alias for FT_STROKER_LINEJOIN_MITER. + + Additionally, a variety of stroking errors have been fixed. These + would cause various artifacts (including points `at infinity'), + especially when stroking poor quality fonts. + + See + + http://lists.gnu.org/archive/html/freetype-devel/2011-07/msg00001.html + + for example documents. The FreeType stroker now produces results + very similar to that produced by GhostScript and Distiller for these + fonts. + + Other problems + -------------- + + The following problems have been resolved: + + o Inside corners could be generated incorrectly. Intersecting the + inside corner could cause a missing triangular area and other + effects. + + The intersection point can only be used if the join is between + two lines and both lines are long enough. The `optimization' + condition in `ft_stroker_inside' has been corrected; this + requires the line length to be passed into various functions and + stored in `FT_StrokerRec'. + + o Incorrect cubic curves could be generated. The angle + calculations in `FT_Stroker_CubicTo' have been corrected to + handle the case of the curve crossing the +/-PI direction. + + o If the border radius was greater than the radius of curvature of + a curve, then the negative sector would end up outside (not + inside) the border. This situation is now recognized and the + negative sector is circumnavigated in the opposite direction. + (If round line joins are being used, this code is disabled + because the line join will always cover the negative sector.) + + o When a curve is split, the arcs may not join smoothly (especially + if the curve turns sharply back on itself). Changes in + direction between adjacent arcs were not handled. A round + corner is now added if the deviation from one arc to the next is + greater than a suitable threshold. + + o The current direction wasn't retained if a the outline contained + a zero length lineto or a curve that was determined to be + `basically a point'. This could cause a spurious join to be + added. + + o Cubics with close control points could be mishandled. All eight + cases are now distinguished correctly. + + Other improvements + ------------------ + + o Borders for cubic curves could be too `flat'. + FT_SMALL_CUBIC_THRESHOLD has been reduced a little to prevent + this. + + o The handling and use of movable points has been simplified a + little. + + o Various values are now computed only if the results are actually + needed. + + o The directions of the outer and inner borders have been swapped, + as recommended by Graham Asher. + + * src/base/ftstroke.c: Revised. + * include/freetype/ftstroke.h: Updated. + +2011-06-30 Ä°smail Dönmez + + * builds/toplevel.mk: We use git, not CVS, thus skip `.gitignore'. + +2011-06-29 Werner Lemberg + + Fix Savannah bug #33663. + + * src/bdf/bdflib.c (_bdf_parse_glyphs): Handle negative values for + ENCODING correctly. + + * docs/CHANGES: Document it. + +2011-06-24 Werner Lemberg + + * Version 2.4.5 released. + ========================= + + + Tag sources with `VER-2-4-5'. + + * docs/CHANGES: Updated. + + * docs/VERSION.DLL: Update documentation and bump version number to + 2.4.5 + + * README, Jamfile (RefDoc), + builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html, + builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html, + builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html, + builds/win32/visualc/freetype.dsp, + builds/win32/visualc/freetype.vcproj, + builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp, + builds/win32/visualce/freetype.vcproj, + builds/win32/visualce/index.html, + builds/wince/vc2005-ce/freetype.vcproj, + builds/wince/vc2005-ce/index.html, + builds/wince/vc2008-ce/freetype.vcproj, + builds/wince/vc2008-ce/index.html: s/2.4.4/2.4.5/, s/244/245/. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 5. + + * builds/unix/configure.raw (version_info): Set to 13:0:7. + +2011-06-20 Werner Lemberg + + * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Fix change + from 2011-05-04. + +2011-06-19 suzuki toshiya + + [gxvalid] make the `prop' validation tracing verbose. + + * src/gxvalid/gxvprop.c: Add tracing messages for errors. + +2011-06-19 suzuki toshiya + + [autogen.sh] Reflect environment variable LIBTOOLIZE. + +2011-06-18 Werner Lemberg + + Update license documentation. + + * docs/GPL.TXT: Renamed to... + * docs/GPLv2.TXT: This. + + * docs/LICENSE.TXT: Updated. + +2011-06-14 suzuki toshiya + + Fix g++4.6 compiler warnings in module drivers. + + The background is same with previous commit. + + * src/truetype/ttgxvar.c (ft_var_readpackedpoints): + Init `points'. (TT_Vary_Get_Glyph_Deltas): Init + `delta_xy'. (TT_Get_MM_Var): Init `mmvar'. + * src/type1/t1load.c (T1_Get_MM_Var): Ditto. + * src/cff/cffdrivr.c (cff_ps_get_font_info): Init + `font_info'. + * src/cff/cffload.c (cff_index_get_pointers): Init `t'. + (cff_font_load): Init `sub'. + * src/cff/cffobjs.c (cff_size_init): Init `internal'. + (cff_face_init): Init `cff'. + * src/pfr/pfrload.c (pfr_extra_item_load_stem_snaps): + Init `snaps'. + * src/pcf/pcfread.c (pcf_get_properties): Init `properties'. + (pcf_get_bitmaps): Init `offsets'. (pcf_get_encodings): + Init `tmpEncoding'. + * src/sfnt/ttload.c (tt_face_load_gasp): Init `gaspranges'. + * src/sfnt/ttsbit.c (Load_SBit_Image): Init `components'. + * src/cache/ftcmru.c (FTC_MruList_New): Init `node'. + * src/gzip/ftgzip.c (FT_Stream_OpenGzip): Init `zip' and + `zip_buff'. + * src/lzw/ftlzw.c (FT_Stream_OpenLZW): Init `zip'. + * src/bzip2/ftbzip2.c (FT_Stream_OpenBzip2): Init `zip'. + +2011-06-14 suzuki toshiya + + [base] Fix g++4.6 compiler warnings in src/base/*.c. + + Passing uninitialized pointer to FT_NEW() families is + not problematic theoretically (as far as the returned + pointer is checked before writing), but g++4.6 dislikes + it and warns by -Wuninitialized. Initialize them by NULL. + + * src/base/ftobjs.c (FT_Stream_New): Init `stream'. + (new_memory_stream): Ditto. + (FT_New_GlyphSlot): Init `slot'. + (FT_CMap_New): Init `cmap'. + (open_face_PS_from_sfnt_stream): Init `sfnt_ps'. + (Mac_Read_POST_Resource): Init `pfb_data'. + (Mac_Read_sfnt_Resource): Init `sfnt_data'. + * src/base/ftrfork.c (FT_Raccess_Get_DataOffsets): + Init `offsets_internal' and `ref'. + (raccess_guess_darwin_hfsplus): Init `newpath'. + (raccess_guess_darwin_newvfs): Ditto. + * src/base/ftbitmap.c (ft_bitmap_assure_buffer): + Init `buffer'. + * src/base/ftstroke.c (FT_Stroker_New): Init `stroker'. + +2011-06-14 suzuki toshiya + + [gxvalid] Cleanup. + + Some invalid, overrunning, unrecommended non-zero values + are cared in paranoid validation mode only. There are + many lines looking like: + + if ( valid->root->level >= FT_VALIDATE_PARANOID ) + FT_INVALID_xxx; + + To simplify them, GXV_SET_ERR_IF_PARANOID( err ) is + introduced for more paranoid validation in future. + + * src/gxvalid/gxvcommn.h (IS_PARANOID_VALIDATION): + New macro to assure valid->root->level is more or + equal to FT_VALIDATE_PARANOID. (GXV_SET_ERR_IF_PARANOID): + New macro to raise an error if in paranoid validation. + * src/gxvalid/gxvcommn.c: Use GXV_SET_ERR_IF_PARANOID(). + * src/gxvalid/gxvfeat.c: Ditto. + * src/gxvalid/gxvjust.c: Ditto. + * src/gxvalid/gxvkern.c: Ditto. + * src/gxvalid/gxvmort.c: Ditto. + * src/gxvalid/gxvmort0.c: Ditto. + * src/gxvalid/gxvmort1.c: Ditto. + * src/gxvalid/gxvmort2.c: Ditto. + * src/gxvalid/gxvmorx1.c: Ditto. + * src/gxvalid/gxvmorx2.c: Ditto. + +2011-06-14 suzuki toshiya + + [gxvalid] Fix gcc4.6 compiler warnings in gxvtrak.c. + + * src/gxvalid/gxvtrak.c (gxv_trak_trackTable_validate): + Check different entries pointing same traking value. + (gxv_trak_validate): Remove unused variable `table_size'. + +2011-06-14 suzuki toshiya + + [gxvalid] Fix gcc4.6 compiler warnings in gxvmorx*.c. + + * src/gxvalid/gxvmorx.c (gxv_morx_subtables_validate): + Conditionalize unvalidated variable `subFeatureFlags'. + (gxv_morx_chain_validate): Conditionalize unvalidated + variable `defaultFlags'. + + * src/gxvalid/gxmorx0.c + (gxv_morx_subtable_type0_entry_validate): + Conditionalize unvalidated variables; `markFirst', + `dontAdvance', `markLast', `verb'. + + * src/gxvalid/gxmorx1.c + (gxv_morx_subtable_type1_entry_validate): Conditionalize + unvalidated variables; `setMark', `dontAdvance'. + + * src/gxvalid/gxvmorx2.c + (gxv_morx_subtable_type2_ligActionOffset_validate): + Conditionalize unvalidated variables; `last', `store'. + Checking for overrunning offset is added. + (gxv_morx_subtable_type2_entry_validate): + Conditionalize unvalidated variables; `setComponent', + `dontAdvance', `performAction'. + (gxv_morx_subtable_type2_ligatureTable_validate): + Check if the GID for ligature does not exceed the + max GID in `maxp' table. + + * src/gxvalid/gxvmort5.c + (gxv_morx_subtable_type5_InsertList_validate): + Conditionalize unvalidated loading of `insert_glyphID' + array. (gxv_morx_subtable_type5_entry_validate): + Conditionalize unvalidated variables; `setMark', + `dontAdvance', `currentIsKashidaLike', + `markedIsKashidaLike', `currentInsertBefore', + `markedInsertBefore'. + +2011-06-14 suzuki toshiya + + [gxvalid] Fix gcc4.6 compiler warnings in gxvmort*.c. + + * src/gxvalid/gxvmort.c (gxv_mort_subtables_validate): + Conditionalize unvalidated variable `subFeatureFlags'. + (gxv_mort_chain_validate): Conditionalize unvalidated + variable `defaultFlags'. + + * src/gxvalid/gxmort0.c + (gxv_mort_subtable_type0_entry_validate): Check the + conflict of the marks for the glyphs. + + * src/gxvalid/gxmort1.c + (gxv_mort_subtable_type1_offset_to_subst_validate): + Local variables `min_gid', `max_gid' are replaced by + variables in the validator. + (gxv_mort_subtable_type1_entry_validate): Conditionalize + unvalidated variables; `setMark', `dontAdvance'. + (gxv_mort_subtable_type1_substTable_validate): + Validate the GID by the min/max GIDs in the validator. + + * src/gxvalid/gxvmort2.c + (gxv_mort_subtable_type2_ligActionOffset_validate): + Conditionalize unvalidated variables; `last', `store'. + Checking for overrunning offset is added. + (gxv_mort_subtable_type2_entry_validate): + Conditionalize unvalidated variables; `setComponent', + `dontAdvance'. + (gxv_mort_subtable_type2_ligatureTable_validate): + Check if the GID for ligature does not exceed the + max GID in `maxp' table. + + * src/gxvalid/gxvmort5.c + (gxv_mort_subtable_type5_InsertList_validate): + Conditionalize unvalidated loading of `insert_glyphID' + array. (gxv_mort_subtable_type5_entry_validate): + Conditionalize unvalidated variables; `setMark', + `dontAdvance', `currentIsKashidaLike', + `markedIsKashidaLike', `currentInsertBefore', + `markedInsertBefore'. + +2011-06-14 suzuki toshiya + + [gxvalid] Fix gcc4.6 compiler warnings in gxvkern.c. + + * src/gxvalid/gxvkern.c + (gxv_kern_subtable_fmt0_pairs_validate): Conditionalize + unvalidated variable `kernValue'. + (gxv_kern_subtable_fmt1_entry_validate): Conditionalize + unvalidated variables; `push', `dontAdvance', `kernAction', + `kernValue'. + (gxv_kern_coverage_new_apple_validate): Conditionalize + trace-only variables; `kernVertical', `kernCrossStream', + `kernVariation'. + (gxv_kern_coverage_classic_apple_validate): Conditionalize + trace-only variables; `horizontal', `cross_stream'. + (gxv_kern_coverage_classic_microsoft_validate): + Conditionalize trace-only variables; `horizontal', + `minimum', `cross_stream', `override'. + (gxv_kern_subtable_validate): Conditionalize trace-only + variables; `version', `tupleIndex'. + +2011-06-14 suzuki toshiya + + [gxvalid] Fix gcc4.6 compiler warnings in gxvjust.c. + + * src/gxvalid/gxvjust.c (gxv_just_check_max_gid): + New function to unify the checks of too large GID. + (gxv_just_wdp_entry_validate): Conditionalize unvalidated + variables; `beforeGrowLimit', `beforeShrinkGrowLimit', + `afterGrowLimit', `afterShrinkGrowLimit', `growFlags', + `shrinkFlags'. Additional check for non-zero values in + unused storage `justClass' is added. + (gxv_just_actSubrecord_type0_validate): Conditionalize + unvalidated variable `order'. GID is checked by + gxv_just_check_max_gid(). Additional check for upside-down + relationship between `lowerLimit' and `upperLimit' is added. + (gxv_just_actSubrecord_type1_validate): GID is checked by + gxv_just_check_max_gid(). + (gxv_just_actSubrecord_type2_validate): Conditionalize + unvalidated variable `substThreshhold'. GID is checked by + gxv_just_check_max_gid(). + (gxv_just_actSubrecord_type5_validate): GID is checked by + gxv_just_check_max_gid(). + (gxv_just_classTable_entry_validate): Conditionalize + unvalidated variables; `setMark', `dontAdvance', + `markClass', `currentClass'. + +2011-06-14 suzuki toshiya + + [gxvalid] Preparation to fix gcc4.6 compiler warnings. + + * src/gxvalid/gxvcommn.h (GXV_LOAD_TRACE_VARS): New macro to + conditionalize the variable which is only used for trace messages. + Automatically set by FT_DEBUG_LEVEL_TRACE. + (GXV_LOAD_UNUSED_VARS): New macro to conditionalize the loading of + unvalidated variables. Undefined by default to calm gcc4.6 warning. + (GXV_ValidatorRec.{min_gid,max_gid}): New variables to hold defined + GID ranges, for the comparison of GID ranges in different subtables. + +2011-06-08 Werner Lemberg + + [autofit] Remove unused structure member. + + * src/autofit/afhints.h (AF_SegmentRec): Remove `contour'. + * src/autofit/aflatin.c (af_latin_hints_compute_segments), + src/autofit/aflatin2.c (af_latin2_hints_compute_segments): Updated. + +2011-05-30 Werner Lemberg + + Fix g++ 4.6 compilation. + + * src/autofit/afhints.c (af_glyph_hints_dump_segments, + af_glyph_hints_dump_edges): Use cast. + +2011-05-30 Werner Lemberg + + Fix gcc 4.6 compiler warnings. + + * src/autofit/afcjk.c (af_cjk_metrics_init_blues): Use casts and + remove unused variables. + * src/autofit/aflatin.c (af_latin_hints_compute_edges): Comment out + `up_dir'. + * src/smooth/ftsmooth.c (ft_smooth_render_generic): Use `height_org' + and `width_org' conditionalized. + +2011-05-28 suzuki toshiya + + [mac] Conditionalize the inclusion of `AvailabilityMacros.h'. + + The native SDK on earliest Mac OS X (10.0-10.1) did not have + `AvailabilityMacros.h'. To prevent the inclusion of missing + header file, ECANCELED (introduced in 10.2) in POSIX header + file is checked to detect the system version. + + * include/freetype/config/ftconfig.h: Conditionalize the + inclusion of `AvailabilityMacros.h'. + * builds/unix/ftconfig.in: Ditto. + * builds/vms/ftconfig.h: Ditto. + +2011-05-27 Werner Lemberg + + [autofit] Improve tracing of hinting process. + + * src/autofit/aflatin.c (af_latin_hint_edges): Add tracing message + `ADJUST'. + +2011-05-26 Werner Lemberg + + [autofit] Fix trace message. + + * src/autofit/aflatin.c (af_latin_hint_edges): Show correct value in + tracing message. + +2011-05-24 Daniel Zimmermann + + Reduce warnings for MS Visual Studio 2010. + + * src/autofit/afhints.c (af_glyph_hints_get_num_segments, + af_glyph_hints_get_segment_offset) [!FT_DEBUG_AUTOFIT]: Provide + return value. + * src/cff/cffgload.c (cff_slot_load): Add cast. + * src/truetype/ttobjs.c (tt_check_trickyness_sfnt_ids): Use proper + loop variable type. + +2011-05-16 suzuki toshiya + + Automake component `builds/unix/install-sh' is removed. + + * builds/unix/install-sh: Removed. It is not needed to + include repository, because autogen.sh installs it. + * builds/unix/.gitignore: Register install-sh. + +2011-05-12 suzuki toshiya + + [autofit] Make trace message for CJK bluezone more verbose. + +2011-05-08 Just Fill Bugs + suzuki toshiya + + [autofit] Add bluezones for CJK Ideographs. + + To remove extremas of vertical strokes of CJK Ideographs at + low resolution and make the top and bottom horizontal stems + aligned, bluezones for CJK Ideographs are calculated from + sample glyphs. At present, vertical bluezones (bluezones + to align vertical stems) are disabled by default. For detail, see + http://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00070.html + http://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00092.html + http://lists.gnu.org/archive/html/freetype-devel/2011-05/msg00001.html + + * include/freetype/internal/fttrace.h: New trace component `afcjk'. + * src/autofit/afcjk.h (AF_CJK{Blue,Axis,Metric}Rec): Add CJK version + for AF_Latin{Blue,Axis,Metric}Rec. + (af_cjk_metrics_check_digits): Ditto, shared with Indic module. + (af_cjk_metrics_init_widths): Ditto. + (af_cjk_metrics_init): Take AF_CJKMetric instead of AF_LatinMetric. + (af_cjk_metrics_scale): Ditto (declaration). + (af_cjk_hints_init): Ditto (declaration). + (af_cjk_hints_apply): Ditto (declaration). + * src/autofit/afcjk.c (af_cjk_metrics_scale): Ditto (body). + (af_cjk_hints_init): Ditto (body). + (af_cjk_hints_apply): Ditto (body). + (af_cjk_metrics_init_widths): Duplicate af_latin_metrics_init_widths. + (af_cjk_metrics_check_digits): Duplicate af_latin_metrics_check_digits. + (af_cjk_metrics_init): Call CJK bluezone initializer. + (af_cjk_metrics_scale_dim): Add code to scale bluezones. + (af_cjk_hints_compute_blue_edges): New function, CJK version of + af_latin_hints_compute_blue_edges. + (af_cjk_metrics_init_blues): New function, CJK version of + af_latin_metrics_init_blues. + (af_cjk_hints_edges): Add code to align the edge stems to blue zones. + + * src/autofit/afindic.c (af_indic_metrics_init): Take AF_CJKMetric + instead of AF_LatinMetric, and initialize as af_cjk_metrics_init. + However bluezones are not initialized. + (af_indic_metrics_scale): Take AF_CJKMetric instead of AF_LatinMetric. + (af_indic_hints_init): Ditto. + (af_indic_hints_apply): Ditto. + + * docs/CHANGES: Note about CJK bluezone support. + +2011-05-06 Werner Lemberg + + [autofit] Remove unused struct member. + + * src/autofit/aflatin.h (AF_LatinAxis): Remove `control_overshoot'. + +2011-05-04 Werner Lemberg + + * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Simplify. + +2011-05-01 Just Fill Bugs + Werner Lemberg + + [autofit] Add more debugging functions. + + * src/autofit/afhints.c (af_glyph_hints_get_num_segments, + af_glyph_hints_get_segment_offset): New functions. + +2011-05-01 suzuki toshiya + + Add new option `--disable-mmap' to configure script. + + * builds/unix/configure.raw: New option `--disable-mmap' + is added. It is for the developers to simulate the systems + without mmap() (like 4.3BSD, minix etc) on POSIX systems. + +2011-04-30 suzuki toshiya + + [truetype] Always recalculate the sfnt table checksum. + + * src/truetype/ttobjs.c (tt_get_sfnt_checksum): Recalculate + the sfnt table checksum even if non-zero value is written in + the TrueType font header. Some bad PDF generators write + wrong values. For details see examples and benchmark tests + of the latency by recalculation: + http://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00091.html + http://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00096.html + +2011-04-30 suzuki toshiya + + [truetype] Register a set of tricky fonts, NEC FA family. + + * src/truetype/ttobjs.c (tt_check_trickyness_sfnt_ids): + Add 8 checksum sets for NEC FA family. For the tricky fonts + without some tables (e.g. NEC FA fonts lack cvt table), + extra check is added to assure that a zero-length table in the + registry is not included in the font. + +2011-04-29 suzuki toshiya + + [truetype] Fix a bug in the sfnt table checksum getter. + + * src/truetype/ttobjs.c (tt_get_sfnt_checksum): Check the + return value of face->goto_table() correctly. + +2011-04-28 Werner Lemberg + + [autofit] Improve tracing messages. + + * src/autofit/aflatin.c (af_latin_metrics_init_blues, + af_latin_align_linked_edge, af_latin_hint_edges): Do it. + +2011-04-25 Kan-Ru Chen + + [truetype] Always check the checksum to identify tricky fonts. + + Because some PDF generators mangle the family name badly, + the trickyness check by the checksum should be invoked always. + For sample PDF, see + http://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00073.html + + * src/truetype/ttobjs.c (tt_check_trickyness): Even when + tt_check_trickyness_family() finds no trickyness, + tt_check_trickyness_sfnt_ids() is invoked. + +2011-04-22 suzuki toshiya + + [autofit] Add more Indic scripts with hanging baseline. + + * src/autofit/afindic.c (af_indic_uniranges): Tibetan, Limbu, + Sundanese, Meetei Mayak, Syloti Nagri and Sharada scripts are + added. + +2011-04-21 Behdad Esfahbod + + Always ignore global advance. + + This makes FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH redundant, + deprecated, and ignored. The new behavior is what every major user + of FreeType has been requesting. Global advance is broken in many + CJK fonts. Just ignoring it by default makes most sense. + + * src/truetype/ttdriver.c (tt_get_advances), + src/truetype/ttgload.c (TT_Get_HMetrics, TT_Get_VMetrics, + tt_get_metrics, compute_glyph_metrics, TT_Load_Glyph), + src/truetype/ttgload.h: Implement it. + + * docs/CHANGES: Updated. + +2011-04-21 rainy6144 + + [autofit] Blur CJK stems if too many to preserve their gaps. + + When there are too many stems to preserve their gaps in the + rasterization of CJK Ideographs at a low resolution, blur the + stems instead of showing clumped stems. See + http://lists.gnu.org/archive/html/freetype-devel/2011-02/msg00011.html + http://lists.gnu.org/archive/html/freetype-devel/2011-04/msg00046.html + for details. + + * src/autofit/afcjk.c (af_cjk_hint_edges): Store the position of + the previous stem by `has_last_stem' and `last_stem_pos', and skip + a stem if the current and previous stem are too near to preserve + the gap. + +2011-04-18 Werner Lemberg + + Integrate autofitter debugging stuff. + + * devel/ftoption.h, include/freetype/config/ftoption.h + (FT_DEBUG_AUTOFIT): New macro. + + * include/freetype/internal/fttrace.h: Add trace components for + autofitter. + + * src/autofit/aftypes.h (AF_LOG): Removed. + (_af_debug): Removed. + + * src/autofit/*: s/AF_DEBUG/FT_DEBUG_AUTOFIT/. + s/AF_LOG/FT_TRACE5/. + Define FT_COMPONENT where necessary. + +2011-04-18 Werner Lemberg + + Synchronize config files. + + * builds/unix/ftconfig.in: Copy missing assembler routines from + include/freetype/config/ftconfig.h. + +2011-04-13 Werner Lemberg + + Fix Savannah bug #33047. + + Patch submitted by anonymous reporter. + + * src/psaux/psobjs.c (ps_table_add): Use FT_PtrDist for pointer + difference. + +2011-04-11 Kan-Ru Chen + + Fix reading of signed integers from files on 64bit platforms. + + Previously, signed integers were converted to unsigned integers, but + this can fail because of sign extension. For example, 0xa344a1eb + becomes 0xffffffffa344a1eb. + + We now do the reverse which is always correct because the integer + size is the same during the cast from unsigned to signed. + + * include/freetype/internal/ftstream.h, src/base/ftstream.c + (FT_Stream_Get*): Replace with... + (FT_Stream_GetU*): Functions which read unsigned integers. + Update all macros accordingly. + + * src/gzip/ftgzip.c (ft_gzip_get_uncompressed_size): Updated. + +2011-04-07 Werner Lemberg + + Update Unicode ranges for CJK autofitter; in particular, add Hangul. + + * src/autofit/afcjk.c (af_cjk_uniranges): Update to Unicode 6.0. + +2011-04-04 Werner Lemberg + + Fix formatting of autofit debug dumps. + + * src/autofit/afhints.c (af_glyph_hints_dump_points, + af_glyph_hints_dump_segments, af_glyph_hints_dump_edges): Adjust + column widths. + +2011-03-30 Werner Lemberg + + * src/autofit/aftypes.h (AF_OutlineRec): Removed, unused. + +2011-03-24 Werner Lemberg + + * src/cff/cfftypes.h (CFF_MAX_CID_FONTS): Increase to 256. + This limit is given on p. 37 of Adobe Technical Note #5014. + +2011-03-23 Werner Lemberg + + * src/truetype/ttpload.c (tt_face_load_loca): Fix mismatch warning. + +2011-03-20 Werner Lemberg + + * src/sfnt/sfobjs.c (sfnt_open_font): Check number of TTC subfonts. + +2011-03-19 Werner Lemberg + + More C++ compilation fixes. + + * src/autofit/afhints.c (af_glyph_hints_dump_points, + af_glyph_hints_dump_segments, af_glyph_hints_dump_edges) + [__cplusplus]: Protect with `extern "C"'. + +2011-03-18 Werner Lemberg + + C++ compilation fixes. + + * src/autofit/aflatin.c (af_latin_hints_apply), src/autofit/afcjk.c + (af_cjk_hints_apply): Use cast for `dim'. + +2011-03-17 Alexei Podtelezhnikov + + A better fix for Savannah bug #32671. + + * src/smooth/ftgrays.c (gray_render_conic): Clean up code and + replace WHILE loop with a more natural DO-WHILE construct. + +2011-03-16 Werner Lemberg . + + * src/base/ftstroke.c (FT_StrokerRec): Remove unused `valid' field. + Suggested by Graham Asher. + +2011-03-09 Werner Lemberg + + Make FT_Sfnt_Table_Info return the number of SFNT tables. + + * src/sfnt/sfdriver.c (sfnt_table_info): Implement it. + * include/freetype/tttables.h: Update documentation. + * docs/CHANGES: Updated. + +2011-03-07 Bram Tassyns + + Fix Savannah bug #27988. + + * src/cff/cffobjs.c (remove_style): New function. + (cff_face_init): Use it to strip off the style part of the family + name. + +2011-03-07 Werner Lemberg + + * docs/CHANGES: Updated. + +2011-03-07 Alexei Podtelezhnikov + + Quick fix for Savannah bug #32671. + + This isn't the optimal solution yet, but it restores the previous + rendering quality (more or less). + + * src/smooth/ftgrays.c (gray_render_conic): Do more splitting. + +2011-03-06 Werner Lemberg + + Fix autohinting fallback. + + * src/base/ftobjs.c (FT_Load_Glyph): Assure that we only check TTFs, + ignoring CFF-based OTFs. + +2011-02-27 Werner Lemberg + + Add AF_CONFIG_OPTION_USE_WARPER to control the autofit warper. + + * devel/ftoption.h, include/freetype/config/ftoption.h + (AF_CONFIG_OPTION_USE_WARPER): New macro. + * src/autofit/aftypes.h (AF_USE_WARPER): Remove. + + * src/autofit/*: s/AF_USE_WARPER/AF_CONFIG_OPTION_USE_WARPER/. + + * src/autofit/afwarp.c [!AF_CONFIG_OPTION_USE_WARPER]: Replace dummy + variable assignment with a typedef. + +2011-02-26 Werner Lemberg + + [autofit] Slight simplifications. + + * src/autofit/aflatin.c (af_latin_hints_link_segments): Remove + test which always returns false. + (af_latin_hints_compute_blue_edges): Remove redundant assignment. + +2011-02-24 Werner Lemberg + + * docs/PROBLEMS: Mention rendering differences on different + platforms. + Suggested and worded by Jason Owen . + +2011-02-24 Werner Lemberg + + [autofit] Comment out unused code. + + * src/autofit/aflatin.c, src/autofit/aflatin2.c + (af_latin_hints_compute_edges): Do it. + +2011-02-24 Werner Lemberg + + * src/autofit/afhints.h (AF_GlyphHints): Remove unused field. + +2011-02-20 suzuki toshiya + + [cache] Fix an off-by-one bug in `FTC_Manager_RemoveFaceID'. + Found by , see detail in + + http://lists.gnu.org/archive/html/freetype/2011-01/msg00023.html + + * src/cache/ftccache.c (FTC_Cache_RemoveFaceID): Check the node + buckets[cache->p + cache->mask] too. + +2011-02-19 Kevin Kofler + + Fall back to autohinting if a TTF/OTF doesn't contain any bytecode. + This is Savannah patch #7471. + + * src/base/ftobjs.c (FT_Load_Glyph): Implement it. + +2011-02-19 John Tytgat + + [cff] Fix subset prefix removal. + This is Savannah patch #7465. + + * src/cff/cffobjs.c (remove_subset_prefix): Update length after + subset prefix removal. + +2011-02-13 Bradley Grainger + + Add inline assembly version of FT_MulFix for MSVC. + + * include/freetype/config/ftconfig.h: Ported the FT_MulFix_i386 + function from GNU inline assembly syntax (see #ifdef __GNUC__ block + above) to MASM syntax for Microsoft Visual C++. + +2011-02-13 Bradley Grainger + + Add project and solution files in Visual Studio 2010 format. + + * builds/win32/.gitignore: Ignore user-specific cache files. + * builds/win32/vc2010/: Add VS2010 project & solution files, created + by upgrading builds/win32/vc2008/freetype.vcproj. + * objs/.gitignore: Ignore Visual Studio output files. + +2011-02-01 Werner Lemberg + + * src/autofit/afdummy.c: Include `aferrors.h'. + Problem reported by Chris Liddell . + +2011-02-01 Werner Lemberg + + [cff] Ignore unknown operators in charstrings. + Patch suggested by Miles.Lau . + + * src/cff/cffgload.c (cff_decoder_parse_charstrings): Emit tracing + message for unknown operators and continue instead of exiting with a + syntax error. + +2011-02-01 Werner Lemberg + + [truetype] FT_LOAD_PEDANTIC now affects `prep' and `fpgm' also. + + * src/truetype/ttgload.c (tt_loader_init): Handle + `FT_LOAD_PEDANTIC'. + * src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep, + tt_size_init_bytecode, tt_size_ready_bytecode): New argument to + handle pedantic mode. + * src/truetype/ttobjs.h: Updated. + +2011-01-31 Werner Lemberg + + [truetype] Protect jump instructions against endless loops. + + * src/truetype/interp.c (DO_JROT, DO_JMPR, DO_JROF): Exit with error + if offset is zero. + +2011-01-31 Werner Lemberg + + [truetype] Improve handling of invalid references. + + * src/truetype/interp.c: Set even more TT_Err_Invalid_Reference + error codes only if pedantic hinting is active. At the same time, + try to provide sane values which hopefully allow useful + continuation. Exception to this is CALL and LOOPCALL – due to + possible stack corruption it is necessary to bail out. + +2011-01-31 Werner Lemberg + + [truetype] Improve handling of stack underflow. + + * src/truetype/ttinterp.c (TT_RunIns, Ins_FLIPPT, Ins_DELTAP, + Ins_DELTAC): Exit with error only if `pedantic_hinting' is set. + Otherwise, try to do something sane. + +2011-01-30 Werner Lemberg + + * src/sfnt/ttmtx.c (tt_face_load_hmtx): Fix tracing message. + +2011-01-30 LIU Sun-Liang + + [truetype]: Fix behaviour of MIAP for invalid arguments. + + * src/truetype/ttinterp.c (Ins_MIAP): Set reference points even in + case of error. + +2011-01-18 Werner Lemberg + + [truetype] Fix handling of MIRP instruction. + + Thanks to Greg Hitchcock who explained the issue. + + * src/truetype/ttinterp.c (Ins_MIRP): Replace a `>=' operator with + `>' since the description in the specification is incorrect. + This fixes, for example, glyph `two' in font `Helvetica Neue LT Com + 65 medium' at 15ppem. + +2011-01-15 suzuki toshiya + + Fix ARM assembly code in include/freetype/config/ftconfig.h. + + * include/freetype/config/ftconfig.h (FT_MulFix_arm): + Copy the maintained code from builds/unix/ftconfig.in. + Old GNU binutils could not accept the reduced syntax + `orr %0, %2, lsl #16'. Un-omitted syntax like RVCT, + `orr %0, %0, %2, lsl #16' is better. Reported by + Johnson Y. Yan. The bug report by Qt developers is + considered too. + + http://bugreports.qt.nokia.com/browse/QTBUG-6521 + +2011-01-15 Werner Lemberg + + [raster] Make bbox handling the same as with Microsoft's rasterizer. + + Right before B/W rasterizing, the bbox gets simply rounded to + integers. This fixes, for example, glyph `three' in font `Helvetica + Neue LT Com 65 Medium' at 11ppem. + + Thanks to Greg Hitchcock who explained this behaviour. + + * src/raster/ftrend1.c (ft_raster1_render): Implement it. + +2011-01-15 suzuki toshiya + + Copy -mcpu=* & -march=* options from CFLAGS to LDFLAGS. + + * builds/unix/configure.raw: Consider recent gcc-standard + flags to specify architecture in CFLAGS & LDFLAGS + harmonization. Requested by Savannah bug #32114, to + support multilib feature of BuildRoot SDK correctly. + +2011-01-15 suzuki toshiya + + Fix off-by-one bug in CFLAGS & LDFLAGS harmonizer. + + * builds/unix/configure.raw: Some important options that + included in CFLAGS but not in LDFLAGS are copied to + LDFLAGS, but the last option in CFLAGS was not checked. + +2011-01-13 Werner Lemberg + + [raster] Add undocumented drop-out rule to the other bbox side also. + + * src/raster/ftraster.c (Vertical_Sweep_Drop, + Horizontal_Sweep_Drop): Implement it. + +2011-01-13 Werner Lemberg + + [raster] Reduce jitter value. + + This catches a rendering problem with glyph `x' from Tahoma at + 10ppem. It seems that the increase of the precision in the change + from 2009-06-11 makes a larger jitter value unnecessary. + + * src/raster/ftraster.c (Set_High_Precision): Implement it. + +2011-01-13 Werner Lemberg + + [raster] Handle drop-outs at glyph borders according to Microsoft. + + If a drop-out rule would switch on a pixel outside of the glyph's + bounding box, use the right (or top) pixel instead. This is an + undocumented feature, but some fonts like `Helvetica Neue LT Com 65 + Medium' heavily rely on it. + + Thanks to Greg Hitchcock who explained this behaviour. + + * src/raster/ftraster.c (Vertical_Sweep_Drop, + Horizontal_Sweep_Drop): Implement it. + +2011-01-09 suzuki toshiya + + [cache] Fix Savannah bug #31923, patch drafted by Harsha. + + When a node comparator changes the cached nodes during the + search of a node matching with queried properties, the + pointers obtained before the function should be updated to + prevent the dereference to freed or reallocated nodes. + To minimize the rescan of the linked list, the update is + executed when the comparator notifies the change of cached + nodes. This change depends previous change: + 38b272ffbbdaae276d636aec4ef84af407d16181 + + * src/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP): Rescan the + top node if the cached nodes are changed. + * src/cache/ftccache.c (FTC_Cache_Lookup): Ditto. + +2011-01-09 suzuki toshiya + + [cache] Notice if a cache query induced the node list change. + + Some node comparators (comparing the cache node contents and the + properties specified by the query) can flush the cache node to + prevent the cache inflation. The change may invalidate the pointers + to the node obtained before the node comparison, so it should be + noticed to the caller. The problem caused by the cache node + changing is reported by Harsha, see Savannah bug #31923. + + * src/cache/ftccache.h (FTC_Node_CompareFunc): Add new argument + `FT_Bool* list_changed' to indicate the change of the cached nodes + to the caller. + (FTC_CACHE_LOOKUP_CMP): Watch the change of the cached nodes by + `_list_changed'. + (FTC_CACHE_TRYLOOP_END): Take new macro argument `_list_changed' + and update it when `FTC_Manager_FlushN' flushes any nodes. + + * src/cache/ftccback.h (ftc_snode_compare): Updated to fit with new + FTC_Node_CompareFunc type. + (ftc_gnode_compare): Ditto. + + * src/cache/ftcbasic.c: Include FT_INTERNAL_OBJECTS_H to use + TRUE/FALSE macros. + (ftc_basic_gnode_compare_faceid): New argument `FT_Bool* + list_changed' to indicate the change of the cache nodes (anyway, it + is always FALSE). + + * src/cache/ftccmap.c: Include FT_INTERNAL_OBJECTS_H to use + TRUE/FALSE macros. + (ftc_cmap_node_compare): New argument `FT_Bool* list_changed' to + indicate the change of the cache nodes (anyway, it is always FALSE). + (ftc_cmap_node_remove_faceid): Ditto. + + * src/cache/ftccache.c (FTC_Cache_NewNode): Pass a NULL pointer to + `FTC_CACHE_TRYLOOP_END', because the result is not needed. + (FTC_Cache_Lookup): Watch the change of the cache nodes by + `list_changed'. + (FTC_Cache_RemoveFaceID): Ditto. + + * src/cache/ftcglyph.c: Include FT_INTERNAL_OBJECTS_H to use + TRUE/FALSE macros. + (ftc_gnode_compare): New argument `FT_Bool* list_changed' to + indicate the change of the cache nodes (anyway, it is always FALSE). + (FTC_GNode_Compare): New argument `FT_Bool* list_changed' to be + passed to `ftc_gnode_compare'. + * src/cache/ftcglyph.h (FTC_GNode_Compare): Ditto. + + * src/cache/ftcsbits.c (ftc_snode_compare): New argument `FT_Bool* + list_changed' to indicate the change of the cache nodes, anyway. It + is updated by `FTC_CACHE_TRYLOOP'. + (FTC_SNode_Compare): New argument `FT_Bool* list_changed' to be + passed to `ftc_snode_compare'. + * src/cache/ftcsbits.h (FTC_SNode_Compare): Ditto. + +2011-01-09 suzuki toshiya + + [cache] Fit `FTC_GNode_Compare' to `FTC_Node_CompareFunc'. + + * src/cache/ftcglyph.h (FTC_GNode_Compare): Add the 3rd + argument `FTC_Cache cache' to fit FTC_Node_CompareFunc + prototype. + * src/cache/ftcglyph.c (FTC_GNode_Compare): Ditto. Anyway, + `cache' is not used by its child `ftc_gnode_compare'. + +2011-01-09 suzuki toshiya + + [cache] Deduplicate the code to get the top node by a hash. + + There are several duplicated code fragments getting the top node + from a cache by a given hash, like: + + idx = hash & cache->mask; + if ( idx < cache->p ) + idx = hash & ( cache->mask * 2 + 1 ); + pnode = cache->buckets + idx; + + To remove duplication, a cpp-macro to do same work + `FTC_NODE__TOP_FOR_HASH' is introduced. For non-inlined + configuration, non-`ftc_get_top_node_for_hash' is also introduced. + + * src/cache/ftccache.h (FTC_NODE__TOP_FOR_HASH): Declare + and implement inlined version. + (FTC_CACHE_LOOKUP_CMP): Use `FTC_NODE__TOP_FOR_HASH'. + * src/cache/ftccache.c (ftc_get_top_node_for_hash): Non-inlined + version. + (ftc_node_hash_unlink): Use `FTC_NODE__TOP_FOR_HASH'. + (ftc_node_hash_link): Ditto. + (FTC_Cache_Lookup): Ditto. + +2011-01-09 suzuki toshiya + + [cache] inline-specific functions are conditionalized. + + * src/cache/ftcglyph.c (FTC_GNode_Compare): Conditionalized for + inlined configuration. This function is a thin wrapper of + `ftc_gnode_compare' for inlined `FTC_CACHE_LOOKUP_CMP' (see + `nodecmp' argument). Under non-inlined configuration, + `ftc_gnode_compare' is invoked by `FTC_Cache_Lookup', via + `FTC_Cache->clazz.node_compare'. + + * src/cache/ftcglyph.h (FTC_GNode_Compare): Ditto. + * src/cache/ftcsbits.c (FTC_SNode_Compare): Ditto, for + `ftc_snode_compare'. + * src/cache/ftcsbits.h (FTC_SNode_Compare): Ditto. + +2011-01-09 suzuki toshiya + + [cache] Correct a type mismatch under non-inlined config. + + * src/cache/ftcglyph.h (FTC_GCACHE_LOOKUP_CMP): `FTC_GCache_Lookup' + takes the node via a pointer `FTC_Node*', differently from cpp-macro + `FTC_CACHE_LOOKUP_CMP'. + +2011-01-06 suzuki toshiya + + Update Jamfile to include Bzip2 support. + + * Jamfile: Include src/bzip2 to project. + Comments for lzw, gzip, bzip2 are changed to clarify that + they are for compressed PCF fonts, not others. + (e.g. compressed BDF fonts are not supported yet) + +2011-01-05 suzuki toshiya + + Update Symbian project files to include Bzip2 support. + + Currently, it provides `FT_Stream_OpenBzip2' that returns + unimplemented error always, to prevent unresolved symbol + error for the applications designed for Unix systems. + + * builds/symbian/bld.inf: Include ftbzip2.h. + * builds/symbian/freetype.mmp: Include ftbzip2.c. + +2011-01-05 suzuki toshiya + + Update classic MacOS makefiles to include Bzip2 support. + + Currently, it provides `FT_Stream_OpenBzip2' that returns + unimplemented error always, to prevent unresolved symbol + error for the applications designed for Unix systems. + + * builds/mac/FreeType.m68k_cfm.make.txt: Include ftbzip2.c.o. + * builds/mac/FreeType.m68k_far.make.txt: Ditto. + * builds/mac/FreeType.ppc_carbon.make.txt: Include ftbzip2.c.x. + * builds/mac/FreeType.ppc_classic.make.txt: Ditto. + +2011-01-05 suzuki toshiya + + Update Amiga makefiles to include Bzip2 support. + + Currently, it provides `FT_Stream_OpenBzip2' that returns + unimplemented error always, to prevent unresolved symbol + error for the applications designed for Unix systems. + + * builds/amiga/makefile: Include bzip2.ppc.o built from ftbzip2.c. + * builds/amiga/makefile.os4: Include bzip2.o built from ftbzip2.c. + * builds/amiga/smakefile: Ditto. + +2011-01-05 suzuki toshiya + + Update pkg-config tools to reflect Bzip2 support. + + * builds/unix/freetype-config.in: Include `-lbz2' to + --libs output, if built with Bzip2 support. + * builds/unix/freetype2.in: Ditto. + +2011-01-05 suzuki toshiya + + * builds/unix/configure.raw: Remove `SYSTEM_BZ2LIB' macro. + + SYSTEM_ZLIB is used to switch the builtin zlib source + or system zlib source out of FreeType2. But ftbzip2 + module has no builtin bzip2 library and always requires + system bzip2 library. Thus SYSTEM_BZ2LIB is always yes, + it is not used. + +2011-01-03 Werner Lemberg + + */rules.mk: Handle `*pic.c' files. + +2010-12-31 Werner Lemberg + + * src/cff/cfftypes.h (CFF_MAX_CID_FONTS): Increase to 64. + Problem reported by Tom Bishop . + +2010-12-31 Werner Lemberg + + Improve bzip2 support. + + * include/freetype/ftmoderr.h: Add bzip2. + + * docs/INSTALL.ANY, docs/CHANGES: Updated. + + * src/pcf/README: Updated. + * include/freetype/internal/pcftypes.h: Obsolete, removed. + +2010-12-31 Joel Klinghed + + Add bzip2 compression support to handle *.pcf.bz2 files. + + * builds/unix/configure.raw: Test for libbz2 library. + + * devel/ftoption.h, include/freetype/config/ftoption.h + (FT_CONFIG_OPTION_USE_BZIP2): Define. + * include/freetype/config/ftheader.h (FT_BZIP2_H): Define. + + * include/freetype/ftbzip2.h: New file. + + * src/bzip2/*: New files. + + * src/pcf/pcf.h: s/gzip_/comp_/. + * src/pcf/pcfdrvr.c: Include FT_BZIP2_H. + s/gzip_/comp_/. + (PCF_Face_Init): Handle bzip2 compressed files. + + * docs/formats.txt, modules.cfg: Updated. + +2010-12-25 Harsha + + Apply Savannah patch #7422. + + If we encounter a space in a string then the sbit buffer is NULL, + height and width are 0s. So the check in ftc_snode_compare will + always pass for spaces (comparision with 255). Here the comments + above the condition are proper but the implementation is not. When + we create an snode I think it is the proper way to initialize the + width to 255 and then put a check for being equal to 255 in snode + compare function. + + * src/cache/ftcsbits.c (FTC_SNode_New): Initialize sbit widths with + value 255. + (ftc_snode_compare): Fix condition. + +2010-12-13 Werner Lemberg + + Fix parameter handling of `FT_Set_Renderer'. + Reported by Kirill Tishin . + + * src/base/ftobjs.c (FT_Set_Renderer): Increment `parameters'. + +2010-12-09 Werner Lemberg + + [cff] Allow `hlineto' and `vlineto' without arguments. + + We simply ignore such instructions. This is invalid, but it doesn't + harm; and indeed, there exist such subsetted fonts in PDFs. + + Reported by Albert Astals Cid . + + * src/cff/cffgload.c (cff_decoder_parse_charstrings) + [cff_op_hlineto]: Ignore instruction if there aren't any arguments + on the stack. + +2010-11-28 Werner Lemberg + + * Version 2.4.4 released. + ========================= + + + Tag sources with `VER-2-4-4'. + + * docs/CHANGES: Updated. + + * docs/VERSION.DLL: Update documentation and bump version number to + 2.4.4 + + * README, Jamfile (RefDoc), + builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html, + builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html, + builds/win32/visualc/freetype.dsp, + builds/win32/visualc/freetype.vcproj, + builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp, + builds/win32/visualce/freetype.vcproj, + builds/win32/visualce/index.html, + builds/wince/vc2005-ce/freetype.vcproj, + builds/wince/vc2005-ce/index.html, + builds/wince/vc2008-ce/freetype.vcproj, + builds/wince/vc2008-ce/index.html: s/2.4.3/2.4.4/, s/243/244/. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 4. + + * builds/unix/configure.raw (version_info): Set to 12:2:6. + +2010-11-28 Alexei Podtelezhnikov + + [ftsmooth]: Minor code simplification. + + * src/smooth/ftgrays (gray_render_cubic): Do only one comparison + instead of two. + +2010-11-26 Johnson Y. Yan + + [truetype] Better multi-threading support. + + * src/truetype/ttinterp.c (TT_Load_Context): Reset glyph zone + references. + +2010-11-23 John Tytgat + + * src/psaux/t1decode.c (t1_decoder_parse_charstring): Expand + start_point, check_points, add_point, add_point1, close_contour + macros. + Remove add_contour macro. + Return error code from t1_builder_start_point and + t1_builder_check_points when there was one (instead of returning 0). + +2010-11-22 suzuki toshiya + + [truetype] Identify the tricky fonts by cvt/fpgm/prep checksums. + Some Latin TrueType fonts are still expected to be unhinted. + Fix Savannah bug #31645. + + * src/truetype/ttobjs.c (tt_check_trickyness): Divided to... + (tt_check_trickyness_family): this checking family name, and + (tt_check_trickyness_sfnt_ids): this checking cvt/fpgm/prep. + (tt_get_sfnt_checksum): Function to retrieve the sfnt checksum + for specified subtable even if cleared by lazy PDF generators. + (tt_synth_sfnt_checksum): Function to calculate the checksum. + +2010-11-18 Werner Lemberg + + [truetype] Fix `loca' handling for inconsistent number of glyphs. + Reported by Johnson Y. Yan . + + * src/truetype/ttpload.c (tt_face_load_loca): While sanitizing, + handle case where `loca' is the last table in the font. + +2010-11-18 Werner Lemberg + + [sfnt] Ignore all errors while loading `OS/2' table. + Suggested by Johnson Y. Yan . + + * src/sfnt/sfobjs.c (sfnt_load_face): Do it. + +2010-11-18 Johnson Y. Yan + + [type1] Fix matrix normalization. + + * src/type1/t1load.c (parse_font_matrix): Handle sign of scaling + factor. + +2010-11-18 Werner Lemberg + + [type1] Improve guard against malformed data. + Based on a patch submitted by Johnson Y. Yan + + + * src/type1/t1load.c (read_binary_data): Check `size'. + +2010-11-17 Werner Lemberg + + [sfnt] While tracing, output table checksums also. + + * src/sfnt/ttload.c (tt_face_load_font_dir): Do it. + +2010-11-04 suzuki toshiya + + [UVS] Fix `find_variant_selector_charmap', Savannah bug #31545. + + Since 2010-07-04, `find_variant_selector_charmap' returns + the first cmap subtable always under rogue-compatible + configuration, it causes NULL pointer dereference and + make UVS-related functions crashed. + + * src/base/ftobjs.c (Fix find_variant_selector_charmap): + Returns UVS cmap correctly. + +2010-11-01 Alexei Podtelezhnikov + + [ftsmooth] Improve rendering. + + * src/smooth/ftsmooth.c (gray_render_conic): Since version 2.4.3, + cubic deviations have been estimated _after_ UPSCALE, whereas + conic ones have been evaluated _before_ UPSCALE, which produces + inferior rendering results. Fix this. + Partially undo change from 2010-10-15 by using ONE_PIXEL/4; this has + been tested with demo images sent to the mailing list. See + + http://lists.gnu.org/archive/html/freetype-devel/2010-10/msg00055.html + + and later mails in this thread. + +2010-10-28 Werner Lemberg + + [ftraster] Minor fixes. + + Reported by Tom Bishop . + + * src/raster/ftraster.c (ULong): Remove unused typedef. + (TWorker): Remove unused variable `precision_mask'. + +2010-10-28 Werner Lemberg + + [ftraster] Fix rendering. + + Problem reported by Tom Bishop ; see + thread starting with + + http://lists.gnu.org/archive/html/freetype/2010-10/msg00049.html + + * src/raster/ftraster.c (Line_Up): Replace FMulDiv with SMulDiv + since the involved multiplication exceeds 32 bits. + +2010-10-25 suzuki toshiya + + Revert a change of `_idx' type in `FTC_CACHE_LOOKUP_CMP'. + + * src/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP): Revert + the type of `_idx' from FT_PtrDist (by previous change) + to original FT_UFast, to match with FT_CacheRec. + +2010-10-24 suzuki toshiya + + [cache] Change the hash types to FT_PtrDist. + + On LLP64 platforms (e.g. Win64), FT_ULong (32-bit) + variables are inappropriate to calculate hash values + from the memory address (64-bit). The hash variables + are extended from FT_ULong to FT_PtrDist and new + hashing macro functions are introduced. The hash + values on 16-bit memory platforms are changed, but + ILP32 and LP64 are not changed. The hash value in + the cache subsystem is not reverted to the memory + address, so using signed type FT_PtrDist is safe. + + * src/cache/ftccache.h (_FTC_FACE_ID_HASH): New hash + function to replace `FTC_FACE_ID_HASH' for portability. + * src/cache/ftcmanag.h (FTC_SCALER_HASH): Replace + `FTC_FACE_ID_HASH' by `_FTC_FACE_ID_HASH'. + * src/cache/ftccmap.c (FTC_CMAP_HASH): Ditto. + + * src/cache/ftccache.h (FTC_NodeRec): The type of the + member `hash' is changed from FT_UInt32 to FT_PtrDist. + + * src/cache/ftccache.h (FTC_Cache_Lookup): The type of the + argument `hash' is changed from FT_UInt32 to FT_PtrDist. + (FTC_Cache_NewNode): Ditto. + * src/cache/ftccache.c (ftc_cache_add): Ditto. + (FTC_Cache_Lookup): Ditto. (FTC_Cache_NewNode): Ditto. + * src/cache/ftcglyph.h (FTC_GCache_Lookup): Ditto. + * src/cache/ftcglyph.c (FTC_GCache_Lookup): Ditto. + + * src/cache/ftcbasic.c (FTC_ImageCache_Lookup): The type + of the internal variable `hash' is changed to FT_PtrDist + from FT_UInt32. (FTC_ImageCache_LookupScaler): Ditto. + (FTC_SBitCache_Lookup): Ditto. + (FTC_SBitCache_LookupScaler): Ditto. + * src/cache/ftccmap.c (FTC_CMapCache_Lookup): Ditto. + * src/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP): Ditto. + Also the type of the internal variable `_idx' is changed to + FT_PtrDist from FT_UFast for better pointer calculation. + +2010-10-24 suzuki toshiya + + [cache] Hide internal macros incompatible with LLP64. + + `FT_POINTER_TO_ULONG', `FTC_FACE_ID_HASH', and + `FTC_IMAGE_TYPE_HASH' are enclosed by + FT_CONFIG_OPTION_OLD_INTERNALS and hidden from + normal clients. + + For the history of these macros, see the investigation: + http://lists.gnu.org/archive/html/freetype/2010-10/msg00022.html + +2010-10-24 suzuki toshiya + + Change the type of `FT_MEM_VAL' from FT_ULong to FT_PtrDist. + + On LLP64 platforms (e.g. Win64), unsigned long (32-bit) + cannot cover the memory address (64-bit). `FT_MEM_VAL' is + used for hashing only and not dereferred, so using signed + type FT_PtrDist is safe. + + * src/base/ftdbgmem.c (FT_MEM_VAL): Change the type of the + return value from FT_ULong to FT_PtrDist. + (ft_mem_table_resize): The type of hash is changed to + FT_PtrDist. (ft_mem_table_get_nodep): Ditto. + +2010-10-24 suzuki toshiya + + Replace "%lx" for memory address by "%p", LLP64 platforms. + + On LLP64 platforms (e.g. Win64), long (32-bit) cannot cover + the memory address (64-bit). Also the casts from the pointer + type to long int should be removed to preserve the address + correctly. + + * src/raster/ftraster.c (New_Profile): Replace "%lx" by "%p". + (End_Profile) Ditto. + * src/truetype/ttinterp.c (Init_Context): Ditto. + +2010-10-15 Alexei Podtelezhnikov + + Fix thinko in spline flattening. + + FT_MAX_CURVE_DEVIATION is dependent on the value of ONE_PIXEL. + + * src/smooth/ftgrays.c (FT_MAX_CURVE_DEVIATION): Remove it and + replace it everywhere with ONE_PIXEL/8. + +2010-10-13 suzuki toshiya + + [raccess] Skip unrequired resource access rules by Darwin VFS. + + When a resource fork access rule by Darwin VFS could open the + resource fork but no font is found in it, the rest of rules + by Darwin VFS are skipped. It reduces the warnings of the + deprecated resource fork access method by recent Darwin kernel. + Fix MacPorts ticket #18859: + http://trac.macports.org/ticket/18859 + + * src/base/ftobjs.c (load_face_in_embedded_rfork): + When `FT_Stream_New' returns FT_Err_Cannot_Open_Stream, it + means that the file is possible to be `fopen'-ed but zero-sized. + Also there is a case that the resource fork is not zero-sized, + but no supported font exists in it. If a rule by Darwin VFS + falls into such cases, there is no need to try other Darwin VFS + rules anymore. Such cases are marked by vfs_rfork_has_no_font. + If it is TRUE, the Darwin VFS rules are skipped. + +2010-10-13 suzuki toshiya + + [raccess] Grouping resource access rules based on Darwin VFS. + + MacOS X/Darwin kernel supports a few tricky methods to access + a resource fork via ANSI C or POSIX interface. Current resource + fork accessor tries all possible methods to support all kernels. + But if a method could open a resource fork but no font is found, + there is no need to try other methods older than tested method. + To determine whether the rule index is for Darwin VFS, a local + function `ftrfork.c::raccess_rule_by_darwin_vfs' is introduced. + To use this function in ftobjs.c etc but it should be inlined, + it is exposed by ftbase.h. + + * src/base/ftrfork.c (FT_RFork_Rule): New enum type to identify + the rules to access the resource fork. + (raccess_guess_rec): New structure to bind the rule function and + rule enum type. + (FT_Raccess_Guess): The list of the rule functions is replaced by + (raccess_guess_table): This. This is exposed to be used by other + intra module functions. + (raccess_rule_by_darwin_vfs): A function to return a boolean + if the rule specified by the rule index is based on Darwin VFS. + +2010-10-13 suzuki toshiya + + Prevent to open a FT_Stream for zero-sized file on non-Unix. + + builds/unix/ftsystem.c prevents to open an useless stream from + zero-sized file and returns FT_Err_Cannot_Open_Stream, but the + stream drivers for ANSI C, Amiga and VMS return useless streams. + For cross-platform consistency, all stream drivers should act + same. + + * src/base/ftsystem.c (FT_Stream_Open): If the size of the opened + file is zero, FT_Err_Cannot_Open_Stream is returned. + * builds/amiga/src/base/ftsystem.c (FT_Stream_Open): Ditto. + * src/vms/ftsystem.c (FT_Stream_Open): Ditto. + +2010-10-12 Werner Lemberg + + Fix Savannah bug #31310. + + * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Protect against + invalid `runcnt' values. + +2010-10-08 Chris Liddell + + Fix Savannah bug #31275. + + * src/sfnt/ttpost.c: Include FT_INTERNAL_DEBUG_H. + +2010-10-06 Werner Lemberg + + [truetype] Improve error handling of `SHZ' bytecode instruction. + Problem reported by Chris Evans . + + * src/truetype/ttinterp.c (Ins_SHZ): Check `last_point'. + +2010-10-05 Werner Lemberg + + Fix Savannah bug #31253. + Patch submitted by an anonymous reporter. + + * configure: Use `awk' instead of `sed' to manipulate output of `ls + -id'. + +2010-10-03 Werner Lemberg + + * Version 2.4.3 released. + ========================= + + + Tag sources with `VER-2-4-3'. + + * docs/CHANGES: Updated. + + * docs/VERSION.DLL: Update documentation and bump version number to + 2.4.3 + + * README, Jamfile (RefDoc), + builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html, + builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html, + builds/win32/visualc/freetype.dsp, + builds/win32/visualc/freetype.vcproj, + builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp, + builds/win32/visualce/freetype.vcproj, + builds/win32/visualce/index.html, + builds/wince/vc2005-ce/freetype.vcproj, + builds/wince/vc2005-ce/index.html, + builds/wince/vc2008-ce/freetype.vcproj, + builds/wince/vc2008-ce/index.html: s/2.4.2/2.4.3/, s/242/243/. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 3. + + * builds/unix/configure.raw (version_info): Set to 12:1:6. + +2010-10-03 Werner Lemberg + + Avoid `configure' issues with symbolic links. + Based on a patch from Alexander Stohr . + + * configure: Compare directories using `ls -id'. + Check existence of `reference' subdirectory before creating it. + +2010-10-02 Werner Lemberg + + Fix Savannah bug #31088 (sort of). + + * src/sfnt/ttload.c (tt_face_load_maxp): Always allocate at least 64 + function entries. + +2010-10-02 Werner Lemberg + + [smooth] Fix splitting of cubics for negative values. + + Reported by Róbert Márki ; see + http://lists.gnu.org/archive/html/freetype/2010-09/msg00019.html. + + * src/smooth/ftgrays.c (gray_render_cubic): Fix thinko. + +2010-10-01 suzuki toshiya + + Fix Savannah bug #31040. + + * src/truetype/ttinterp.c (free_buffer_in_size): Remove. + (TT_RunIns): Updated. + +2010-09-20 suzuki toshiya + + [sfnt] Make error message filling NULL names less verbose. + + * src/sfnt/ttpost.c (load_format_20): Showing 1 summary message + when we fill `post' names by NULL, instead of per-entry message. + +2010-09-20 Graham Asher + David Bevan + + [smooth] Fix and improve spline flattening. + + This fixes the flattening of cubic, S-shaped curves and speeds up + the handling of both the conic and cubic arcs. + + See the discussions on the freetype-devel mailing list in late + August and September 2010 for details. + + * src/smooth/ftgrays.c (FT_MAX_CURVE_DEVIATION): New macro. + (TWorker): Remove `conic_level' and `cubic_level' elements. + (gray_render_conic): Simplify algorithm. + (gray_render_cubic): New algorithm; details are given in the code + comments. + (gray_convert_glyph): Remove heuristics. + +2010-09-19 Werner Lemberg + + Minor fixes. + + * src/cff/cffload.c (cff_charset_compute_cids): `charset->sids[i]' + is `FT_UShort'. + (cff_index_access_element): Don't use additions in comparison. + * src/sfnt/ttpost.c (load_format_20): Make `post_limit' of type + `FT_Long'. + Don't use additions in comparison. + Improve tracing messages. + (load_format_25, load_post_names): Make `post_limit' of type + `FT_Long'. + +2010-09-19 suzuki toshiya + + [cff] Truncate the element length at the end of the stream. + See Savannah bug #30975. + + * src/cff/cffload.c (cff_index_access_element): `off2', the offset + to the next element is truncated at the end of the stream to prevent + invalid I/O. As `off1', the offset to the requested element has + been checked by `FT_STREAM_SEEK', `off2' should be checked + similarly. + +2010-09-19 suzuki toshiya + + [cff] Ignore CID > 0xFFFFU. + See Savannah bug #30975. + + * src/cff/cffload.c (cff_charset_compute_cids): Ignore CID if + greater than 0xFFFFU. CFF font spec does not mention maximum CID in + the font, but PostScript and PDF spec define that maximum CID is + 0xFFFFU. + +2010-09-19 suzuki toshiya + + [cff] Make trace message in` cff_charset_load' verbose. + See Savannah bug #30975. + + * src/cff/cffload.c (cff_charset_load): Report the original `nleft' + and truncated `nleft'. + +2010-09-19 suzuki toshiya + + [cff] Correct `max_cid' from CID array length to max CID. + See Savannah bug #30975. + + * src/cff/cffload.c (cff_charset_compute_cids): Don't increment + max_cid after detecting max CID. The array CFF_Charset->cids is + allocated by max_cid + 1. + (cff_charset_cid_to_gindex): Permit CID is less than or equal to + CFF_Charset->max_cid. + * src/cff/cffobjs.c (cff_face_init): FT_Face->num_glyphs is + calculated as CFF_Charset->max_cid + 1. + +2010-09-19 suzuki toshiya + + [truetype] Sanitize the broken offsets in `loca'. + See Savannah bug #31040. + + * src/truetype/ttpload.c (tt_face_get_location): If `pos1', the + offset to the requested entry in `glyf' exceeds the end of the + table, return offset=0, length=0. If `pos2', the offset to the next + entry in `glyf' exceeds the end of the table, truncate the entry + length at the end of `glyf' table. + +2010-09-19 suzuki toshiya + + [sfnt] Prevent overrunning in `post' table parser. + See Savannah bug #31040. + + * src/sfnt/ttpost.c (load_post_names): Get the length of `post' + table and pass the limit of `post' table to `load_format_20' and + `load_format_25'. + (load_format_20): Stop the parsing when we reached at the limit of + `post' table. If more glyph names are required, they are filled by + NULL names. + +2010-09-17 suzuki toshiya + + [truetype] Don't duplicate size->twilight structure to be freed. + See Savannah bug #31040 for detail. + + * src/truetype/ttinterp.c (free_buffer_in_size): Don't duplicate + FT_GlyphZoneRec size->twilight to be freed. If duplicated, + `FT_FREE' erases the duplicated pointers only and leave original + pointers. They can cause the double-free crash when the burst + errors occur in TrueType interpreter and `free_buffer_in_size' is + invoked repeatedly. + +2010-09-15 Werner Lemberg + + Make bytecode debugging with FontForge work again. + + * src/truetype/ttinterp.c (TT_RunIns): Don't call + `free_buffer_in_size' in case of error if a debugger is active. + +2010-09-14 Werner Lemberg + + Improve tracing messages. + + * src/truetype/ttinterp.c (TT_RunIns): Improve wording of tracing + message. + * src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep): Add + tracing message. + * src/truetype/ttgload.c (tt_loader_init): Add tracing message. + * src/cache/ftcsbits.c (ftc_snode_load): Emit tracing message if + glyph doesn't fit into a small bitmap container. + +2010-09-13 Werner Lemberg + + Fix minor issues reported by . + + * src/autofit/aflatin.c (af_latin_compute_stem_width): Remove + redundant conditional check. + * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Ditto. + * src/cff/cffload.c (cff_encoding_load): Remove conditional check + which always evaluates to `true'. + * src/pshinter/pshalgo.c (ps_glyph_interpolate_strong_points): + Ditto. + * src/truetype/ttinterp.c (Ins_IUP): Ditto. + * src/cid/cidgload.c (cid_slot_load_glyph): Don't check for NULL if + value is already dereferenced. + * src/winfonts/winfnt.c (FNT_Load_Glyph): Fix check of `face'. + +2010-08-31 suzuki toshiya + + Ignore the environmental setting of LIBTOOL. + Patch is suggested by Adrian Bunk, to prevent unexpected + reflection of environmental LIBTOOL. See: + http://savannah.nongnu.org/patch/?7290 + + * builds/unix/unix-cc.in: LIBTOOL is unconditionally set to + $(FT_LIBTOOL_DIR)/libtool. FT_LIBTOOL_DIR is set to $(BUILD_DIR) + by default. + * configure: When configured for the building out of source tee, + FT_LIBTOOL_DIR is set to $(OBJ_DIR). + +2010-08-31 suzuki toshiya + + [truetype] Decrease the trace level catching the interpreter error. + + * src/truetype/ttinterp.c (TT_RunIns): Decrease the trace level + showing the error when the interpreter returns with an error, + from` FT_TRACE7' to `FT_TRACE1'. + +2010-08-30 suzuki toshiya + + [truetype] Prevent bytecode reuse after the interpretation error. + + * src/truetype/ttinterp.c (free_buffer_in_size): New function to + free the buffer allocated during the interpretation of this glyph. + (TT_RunIns): Unset FT_Face->size->{cvt_ready,bytecode_ready} if + an error occurs in the bytecode interpretation. The interpretation + of invalid bytecode may break the function definitions and referring + them in later interpretation is danger. By unsetting these flags, + `fpgm' and `prep' tables are executed again in next interpretation. + + This fixes Savannah bug #30798, reported by Robert ÅšwiÄ™cki. + +2010-08-29 Werner Lemberg + + [ftraster] Pacify compiler. + + * src/raster/ftraster.c (ft_black_new) [_STANDALONE_]: `memory' is + not used. + +2010-08-29 Werner Lemberg + + [cff] Allow SIDs >= 65000. + + * src/cff/cffload.c (cff_charset_load): Fix change from 2009-03-20: + The threshold for SIDs is not applicable here. I misinterpreted the + `SID values 65000 and above are available for implementation use' + sentence in the CFF specification. + + Problem reported by Ivan NinÄić . + +2010-08-28 suzuki toshiya + + Force hinting when the font lacks its familyname. + + In Type42 or Type11 font embedded in PostScript & PDF, TrueType sfnt + stream may lack `name' table because they are not required. Hinting + for nameless fonts is safer for PDFs including embedded Chinese + fonts. Written by David Bevan, see: + + http://lists.gnu.org/archive/html/freetype-devel/2010-08/msg00021.html + http://lists.freedesktop.org/archives/poppler/2010-August/006310.html + + * src/truetype/ttobjs.c (tt_check_trickyness): If a NULL pointer by + nameless font is given, TRUE is returned to enable hinting. + +2010-08-28 suzuki toshiya + + Register yet another tricky TrueType font. + + * src/truetype/ttobjs.c (tt_check_trickyness): Add `HuaTianKaiTi?', + a Kaishu typeface paired with `HuaTianSongTi?' by Huatian + Information Industry. + +2010-08-17 Teijo Kinnunen + + Fix Savannah bug #30788. + + * src/cache/ftccache.c (FTC_Cache_Clear): Check `cache->buckets' for + NULL too. + +2010-08-10 Werner Lemberg + + Try to fix Savannah bug #30717 (and probably #30719 too). + + * src/smooth/ftsmooth.c (ft_smooth_render_generic): Add another + overflow test for `width' and `height'. + +2010-08-06 Werner Lemberg + + * Version 2.4.2 released. + ========================= + + + Tag sources with `VER-2-4-2'. + + * docs/CHANGES: Updated. + + * docs/VERSION.DLL: Update documentation and bump version number to + 2.4.2 + + * README, Jamfile (RefDoc), + builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html, + builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html, + builds/win32/visualc/freetype.dsp, + builds/win32/visualc/freetype.vcproj, + builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp, + builds/win32/visualce/freetype.vcproj, + builds/win32/visualce/index.html, + builds/wince/vc2005-ce/freetype.vcproj, + builds/wince/vc2005-ce/index.html, + builds/wince/vc2008-ce/freetype.vcproj, + builds/wince/vc2008-ce/index.html: s/2.4.1/2.4.2/, s/241/242/. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 2. + + * builds/unix/configure.raw (version_info): Set to 12:0:6. + +2010-08-06 suzuki toshiya + + Fix Savannah bug #30648. + + * src/base/ftobjs.c (FT_Done_Library): Specify the order of font + drivers during the face closing process. Type42 faces should be + closed before TrueType faces, because a Type42 face refers to + another internal TrueType face which is created from sfnt[] array on + the memory. + +2010-08-06 Yuriy Kaminskiy + + [raster] Fix valgrind warning. + + * src/raster/ftraster.c (Decompose_Curve) : Access point[0] + only if we don't hit `limit'. + +2010-08-06 suzuki toshiya + + Fix Savannah bug #30658. + + * src/base/ftobjs.c (Mac_Read_POST_Resource): Check that the total + length of collected POST segments does not overrun the allocated + buffer. + +2010-08-06 Yuriy Kaminskiy + + Fix conditional usage of FT_MulFix_i386. + With -ansi flag, gcc does not define `i386', only `__i386__'. + + * include/freetype/config/ftconfig.h, builds/unix/ftconfig.in: + s/i386/__i386__/. + +2010-08-05 Werner Lemberg + + Fix Savannah bug #30657. + + * src/truetype/ttinterp.c (BOUNDSL): New macro. + Change `BOUNDS' to `BOUNDSL' where appropriate. + + * src/truetype/ttinterp.h (TT_ExecContextRec): Fix type of + `cvtSize'. + +2010-08-05 Werner Lemberg + + Fix Savannah bug #30656. + + * src/type42/t42parse.c (t42_parse_sfnts): Protect against negative + string_size. + Fix comparison. + +2010-08-05 suzuki toshiya + + [cff] Don't use any values in decoder after parsing error. + + * src/cff/cffgload.c (cff_slot_load): Skip the evaluations + of the values in decoder, if `cff_decoder_parse_charstrings' + returns any error. + +2010-08-04 Werner Lemberg + + Fix Savannah bug #30644. + + * src/base/ftstream.c (FT_Stream_EnterFrame): Fix comparison. + +2010-08-04 Werner Lemberg + + `make devel' fails if FT_CONFIG_OPTION_OLD_INTERNALS is set. + + * devel/ftoption.h: Synchronize with + include/freetype/config/ftoption.h. + +2010-08-04 suzuki toshiya + + [cff] Improve stack overflow test. + + * src/cff/cffgload.c (cff_decoder_parse_charstrings): Check stack + after execution of operations too. + +2010-07-18 Werner Lemberg + + Add reference counters and to FT_Library and FT_Face objects. + + * include/freetype/freetype.h (FT_Reference_Face): New function. + * include/freetype/ftmodapi.h (FT_Rererence_Library): New function. + + * include/freetype/internal/ftobjs.h (FT_Face_InternalRec, + FT_LibraryRec): New field `refcount'. + + * src/base/ftobjs.c (FT_Open_Face, FT_New_Library): Handle + `refcount'. + (FT_Reference_Face, FT_Reference_Library): Implement new functions. + (FT_Done_Face, FT_Done_Library): Handle `refcount'. + + * docs/CHANGES: Updated. + +2010-07-18 Werner Lemberg + + * Version 2.4.1 released. + ========================= + + + Tag sources with `VER-2-4-1'. + + * docs/CHANGES: Updated. + + * docs/VERSION.DLL: Update documentation and bump version number to + 2.4.1. + + * README, Jamfile (RefDoc), + builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html, + builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html, + builds/win32/visualc/freetype.dsp, + builds/win32/visualc/freetype.vcproj, + builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp, + builds/win32/visualce/freetype.vcproj, + builds/win32/visualce/index.html, + builds/wince/vc2005-ce/freetype.vcproj, + builds/wince/vc2005-ce/index.html, + builds/wince/vc2008-ce/freetype.vcproj, + builds/wince/vc2008-ce/index.html: s/2.4.0/2.4.1/, s/240/241/. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1. + + * builds/unix/configure.raw (version_info): Set to 11:1:5. + +2010-07-17 Werner Lemberg + + [cff] Final try to fix `hintmask' and `cntrmask' limit check. + + Problem reported by Tobias Wolf . + + * src/cff/cffgload.c (cff_decoder_parse_charstrings) + : Sigh. I'm apparently too silly to fix this + correctly in less than three tries. + +2010-07-12 Werner Lemberg + + * Version 2.4.0 released. + ========================= + + + Tag sources with `VER-2-4-0'. + + * docs/CHANGES: Updated. + + * docs/VERSION.DLL: Update documentation and bump version number to + 2.4.0. + + * README, Jamfile (RefDoc), + builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html, + builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html, + builds/win32/visualc/freetype.dsp, + builds/win32/visualc/freetype.vcproj, + builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp, + builds/win32/visualce/freetype.vcproj, + builds/win32/visualce/index.html, + builds/wince/vc2005-ce/freetype.vcproj, + builds/wince/vc2005-ce/index.html, + builds/wince/vc2008-ce/freetype.vcproj, + builds/wince/vc2008-ce/index.html: s/2.3.12/2.4.0/, s/2312/240/. + + * include/freetype/freetype.h (FREETYPE_MINOR): Set to 4. + (FREETYPE_PATCH): Set to 0. + + * builds/unix/configure.raw (version_info): Set to 11:0:5. + +2010-07-12 Werner Lemberg + + Remove C++ warnings. + + */*: Initialize pointers where necessary to make g++ happy. + +2010-07-12 malc + Richard Henderson + + Fix type-punning issues with C++. + + * include/freetype/internal/ftmemory.h (FT_ASSIGNP) [__cplusplus]: + Emulate a `typeof' operator with an inline template which uses + `static_cast'. + +2010-07-11 Werner Lemberg + + Fix C++ compilation issue. + + * src/tools/apinames.c (names_dump) : Fix + type of `dot' variable. + +2010-07-10 suzuki toshiya + + Fix another case reported in Savannah bug #30373. + Permit a face for Type1, Type42 and CFF without charmap, + patch by Tor Andersson. + + * src/type1/t1objs.c (T1_Face_Init): Reset the error if it + is FT_Err_No_Unicode_Glyph_Name. + * src/type42/t42objs.c (T42_Face_Init): Ditto. + * src/cff/cffobjs.c (cff_face_init): Ditto. + +2010-07-09 suzuki toshiya + + Use defined macros to set {platform,encoding}_id. + + * src/bdf/bdfdrivr.c: Include ttnameid.h and use macros to + set charmap.{platfom,encoding}_id. + * src/pcf/pcfdrivr.c: Ditto. + * src/winfonts/winfnt.c: Ditto. + * src/type1/t1objs.c: Ditto. + * src/type42/t42objs.c: Ditto. + * src/cff/cffobjs.c: Ditto. + * src/pfr/pfrobjs.c: Ditto. + +2010-07-09 suzuki toshiya + + Fix Savannah bug #30373. + Too serious check of errors by `FT_CMap_New' since 2010-07-04 + is fixed. Reported by Tor Andersson. + + * include/freetype/fterrdef.h + (PSnames_Err_No_Unicode_Glyph_Name): New error code to + indicate the Unicode charmap synthesis failed because + no Unicode glyph name is found. + + * src/psnames/psmodule.c (ps_unicodes_init): Return + PSnames_Err_No_Unicode_Glyph_Name when no Unicode glyph name + is found in the font. + * src/cff/cffcmap.c (cff_cmap_unicode_init): Return + CFF_Err_No_Unicode_Glyph_Name when no SID is available. + + * src/type1/t1objs.c (T1_Face_Init): Proceed if `FT_CMap_New' + is failed by the lack of Unicode glyph name. + * src/type42/t42objs.c (T42_Face_Init): Ditto. + * src/cff/cffobjs.c (cff_face_init): Ditto. + +2010-07-09 Ken Sharp + + Make ftraster.c compile in stand-alone mode with MSVC compiler. + + * src/raster/ftmisc.h (FT_Int64) [_WIN32, _WIN64]: Fix typedef + since there is no `inttypes.h' for MSVC. + +2010-07-08 Werner Lemberg + + Fix Savannah bug #30361. + + * src/truetype/ttinterp.c (Ins_IUP): Fix bounds check. + +2010-07-06 Werner Lemberg + + Pacify compiler. + + * src/cff/cffload.c (cff_index_get_pointers): Initialize + `new_bytes'. + +2010-07-05 Eugene A. Shatokhin + + Fix Savannah bug #27648. + + * src/base/ftobjs.c (ft_remove_renderer, FT_Add_Module): Call + `raster_done' only if we have an outline glyph format. + +2010-07-05 Werner Lemberg + + Fix Savannah bug #30030. + + * builds/win32/*/freetype.vcproj: Add ftxf86.c. + +2010-07-05 Werner Lemberg + + [cff] Next try to fix `hintmask' and `cntrmask' limit check. + + Problem reported by malc . + + * src/cff/cffgload.c (cff_decoder_parse_charstrings) + : It is possible that there is just a single byte + after the `hintmask' or `cntrmask', e.g., a `return' instruction. + +2010-07-04 suzuki toshiya + + Restrict the number of the charmaps in a rogue-compatible mode. + Fix for Savannah bug #30059. + + * src/cache/ftccmap.c (FTC_CMapCache_Lookup): Replace `16' the + minimum character code passed by a legacy rogue client by... + * include/freetype/config/ftoption.h (FT_MAX_CHARMAP_CACHEABLE): + This. It is undefined when FT_CONFIG_OPTION_OLD_INTERNALS is + undefined (thus the rogue client compatibility is not required). + + * src/cff/cffobjs.c (cff_face_init): Abort the automatic + selection or synthesis of Unicode cmap subtable when the charmap + index exceeds FT_MAX_CHARMAP_CACHEABLE. + * src/sfnt/ttcmap.c (tt_face_build_cmaps): Issue error message + when the charmap index exceeds FT_MAX_CHARMAP_CACHEABLE. + + * src/base/ftobjs.c (find_unicode_charmap): When Unicode charmap + is found after FT_MAX_CHARMAP_CACHEABLE, ignore it and search + earlier one. + (find_variant_selector_charmap): When UVS charmap is found after + FT_MAX_CHARMAP_CACHEABLE, ignore it and search earlier one. + (FT_Select_Charmap): When a charmap matching with requested + encoding but after FT_MAX_CHARMAP_CACHEABLE, ignore and search + earlier one. + (FT_Set_Charmap): When a charmap matching with requested + charmap but after FT_MAX_CHARMAP_CACHEABLE, ignore and search + earlier one. + (FT_Get_Charmap_Index): When a requested charmap is found + after FT_MAX_CHARMAP_CACHEABLE, return the inverted charmap + index. + +2010-07-04 Werner Lemberg + + TrueType hinting is no longer patented. + + * include/freetype/config/ftoption.h, devel/ftoption.h + (TT_CONFIG_OPTION_BYTECODE_INTERPRETER): Define. + (TT_CONFIG_OPTION_UNPATENTED_HINTING): Undefine. + + * docs/CHANGES, docs/INSTALL, include/freetype/freetype.h: Updated. + * docs/TRUETYPE, docs/PATENTS: Removed. + +2010-07-04 suzuki toshiya + + Check error value by `FT_CMap_New'. + + * src/cff/cffobjs.c (cff_face_init): Check error value by + `FT_CMap_New'. + * src/pfr/pfrobjs.c (pfr_face_init): Ditto. + * src/type1/t1jobjs.c (T1_Face_Init): Ditto. + * src/type42/t42jobjs.c (T42_Face_Init): Ditto. + +2010-07-03 Werner Lemberg + + Make ftgrays.c compile stand-alone again. + + * src/smooth/ftgrays.c [_STANDALONE_]: Include `stddef.h'. + (FT_INT_MAX, FT_PtrDist)[_STANDALONE_]: Define. + +2010-07-02 suzuki toshiya + + Additional fix for Savannah bug #30306. + + * src/base/ftobjs.c (Mac_Read_POST_Resource): If the type of the + POST fragment is 0, the segment is completely ignored. The declared + length of the segment is not cared at all. According to Adobe + Technical Note 5040, type 0 segment is a comment only and should not + be loaded for the interpreter. Reported by Robert ÅšwiÄ™cki. + +2010-07-01 Werner Lemberg + + [truetype] Protect against code range underflow. + + * src/truetype/ttinterp.c (DO_JROT, DO_JMPR, DO_JROF): Don't allow + negative IP values. + +2010-07-01 Werner Lemberg + + [truetype] Add rudimentary tracing for bytecode instructions. + + * src/truetype/ttinterp.c (opcode_name) [FT_DEBUG_LEVEL_TRACE]: New + array. + (TT_RunIns): Trace opcodes. + +2010-06-30 Werner Lemberg + + Fix Savannah bug #30263. + + * src/smooth/ftgrays.c (gray_render_span): Use cast to `unsigned + int' to avoid integer overflow. + + * src/smooth/ftsmooth.c (ft_smooth_render_generic): Use smaller + threshold values for `width' and `height'. This is not directly + related to the bug fix but makes sense anyway. + +2010-07-01 suzuki toshiya + + Initial fix for Savannah bug #30306. + + * src/base/ftobjs.c (Mac_Read_POST_Resource): Check `rlen', the + length of fragment declared in the POST fragment header, and prevent + an underflow in length calculation. Some fonts set the length to + zero in spite of the existence of a following 16bit `type'. + Reported by Robert ÅšwiÄ™cki. + +2010-07-01 suzuki toshiya + + Additional fix for Savannah bug #30248 and #30249. + + * src/base/ftobjs.c (Mac_Read_POST_Resource): Check the buffer size + during gathering PFB fragments embedded in LaserWriter PS font for + Macintosh. Reported by Robert ÅšwiÄ™cki. + +2010-06-30 Alexei Podtelezhnikov + + Minor optimizations by avoiding divisions. + + * src/sfnt/ttkern.c (tt_face_load_kern, tt_face_get_kerning): + Replace divisions with multiplication in comparisons. + +2010-06-29 Werner Lemberg + + Fix minor tracing issues. + + * src/cff/cffgload.c, src/truetype/ttgload.c: Adjust tracing levels. + +2010-06-27 Werner Lemberg + + [cff] Really fix `hintmask' and `cntrmask' limit check. + + * src/cff/cffgload.c (cff_decoder_parse_charstrings) + : Fix thinko and handle tracing also. + +2010-06-27 Werner Lemberg + + Fix valgrind warning. + + * src/base/ftoutln.c (FT_Outline_Get_Orientation): Initialize + `result' array. + +2010-06-27 Werner Lemberg + + [cff] Fix memory leak. + + * src/cff/cffgload.c (cff_operator_seac): Free charstrings even in + case of errors. + +2010-06-27 Werner Lemberg + + [cff] Protect against invalid `hintmask' and `cntrmask' operators. + + * src/cff/cffgload.c (cff_decoder_parse_charstrings) + : Ensure that we don't exceed `limit' while parsing + the bit masks of the `hintmask' and `cntrmask' operators. + +2010-06-26 Werner Lemberg + + Fix PFR change 2010-06-24. + + * src/pfr/pfrgload.c (pfr_glyph_load_simple): Really protect against + invalid indices. + +2010-06-26 Werner Lemberg + + Improve PFR tracing messages. + + * src/pfr/pfrgload.c (pfr_glyph_load_rec): Emit tracing messages for + simple and compound glyph offsets. + +2010-06-26 Werner Lemberg + + Fix last PFR change. + + * src/pfr/pfrobjs.c (pfr_face_init): Fix rejection logic. + +2010-06-26 Werner Lemberg + + Fix Savannah bug #30262. + + * src/sfnt/ttload.c (tt_face_load_maxp): Limit `maxComponentDepth' + arbitrarily to 100 to avoid stack exhaustion. + +2010-06-26 Werner Lemberg + + Add some memory checks (mainly for debugging). + + * src/base/ftstream.c (FT_Stream_EnterFrame): Exit with error + if the frame size is larger than the stream size. + + * src/base/ftsystem.c (ft_ansi_stream_io): Exit with error if + seeking a position larger than the stream size. + +2010-06-25 Werner Lemberg + + Fix Savannah bug #30261. + + * src/pfr/pfrobjs.c (pfr_face_init): Reject fonts which contain + neither outline nor bitmap glyphs. + +2010-06-25 Werner Lemberg + + Fix Savannah bug #30254. + + * src/cff/cffload.c (cff_index_get_pointers): Do sanity check for + first offset also. + +2010-06-25 suzuki toshiya + + Initial fix for Savannah bug #30248 and #30249. + + * src/base/ftobjs.c (Mac_Read_POST_Resource): Check the error during + reading a PFB fragment embedded in LaserWriter PS font for Macintosh. + Reported by Robert ÅšwiÄ™cki. + +2010-06-24 Werner Lemberg + + Fix Savannah bug #30247. + + * src/pcf/pcfread.c (pcf_get_metrics): Disallow (invalid) fonts with + zero metrics. + +2010-06-24 Graham Asher + + * src/smooth/ftgrays.c (gray_render_cubic): Fix algorithm. + The previous version was too aggressive, as demonstrated in + http://lists.gnu.org/archive/html/freetype-devel/2010-06/msg00020.html. + +2010-06-24 Werner Lemberg + + */*: Use module specific error names where appropriate. + +2010-06-24 Werner Lemberg + + Fix Savannah bug #30236. + + * src/sfnt/ttcmap.c (tt_face_build_cmaps): Improve check for pointer + to `cmap_table'. + +2010-06-24 Werner Lemberg + + Fix Savannah bug #30235. + + * src/pfr/pfrgload.c (pfr_glyph_load_simple): Protect against + invalid indices if there aren't any coordinates for indexing. + +2010-06-24 Werner Lemberg + + [bdf]: Font properties are optional. + + * src/bdf/bdflib.c (_bdf_readstream): Use special error code to + indicate a redo operation. + (_bdf_parse_start): Handle `CHARS' keyword here too and pass current + input line to `_bdf_parse_glyph'. + +2010-06-23 Werner Lemberg + + Fix Savannah bug #30220. + + * include/freetype/fterrdef.h + (BDF_Err_Missing_Fontboundingbox_Field): New error code. + + * src/bdf/bdflib.c (_bdf_parse_start): Check for missing + `FONTBOUNDINGBOX' field. + Avoid memory leak if there are multiple `FONT' lines (which is + invalid but doesn't hurt). + +2010-06-21 Werner Lemberg + + Fix Savannah bug #30168. + + * src/pfr/pfrgload.c (pfr_glyph_load_compound): Limit the number of + subglyphs to avoid endless recursion. + +2010-06-20 Werner Lemberg + + Fix Savannah bug #30145. + + * src/psaux/psobjs.c (t1_builder_add_contour): Protect against + `outline == NULL' which might happen in invalid fonts. + +2010-06-19 Werner Lemberg + + Fix Savannah bug #30135. + + * src/bdf/bdflib.c (_bdf_list_join): Don't modify value in static + string `empty'. + (_bdf_parse_glyph): Avoid memory leak in case of error. + +2010-06-15 Werner Lemberg + + Fix Savannah bug #30108. + + * src/autofit/afglobal.c (af_face_globals_compute_script_coverage): + Properly mask AF_DIGIT bit in comparison. + +2010-06-11 Werner Lemberg + + Fix Savannah bug #30106. + + Point numbers for FreeType's implementation of hinting masks are + collected before the final number of points of a glyph has been + determined; in particular, the code for handling the `endchar' + opcode can reduce the number of points. + + * src/pshinter/pshalgo.c (psh_glyph_find_strong_points): Assure that + `end_point' is not larger than `glyph->num_points'. + +2010-06-11 Werner Lemberg + + [cff]: Improve debugging output. + + * src/cff/cffgload.c (cff_decoder_parse_charstrings) + : Implement it. + +2010-06-10 Graham Asher + + ftgrays: Speed up rendering of small cubic splines. + + * src/smooth/ftgrays.c (gray_render_cubic): Implement new, + simplified algorithm to find out whether the spline can be replaced + with two straight lines. See this thread for more: + + http://lists.gnu.org/archive/html/freetype-devel/2010-06/msg00000.html + +2010-06-09 Werner Lemberg + + Fix Savannah bug #30082. + + * src/cff/cffgload.c (cff_decoder_parse_charstrings) + : Protect against stack underflow. + +2010-06-08 Werner Lemberg + + Fix Savannah bug #30053. + + * src/cff/cffparse.c (cff_parse_real): Handle border case where + `fraction_length' has value 10. + +2010-06-07 Werner Lemberg + + Fix Savannah bug #30052. + This bug has been introduced with commit 2415cbf3. + + * src/base/ftobjs.c (FT_Get_First_Char, FT_Get_Next_Char): Protect + against endless loop in case of corrupted font header data. + +2010-05-26 Werner Lemberg + + Remove unused variable. + Found by Graham. + + * src/autofit/afhints.c (af_glyph_hints_reload): Remove unused + variable `first' in first block. + +2010-05-22 Werner Lemberg + + Fix various memory problems found by linuxtesting.org. + + * src/base/ftgxval.c (FT_TrueTypeGX_Free, FT_ClassicKern_Free), + src/base/ftotval.c (FT_OpenType_Free), src/base/ftpfr.c + (ft_pfr_check): Check `face'. + + * src/base/ftobjs.c (FT_Get_Charmap_Index): Check `charmap' and + `charmap->face'. + (FT_Render_Glyph): Check `slot->face'. + (FT_Get_SubGlyph_Info): Check `glyph->subglyphs'. + +2010-05-22 Werner Lemberg + + autofit: Remove dead code. + Suggested by Graham. + + * src/autofit/afhints.c (af_glyph_hints_compute_inflections): + Removed. + (af_glyph_hints_reload): Remove third argument. + Update all callers. + +2010-05-21 Bram Tassyns + + Fix Savannah bug #27987. + + * src/cff/cffobjs.c (remove_subset_prefix): New function. + (cff_face_init): Use it to adjust `cffface->family_name'. + +2010-05-20 Werner Lemberg + + TrueType: Make FreeType ignore maxSizeOfInstructions in `maxp'. + + Acroread does the same. + + * src/truetype/ttgload.c (TT_Process_Composite_Glyph): Call + `Update_Max' to adjust size of instructions array if necessary and + add a rough safety check. + + (load_truetype_glyph): Save `loader->byte_len' before recursive + call. + + * src/truetype/ttinterp.h, src/truetype/ttinterp.c (Update_Max): + Declare it as FT_LOCAL. + +2010-05-18 Hongbo Ni + + Apply Savannah patch #7196. + + * src/cff/cffgload.c (cff_slot_load): Prevent crash if CFF subfont + index is out of range. + +2010-05-11 Werner Lemberg + + * docs/formats.txt: Give pointer to PCF documentation. + Information provided by Alan Coopersmith + . + +2010-05-10 Ken Sharp + + Fix Savannah bug #29846. + + Previously we discovered fonts which used `setcurrentpoint' to set + the initial point of a contour to 0,0. This caused FreeType to + raise an error, because the `setcurrentpoint' operator is only + supposed to be used with the results from an OtherSubr subroutine. + + This was fixed by simply ignoring the error and carrying on. + + Now we have found a font which uses setcurrentpoint to actually + establish a non-zero point for a contour during the course of a + glyph program. FWIW, these files may be produced by an application + called `Intaglio' on the Mac, when converting TrueType fonts to + Type 1. + + The fix allows the new invalid behaviour, the old invalid behaviour + and real proper usage of the operator to work the same way as Adobe + interpreters apparently do. + + (t1_decoder_parse_charstrings): Make `setcurrentpoint' use the top + two elements of the stack to establish unconditionally the current x + and y coordinates. + + Make the `flex' subroutine handling (OtherSubr 0) put the current + x,y coordinates onto the stack, instead of two dummy uninitialised + values. + +2010-04-14 Ken Sharp + + Fix Savannah bug #29444. + + * src/psaux/psobjs.c (t1_builder_start_point): Accept (invalid) + `lineto' immediately after `hsbw', in accordance with Acrobat, GS, + and others. + +2010-04-14 MichaÅ‚ CichoÅ„ + + Fix Savannah bug #27999. + + * src/cache/ftcmanag.c (FTC_Manager_RemoveFaceID): Only remove + selected entry, not all. + +2010-04-06 Jonathan Kew + + Add overflow check to `fvar' table. + + * src/truetype/ttgxvar.c (TT_Get_MM_Var): Check axis and instance + count. + +2010-04-05 Ken Sharp + + Fix Savannah bug #29335. + + * src/raster/ftraster.c (Line_Up): Use slow multiplication to + prevent overflow. This shouldn't have any serious impact on speed, + however. + +2010-04-05 Werner Lemberg + + Add new function `FT_Library_SetLcdFilterWeights'. + + This is based on code written by Lifter + . It fixes + FreeDesktop bug #27386. + + * src/base/ftlcdfil.c (FT_Library_SetLcdFilterWeights): New + function. + + * include/freetype/ftlcdfil.h: Updated. + + * docs/CHANGES: Updated. + +2010-04-01 John Tytgat + + Fix Savannah bug #29404. + + * src/truetype/ttgload.c: Revert change 2752bd1a (check on bit 1 + of `head' table of TrueType fonts). + +2010-03-14 suzuki toshiya + + Fix `multi build' for Tytgat's CFF driver improvement. + + * src/base/cffload.h (cff_index_get_name): Added. + +2010-03-12 suzuki toshiya + + Remove duplicated inclusion of `FT_OUTLINE_H' in ftobjs.c. + + * src/base/ftobjs.c: Remove 2nd inclusion of `FT_OUTLINE_H'. + +2010-03-11 Chris Liddell + + Fix Savannah bug #27442. + + * src/raster/ftraster.c (ft_black_reset): Fix `buffer_size'. + +2010-03-09 Werner Lemberg + + Remove unused variable. + Reported by Graham. + + * src/cff/cffparse.c (cff_parse_real): Remove `rest'. + +2010-03-02 John Tytgat + + Improve CFF string (especially glyphname) lookup performance. + + We do this by avoiding memory allocation and file I/O. This is + Savannah patch #7104. + + * src/cff/cfftypes.h: Include PS cmaps service and + FT_INTERNAL_POSTSCRIPT_HINTS_H. + (CFF_SubFontRec): Remove `num_local_subrs'. + (CFF_FontRec): Add `num_strings', `strings', and `string_pool' + fields. + Remove `string_index' and `num_global_subrs' fields. + Use real types instead of `void' for `pshinter' and `psnames' fields. + + * src/cff/cffload.c: Don't include PS cmaps service. + (cff_index_get_pointers): Add `pool' parameter which allows to + insert an extra NUL character for each String INDEX entry. + (cff_index_get_name): Make it a local function. + (cff_index_get_string): New function. + (cff_subfont_load): Updated. + (cff_font_load): Initialize `num_strings', `strings', and + `string_pool' fields in the `CFF_FontRec' structure. + (cff_index_get_sid_string): Use `cff_index_get_string' instead of + `cff_index_get_name'. + (cff_font_done): Updated. + + * src/cff/cffload.h: Don't include PS cmaps service. + (cff_index_get_string): Added. + (cff_index_get_sid_string): Updated. + + * src/cff/cffobjs.c: Don't include PS cmaps service and + FT_INTERNAL_POSTSCRIPT_HINTS_H. + (cff_size_get_globals_funcs, cff_slot_init): Updated. + (cff_face_init): Follow `cff_index_get_name', + `cff_index_get_string', and `cff_index_get_sid_string' changes. + + * src/cff/cffcmap.c (cff_sid_free_glyph_name): Removed. + (cff_sid_to_glyph_name): Use `cff_index_get_cid_string'. + (cff_cmap_unicode_init): Updated. + + * src/cff/cffdrivr.c: Don't include PS cmap service. + (cff_get_glyph_name): Avoid unnecessary lookup for POSTSCRIPT_CMAPS + service. + (cff_get_glyph_name, cff_ps_get_font_info, cff_get_ros): Follow API + `cff_index_get_sid_string' change. + (cff_get_name_index): Use `cff_index_get_string' instead of + `cff_index_get_name'. + + * src/cff/cffgload.c: Don't include FT_INTERNAL_POSTSCRIPT_HINTS_H. + (cff_decoder_init, cff_decoder_prepare): Updated. + +2010-02-27 Werner Lemberg + + Simplify code. + Suggested by Behdad. + + * src/base/ftobjs.c (FT_Get_First_Char): Don't use a loop since we + call FT_Get_Next_Char anyway if necessary. + +2010-02-26 Behdad Esfahbod + + Improve handling of invalid glyph indices in char->index functions. + + * src/base/ftobjs.c (FT_Get_First_Char, FT_Get_Next_Char): Use a + loop. + +2010-02-18 Chris Liddell + + Fix Savannah bug #28905. + + Initialize phantom points before calling the incremental interface + to update glyph metrics. + + * src/truetype/ttgload.c (tt_get_metrics_incr_overrides) + [FT_CONFIG_OPTION_INCREMENTAL]: New function, split off from... + (tt_get_metrics): This. + Updated. + (load_truetype_glyph): Use tt_get_metrics_incr_overrides. + +---------------------------------------------------------------------------- + +Copyright 2010-2012 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. + + +Local Variables: +version-control: never +coding: utf-8 +End: diff --git a/deps/freetype/ChangeLog.20 b/deps/freetype/ChangeLog.20 new file mode 100644 index 0000000..8fcc5e7 --- /dev/null +++ b/deps/freetype/ChangeLog.20 @@ -0,0 +1,2613 @@ +2002-02-09 Werner Lemberg + + * README: Fix typo. + * docs/CHANGES: Minor fixes. + + + * Version 2.0.8 released. + ========================= + + +2002-02-08 David Turner + + * docs/CHANGES: Updating for 2.0.8. + + * include/freetype/freetype.h: Setting `PATCH_LEVEL' to 8 and + removing `FT_Get_Next_Char' from the API (temporarily). + + * include/freetype/freetype.h: Adding comments to FT_Get_Next_Char; + note that this function might temporarily be removed for the 2.0.8 + release. + +2002-02-07 David Turner + + * src/pcf/pcfread.c (pcf_load_font): Removed immature support of + the AVERAGE_WIDTH property. + +2002-02-06 David Turner + + * src/sfnt/sfobjs.c (SFNT_Load_Face): Since many fonts embedded in + PDF documents do not include 'cmap', 'post' and 'name' tables, the + SFNT face loader has been changed to not immediately report an + error if these are not present. + + Note that the specification _requires_ these tables, but Adobe + seems to ignore it completely. + + * src/sfnt/ttcmap.c: Removing compiler warnings. + + * src/pcf/pcfread.c (pcf_read_TOC): Use FT_UInt. + (pcf_parse_metric, pcf_parse_compressed_metric): Removed. Code + is now in ... + (pcf_get_metric): Here. + (pcfSeekToType): Renamed to ... + (pcf_seek_to_table_type): This. + Use FT_Int. + (pcfHasType): Renamed to ... + (pcf_has_table_type): This. + Use FT_Int. + (find_property): Renamed to ... + (pcf_find_property): This. + Use FT_Int. + (pcf_get_bitmaps, pcf_get_encodings): Handle invalid PCF fonts + better (delaying format checks out of FT_Access_Frame .. + FT_Forget_Frame blocks to avoid leaving the stream in an incorrect + state when encountering an invalid PCF font). + + * src/pcf/pcfdriver.c (PCF_Done_Face): Renamed to ... + (PCF_Face_Done): This. + (PCF_Init_Face): Renamed to ... + (PCF_Face_Init): This. + (PCF_Get_Char_Index): Renamed to ... + (PCF_Char_Get_Index): This. + (PCF_Get_Next_Char): Renamed to ... + (PCF_Char_Get_Next): This. + (pcf_driver_class): Updated. + + * src/pcf/pcf.h (PCF_Done_Face): Removed. + +2002-02-06 Detlef Würkner + + * src/pcf/pcfdriver.c (FT_Done_Face): Fixed small memory leak. + + * src/pcf/pcfread.c (pcf_load_font): Now handles the `AVERAGE_WIDTH' + property to return correct character pixel (width/height) pairs for + embedded bitmaps. + +2002-02-04 Keith Packard + + Adding the function `FT_Get_Next_Char', doing the obvious thing + w.r.t. the selected charmap. + + * include/freetype/freetype.h: Add prototype. + * include/freetype/internal/ftdriver.h: Add `FTDriver_getNextChar' + typedef. + (FT_Driver_Class): Use it. + * include/freetype/internal/psnames.h: Add `PS_Next_Unicode_Func' + typedef. + (PSNames_Interface): Use it. + * include/freetype/internal/tttypes.h: Add `TT_CharNext_Func' + typedef. + (TT_CMapTable): Use it. + + * src/base/ftobjs.c (FT_Get_Next_Char): New function, implementing + high-level API. + * src/cff/cffdrivr.c (cff_get_next_char): New function. + (cff_driver_class): Add it. + * src/cid/cidriver.c (Cid_Get_Next_Char): New function. + (t1cid_driver_class): Add it. + * src/pcf/pcfdriver.c (PCF_Get_Next_Char): New function. + (pcf_driver_class): Add it. + * src/psnames/psmodule.c (PS_Next_Unicode): New function. + (psnames_interface): Add it. + * src/sfnt/ttcmap.c (code_to_next0, code_to_next2, code_to_next4, + code_to_next6, code_to_next_8_12, code_to_next_10): New auxiliary + functions. + (TT_CharMap_Load): Use them. + * src/truetype/ttdriver.c (Get_Next_Char): New function. + (tt_driver_class): Add it. + * src/type1/t1driver.c (Get_Next_Char): New function. + (t1_driver_class): Add it. + * src/winfonts/winfnt.c (FNT_Get_Next_Char): New function. + (winfnt_driver_class): Add it. + + * src/pcf/pcfread.c (pcf_load_font): For now, report Unicode for + Unicode and Latin 1 encodings. + +2002-02-02 Keith Packard + + * builds/unix/freetype-config.in: Add missing `fi'. + + + * Version 2.0.7 released. + ========================= + + +2002-02-01 David Turner + + * include/freetype/freetype.h: Increasing FREETYPE_PATCH to 7 + for the new release. + +2002-01-31 David Turner + + * README, README.UNX, docs/CHANGES: Updating documentation for the + 2.0.7 release. + +2002-01-30 David Turner + + * INSTALL: Moved to ... + * docs/INSTALL: Here to avoid conflicts with the `install' script on + Windows, where the filesystem doesn't preserve case. + +2002-01-29 David Turner + + * configure: Fixed the script. It previously didn't accept more + than one argument correctly. For example, when typing: + + ./configure --disable-shared --disable-nls + + the `--disable-nls' was incorrectly sent to the `make' program. + +2002-01-29 Werner Lemberg + + * README.UNX: Fix typo. + * builds/unix/install.mk (uninstall): Fix library name for libtool. + +2002-01-28 Francesco Zappa Nardelli + + * src/pcf/pcfdriver.c (PCF_Done_Face): Fix incorrect destruction of + the face object (face->toc.tables, face->root.family_name, + face->root.available_size, face->charset_encoding, + face->charset_registry are now freed). Thanks to Niels Moseley. + +2002-01-28 Roberto Alameda + + * src/type1/t1load.c (parse_encoding): Set `loader->num_chars'. + +2002-01-28 Werner Lemberg + + * src/type1/t1load.c (parse_subrs, parse_charstrings): Use copy + of `base' string for decrypting to not modify the original data. + Based on a patch by Jakub Bogusz . + +2002-01-27 Giuliano Pochini + + * src/smooth/ftgrays.c (gray_render_scanline): Fix bug which caused + bad rendering of thin lines (less than one pixel thick). + +2002-01-25 Werner Lemberg + + * src/cff/cffdrivr.c (cff_get_name_index): Make last patch work + actually. + +2002-01-25 Martin Zinser + + * src/cache/ftccache.c (ftc_node_done, ftc_node_destroy): Fix + compilation warnings. + * src/base/descrip.mms (OBJS): Add `ftmm.obj'. + * src/cache/descrip.mms (ftcache.obj): Dependencies added. + +2002-01-25 WANG Yi + + * src/cff/cffdrivr.c (cff_get_name_index): Fix deallocation bug. + +2002-01-21 Antoine Leca + + * docs/PATENTS: Typo fixed (thanks to Detlef `Hawkeye' Würkner) in + the URL for the online resource. + +2002-01-18 Ian Brown + + * builds/win32/ftdebug.c: New file. + * builds/win32/visualc/freetype.dsp: Updated. + +2002-01-18 Detlef Würkner + + * builds/amiga/src/base/ftsystem.c: Updated for AmigaOS 3.9. + * builds/amiga/README: Updated. + +2002-01-18 Ian Brown + + * builds/win32/visualc/freetype.dsp: Updated. + +2002-01-13 Werner Lemberg + + * builds/unix/freetype2.a4: The script was still buggy. + * builds/unix/freetype-config.in: Make it really work for any install + prefix. + +2002-01-10 Werner Lemberg + + * builds/unix/freetype2.a4: Fix some serious bugs. + +2002-01-09 David Turner + + * builds/unix/configure.ac: Build top-level Jamfile. + +2002-01-09 Maxim Shemanarev + + * src/smooth/ftgrays.c (gray_render_line): Small optimization to + the smooth anti-aliased renderer that deals with vertical segments. + This results in a 5-7% speedup in rendering speed. + +2002-01-08 David Turner + + Added some wrapper scripts to make the installation more + Unix-friendly. + + * configure, install: New files. + + * INSTALL, README.UNX: Updated installation documentation to use the + new 'configure' and 'install' scripts. + +2002-01-07 David Turner + + + * Version 2.0.6 released. + ========================= + + + * docs/BUGS, docs/CHANGES: Updating documentation for 2.0.6 release. + + * src/tools/docmaker.py: Fixed HTML quoting in sources. + (html_format): Replaced with ... + (html_quote): New function. + (html_quote0): New function. + (DocCode::dump_html): Small improvement. + (DocParagraph::dump, DocBlock::html): Use html_quote0 and html_quote. + + * include/freetype/config/ftoption.h: Setting default options for + a release build (debugging off, bytecode interpreter off). + + * src/base/ftobjs.c, src/base/ftoutln.c, src/cache/ftccmap.c, + src/cff/cffload.c, src/cff/cffobjs.c, src/pshinter/pshalgo2.c, + src/sfnt/ttload.c, src/sfnt/ttsbit.c: Removing small compiler + warnings (in pedantic compilation modes). + +2002-01-05 David Turner + + * src/autohint/ahhint.c (ah_align_linked_edge): Modified computation + of auto-hinted stem widths; this avoids color fringes in + `ClearType-like' rendering. + + * src/truetype/ttgload.c (TT_Load_Glyph_Header, + TT_Load_Simple_Glyph, TT_Load_Composite_Glyph, load_truetype_glyph): + Modified the TrueType loader to make it more paranoid; this avoids + nasty buffer overflows in the case of invalid glyph data (as + encountered in the output of some buggy font converters). + +2002-01-04 David Turner + + * README.UNX: Added special README file for Unix users. + + * builds/unix/ftsystem.c (FT_New_Stream): Fixed typo. + + * src/base/ftobjs.c: Added #include FT_OUTLINE_H to get rid + of compiler warnings. + + * src/base/ftoutln.c (FT_Outline_Check): Remove compiler warning. + +2002-01-03 Werner Lemberg + + * src/type1/t1objs.c (T1_Face_Init): Add cast to avoid compiler + warning. + +2002-01-03 Keith Packard + + * builds/unix/ftsystem.c (FT_New_Stream): Added a fix to ensure that + all FreeType input streams are closed in child processes of a `fork' + on Unix systems. This is important to avoid (potential) access + control issues. + +2002-01-03 David Turner + + * src/type1/t1objs.c (T1_Face_Init): Fixed a bug that crashed the + library when dealing with certain weird fonts like `Stalingrad', in + `sadn.pfb' (this font has no full font name entry). + + * src/base/ftoutln.c, include/freetype/ftoutln.h (FT_Outline_Check): + New function to check the consistency of outline data. + + * src/base/ftobjs.c (FT_Load_Glyph): Use `FT_Outline_Check' to + ensure that loaded glyphs are valid. This allows certain fonts like + `tt1095m_.ttf' to be loaded even though it appears they contain + really funky glyphs. + + There still is a bug there, though. + + * src/truetype/ttgload.c (load_truetype_glyph): Fix error condition. + +2001-12-30 David Turner + + * src/autohint/ahhint.c (ah_hinter_load): Fix advance width + computation of auto-hinted glyphs. This noticeably improves the + spacing of letters in KDE and Gnome. + +2001-12-25 Antoine Leca + + * builds/dos/detect.mk: Correcting the order for Borland compilers: + 16-bit bcc was never selected, always overridden by 32-bit bcc32. + +2001-12-22 Francesco Zappa Nardelli + + * src/pfc/pcfread.c (pcf_load_font): Handle property `POINT_SIZE' + and fix incorrect computation of `available_sizes'. + +2001-12-22 David Turner + + * src/autohint/ahhint.c (ah_hinter_load): Auto-hinted glyphs had an + incorrect glyph advance in the case of mono-width fonts (like + Courier, Andale Mono, and others). + +2001-12-22 Detlef Würkner + + * builds/amiga/*: Adaptations to latest changes. + Support added for MorphOS. + +2001-12-22 Werner Lemberg + + * src/pshinter/pshrec.c (FT_COMPONENT): Redefine to `trace_pshrec'. + (ps_mask_table_merge, ps_hints_open, ps_hints_stem, + ps_hints_t1stem3, ps_hints_t2mask, ps_hints_t2counter): Fix + FT_ERROR messages. + * src/pshinter/pshalgo1.c (FT_COMPONENT): Define as + `trace_pshalgo1'. + * src/pshinter/pshalgo2.c (FT_COMPONENT): Define as + `trace_pshalgo2'. + * include/freetype/internal/ftdebug.h (FT_Trace): Updated. + + * docs/modules.txt: New file. + +2001-12-21 David Turner + + * src/pshinter/pshrec.c (ps_hints_t2mask, ps_hints_t2counter): + Ignore invalid `hintmask' and `cntrmask' operators (instead of + returning an error). Glyph 2028 of the CFF font `MSung-Light-Acro' + couldn't be rendered otherwise (it seems its charstring is buggy, + though this requires more analysis). + (FT_COMPONENT): Define. + + * src/cff/cffgload.c (CFF_Parse_CharStrings), src/psaux/t1decode.c + (T1_Decoder_Parse_Charstrings), src/pshinter/pshalgo2.c (*), Fixed a + bug where the X and Y axis where inverted in the postscript hinter. + This caused problem when displaying on non-square surfaces. + + * src/pshinter/pshalgo2.c: s/vertical/dimension/. + + * src/pshinter/pshglob.c (psh_globals_new): Replaced a floating + point constant with a fixed-float equivalent. For some reasons not + all compilers are capable of directly computing a floating pointer + constant casted to FT_Fixed, and will link a math library instead. + +2001-12-20 Werner Lemberg + + * src/cache/ftccache.c (ftc_node_destroy, ftc_cache_lookup): Fix + tracing strings. + * src/cache/ftccmap.c (ftc_cmap_family_init): Ditto. + * src/cache/ftcmanag.c (ftc_family_table_alloc, + ftc_family_table_free, FTC_Manager_Check): Ditto. + * src/cache/ftcsbits.c (ftc_sbit_node_load): Ditto. + + * src/base/ftobjs.c (FT_Done_Library): Remove compiler warning. + +2001-12-20 David Turner + + Added PostScript hinter support to the CFF and CID drivers. + + * include/freetype/internal/cfftypes.h (CFF_Font): New member + `pshinter'. + * src/cff/cffload.c (CFF_Get_Standard_Encoding): New function. + * src/cff/cffload.h: Updated. + * src/cff/cffgload.c (CFF_Init_Builder): Renamed to ... + (CFF_Builder_Init): This. + Added new argument `hinting'. + (CFF_Done_Builder): Renamed to ... + (CFF_Builder_Done): This. + (CFF_Init_Decoder): Added new argument `hinting'. + (CFF_Parse_CharStrings): Implement vstem support. + (CFF_Load_Glyph): Updated. + Add hinting support. + (cff_lookup_glyph_by_stdcharcode): Use CFF_Get_Standard_Encoding(). + (cff_argument_counts): Updated. + * src/cff/cffgload.h: Updated. + * src/cff/cffobjs.c: Include FT_INTERNAL_POSTSCRIPT_HINTS_H. + (CFF_Size_Get_Globals_Funcs, CFF_Size_Done, CFF_Size_Init, + CFF_Size_Reset, CFF_GlyphSlot_Done, CFF_GLyphSlot_Init): New + functions. + (CFF_Init_Face): Renamed to ... + (CFF_Face_Init): This. + Add hinter support. + (CFF_Done_Face): Renamed to ... + (CFF_Face_Done): This. + (CFF_Init_Driver): Renamed to ... + (CFF_Driver_Init): This. + (CFF_Done_Driver): Renamed to ... + (CFF_Driver_Done): This. + * src/cff/cffobjs.h: Updated. + * src/cff/cffdrivr.c (cff_driver_class): Updated. + + * include/freetype/internal/t1types.h (CID_FaceRec): New member + `pshinter'. + * src/cid/cidgload.c (CID_Load_Glyph): Add hinter support. + * src/cid/cidobjs.c: Include FT_INTERNAL_POSTSCRIPT_HINTS_H. + (CID_GlyphSlot_Done, CID_GlyphSlot_Init, CID_Size_Get_Globals_Funcs, + CID_Size_Done, CID_Size_Init, CID_Size_Reset): New functions. + (CID_Done_Face): Renamed to ... + (CID_Face_Done): This. + (CID_Init_Face): Renamed to ... + (CID_Face_Init): This. + Add hinting support. + (CID_Init_Driver): Renamed to ... + (CID_Driver_Init): This. + (CID_Done_Driver): Renamed to ... + (CID_Driver_Done): This. + * src/cid/cidobjs.h: Updated. + * src/cidriver.c: Updated. + + * src/pshinter/pshrec.c (t2_hint_stems): Fixed. + + * src/base/ftobjs.c (FT_Done_Library): Fixed a stupid bug that + crashed the library on exit. + + * src/type1/t1gload.c (T1_Load_Glyph): Enable font matrix + transformation of hinted glyphs. + + * src/cid/cidload.c (cid_read_subrs): Fix error condition. + + * src/cid/cidobjs.c (CID_Face_Done): Fixed a memory leak; the subrs + routines were never released when CID faces were destroyed. + + * src/cff/cffload.h, src/cff/cffload.c, src/cff/cffgload.c: Updated + to move the definition of encoding tables back within `cffload.c' + instead of making them part of a shared header (causing problems in + `multi' builds). This reverts change 2001-08-08. + + * docs/CHANGES: Updated for 2.0.6 release. + * docs/TODO: Added `stem3 and counter hints support' to the TODO + list for the Postscript hinter. + * docs/BUGS: Closed the AUTOHINT-NO-SBITS bug. + +2001-12-19 David Turner + + * include/freetype/cache/ftcache.h: Added comments to indicate that + some of the exported functions should only be used by applications + that need to implement custom cache types. + + * src/truetype/ttgload.c (cur_to_org, org_to_cur): Fixed a nasty bug + that prevented composites from loading correctly, due to missing + parentheses around macro parameters. + + * src/sfnt/sfobjs.c (SFNT_Load_Face): Make the `post' and `name' + tables optional to load PCL fonts properly. + + * src/truetype/ttgload.c (TT_Load_Glyph), src/base/ftobjs.c + (FT_Load_Glyph), include/freetype/freetype.h (FT_LOAD_SBITS_ONLY): + `Fixed' the bug that prevented embedded bitmaps to be loaded when + the auto-hinter is used. This actually is a hack but will be enough + until the internal re-design scheduled for FreeType 2.1. + + * src/raster/ftrend1.c (ft_raster1_render): Fixed a nasty outline + shifting bug in the monochrome renderer. + + * README: Updated version numbers to 2.0.6. + +2001-12-17 Werner Lemberg + + * src/truetype/ttgload.c (load_truetype_glyph): Fix test for invalid + glyph header. + +2001-12-15 Werner Lemberg + + * src/base/ftglyph.c (FT_Glyph_To_Bitmap): Remove compiler warning. + * include/freetype/ftcache.h (FTC_Node_Unref): Removed. It is + already in ftcmanag.h. + * src/cache/ftcsbits.c (ftc_sbit_node_load): Remove unused variable + `gfam'. + * src/cache/ftcmanag.c (ftc_family_table_alloc, + * ftc_family_table_free): Use FT_EXPORT_DEF. + * include/freetype/cache/ftcmanag.h: Updated. + * src/cache/ftccache.c (ftc_node_destroy): Use FT_EXPORT_DEF. + * src/cache/ftccmap.c (ftc_cmap_node_init): Remove unused variable + `cfam'. + Remove compiler warning. + (FTC_CMapCache_Lookup): Remove compiler warnings. + (ftc_cmap_family_init): Ditto. + (FTC_CMapCache_Lookup): Ditto. + + * builds/unix/configure.ac: Increase `version_info' to 8:0:2. + * builds/unix/configure: Regenerated. + +2001-12-14 Werner Lemberg + + * builds/mac/README: Updated. + +2001-12-14 Scott Long + + * src/truetype/ttgload.c (load_truetype_glyph): Fixing crash when + dealing with invalid fonts (i.e. glyph size < 10 bytes). + +2001-12-14 Sam Latinga + + * builds/mac/freetype.make: A new Makefile to build with MPW on + MacOS classic. + +2001-12-14 David Turner + + * src/truetype/ttgload.c (TT_Load_Glyph), src/type1/t1gload.c + (T1_Load_Glyph), src/cid/cidgload.c (CID_Load_Glyph), + src/cff/cffgload.c (CFF_Load_Glyph): Fixed a serious bug common to + all font drivers (the advance width was never hinted when it + should). + + * include/freetype/freetype.h (FREETYPE_PATCH): New macro. + * src/base/ftdbgmem.c (debug_mem_dummy) [!FT_DEBUG_MEMORY]: Don't + use `extern' keyword. + +2001-12-12 David Turner + + * src/pshinter/pshglob.c (psh_blues_scale_zones, psh_blues_snap_stem + psh_globals_new): Adding correct BlueScale/BlueShift support, plus + family blues processing. + * src/pshinter/pshglob.h (PSH_BluesRec): Updated. + + Started adding support for the Postscript hinter in the CFF module. + + * src/cff/cffgload.c: Include FT_INTERNAL_POSTSCRIPT_HINTS_H. + (CFF_Parse_CharStrings): Implement it. + * src/cff/cffgload.h: Updated. + +2001-12-12 Werner Lemberg + + * builds/unix/freetype2.m4: Some portability fixes. + +2001-12-11 Jouk Jansen + + * src/base/descrip.mms (OBJS): Add ftdebug.obj. + +2001-12-11 Werner Lemberg + + * src/sfnt/ttload.c (TT_Load_Generic_Header): Typos. + +2001-12-11 David Turner + + * builds/unix/freetype-config.in: Modified the script to prevent + passing `-L/usr/lib' to gcc. + + * docs/FTL.TXT: Simple fix (change `LICENSE.TXT' to `FTL.TXT'). + + * builds/unix/freetype2.m4: New file for checking configure paths. + We need to install it in $(prefix)/share/aclocal/freetype2.m4 but I + didn't modify builds/unix/install.mk yet. + + * INSTALL: Updated the instructions to build shared libraries with + Jam. They were simply wrong. + + * src/base/fttrigon.c (FT_Cos): Fixed a small bug that caused + slightly improper results for `FT_Cos' and `FT_Sin' (example: + FT_Sin(0) == -1!). + +2001-12-11 Detlef Würkner + + * include/freetype/internal/ftstream.h (GET_LongLE, GET_ULongLE): + Fixed incorrect argument types. + +2001-12-10 Francesco Zappa Nardelli + + * src/pcf/pcfdriver.c (PCF_Init_Face): Allow Xft to use PCF fonts + by setting the `face->metrics.max_advance' correctly. + +2001-12-07 David Turner + + * include/freetype/cache/ftccmap.h, src/cache/ftccmap.c: Added new + charmap cache. + * src/cache/ftcache.c: Updated. + + * src/autohint/ahhint.c (ah_hinter_hint_edges): s/UNUSED/FT_UNUSED/. + +2001-12-06 Leonard Rosenthol + + Added support for reading .dfont files on Mac OS X. Also added a + new routine which looks up a given font by name in the Mac OS and + returns the disk file where it resides. + + * src/base/ftmac.c: Include and . + (is_dfont): New auxiliary function. + (FT_New_Face_From_dfont): New function. + (FT_GetFile_From_Mac_Name): New exported function. + (FT_New_Face): Updated. + * include/freetype/ftmac.h: Updated. + +2001-12-06 David Turner + + * src/cache/Jamfile, src/cache/rules.mk: Updated. + +2001-12-06 Werner Lemberg + + * INSTALL: Small update. + +2001-12-05 David Turner + + * src/base/ftglyph.c (FT_Glyph_To_Bitmap): Re-ordered code for + debugging purposes. + Comment out use of `origin'. + + * src/smooth/ftsmooth.c (ft_smooth_render): Fixed a nasty hidden bug + where outline shifting wasn't correctly undone after bitmap + rasterization. This created problems with certain glyphs (like '"' + of certain fonts) and the cache system. + + * src/pshinter/pshalgo1.c (psh1_hint_table_init): Fix typo. + * src/pshinter/pshalgo2.c (psh2_hint_table_init): Fix typo. + (ps2_hints_apply): Small fix. + +2001-12-05 David Turner + + * src/pshinter/pshalgo2.c (psh2_hint_table_init), + src/pshinter/pshalgo1.c (psh1_hint_table_init): Removed compiler + warnings. + + * include/freetype/ftcache.h, include/freetype/cache/*, src/cache/*: + Yet another massive rewrite of the caching sub-system in order to + both increase performance and allow simpler cache sub-classing. As + an example, the code for the image and sbit caches is now much + simpler. + + I still need to update the documentation in + www/freetype2/docs/cache.html to reflect the new design though. + + * include/freetype/config/ftheader.h (FT_CACHE_CHARMAP_H): New + macro. + (FT_CACHE_INTERNAL_CACHE_H): Updated. + +2001-12-05 David Krause + + * docs/license.txt: s/X Windows/X Window System/. + +2001-12-04 Werner Lemberg + + * src/raster/ftraster.c: Fix definition condition of MEM_Set(). + * src/smooth/ftgrays.c (M_Y): Change value to 192. + * src/base/ftdbgmem.c (ft_mem_table_destroy): Fix printf() parameter. + Remove unused variable. + * src/cache/ftcimage.c (ftc_image_node_init, + ftc_image_node_compare): Remove unused variables. + * src/cache/ftcsbits.c (ftc_sbit_node_weight): Remove unused + variable. + * src/raster/ftraster.c (MEM_Set): Move definition down to avoid + compiler warning. + * src/autohint/ahhint.c (ah_hinter_hint_edges): Use UNUSED() to + avoid compiler warnings. + * src/pcf/pcfread.c (tableNames): Use `const'. + (pcf_read_TOC): Change counter name to avoid compiler warning. + Use `const'. + * src/pshinter/pshrec.c (ps_hints_close): Remove redundant + declaration. + * src/pshinter/pshalgo1.c (psh1_hint_table_init): Rename variables + to avoid shadowing. + * src/pshinter/pshalgo2.c (psh2_hint_table_activate_mask): Ditto. + * src/type1/t1objs.h: Remove double declarations of `T1_Size_Init()' + and `T1_Size_Done()'. + +2001-11-20 Antoine Leca + + * include/freetype/ttnameid.h: Added some new Microsoft language + codes and LCIDs as found in MSDN (Passport SDK). Also added + comments about the meaning of bit 57 of the `OS/2' table + (TT_UCR_SURROGATES) which (with OpenType v.1.3) now means `there is + a character beyond 0xFFFF in this font'. Thanks to Detlef Würkner + for noticing this. + +2001-11-20 David Turner + + * src/pshinter/{pshalgo2.c, pshalgo1.c}: Fixed stupid bug in sorting + routine that created nasty alignment artefacts. + + * src/pshinter/pshrec.c, tests/gview.c: Debugging updates. + + * src/smooth/ftgrays.c: De-activated experimental gamma support. + Apparently, `optimal' gamma tables depend on the monitor type, + resolution and general karma, so it's better to compute them outside + of the rasterizer itself. + (gray_convert_glyph): Use `volatile' keyword. + +2001-10-29 David Turner + + Adding experimental `gamma' support. This produces smoother glyphs + at small sizes for very little cost. + + * src/smooth/ftgrays.c (grays_init_gamma): New function. + (gray_raster_new): Use it. + + Various fixes to the auto-hinter. They merely improve the output of + sans-serif fonts. Note that there are still problems with serifed + fonts and composites (accented characters). + + * src/autohint/ahglyph.c (ah_outline_load, + ah_outline_link_segments): Implement it. + Fix typos. + (ah_outline_save, ah_outline_compute_segments): Fix typos. + * src/autohint/ahhint.c (ah_align_serif_edge): New argument + `vertical'. Implement improvement. + (ah_hint_edges_3, ah_hinter_hint_edges): Implement it. + Fix typos. + (ah_hinter_align_strong_points, ah_hinter_align_weak_points): Fix + typos. + (ah_hinter_load): Set `ah_debug_hinter' if DEBUG_HINTER is defined. + * src/autohint/ahmodule.c: Implement support for DEBUG_HINTER macro. + * src/autohint/ahtypes.h: Ditto. + (AH_Hinter): Remove `disable_horz_edges' and `disable_vert_edges' + (making them global as `ah_debug_disable_horz' and + `ah_debug_disable_vert'). + Fix typos. + + * tests/gview.c: Updated the debugging glyph viewer to show the + hints generated by the `autohint' module. + +2001-10-27 David Turner + + * src/cache/ftcchunk.c (ftc_chunk_cache_lookup): Fixed a bug that + considerably lowered the performance of the abstract chunk cache. + +2001-10-26 David Turner + + * include/freetype/ftcache.h, include/freetype/cache/*.h, + src/cache/*.c: Major re-design of the cache sub-system to provide + better performance as well as an `Acquire'/`Release' API. Seems to + work well here, but probably needs a bit more testing. + +2001-10-26 Leonard Rosenthol + + * builds/mac/README: Updated to reflect my taking over the project + and that is now being actively maintained. + + * src/base/ftmac.c (parse_fond): Applied patches from Paul Miller + to support loading a face other than the + first from a FOND resource. + (FT_New_Face_From_FOND): Updated. + +2001-10-25 Leonard Rosenthol + + * builds/mac/ftlib.prj: Update of CodeWarrior project file for Mac + OS for latest version (7) of CWPro and for recent changes to the FT + source tree. + +2001-10-25 David Turner + + * include/freetype/config/ftoption.h: Updated comments to explain + precisely how to use project-specific macro definitions without + modifying this file manually. + + (FT_CONFIG_FORCE_INT64): Define. + + (FT_DEBUG_MEMORY): New macro. + +2001-10-24 Tom Kacvinsky + + * builds/unix/ftsystem.c (FT_New_Memory): Added a missing `{'. + +2001-10-23 David Turner + + * include/freetype/internal/ftmemory.h, src/base/ftdbgmem.c: + Improvements to the memory debugger to report more information in + case of errors. Also, some allocations that occurred through REALLOC + couldn't be previously caught correctly. + + * src/autohint/ahglyph.c (ah_outline_compute_segments, + ah_outline_compute_edges), src/raster/ftraster.c (ft_black_new), + src/smooth/ftgrays.c (gray_render_span, gray_raster_new): Replaced + liberal uses of memset() by the MEM_Set() macro. + +2001-10-23 David Turner + + * src/raster/ftraster.c (Update): Removed to be inlined in ... + (Sort): Updated. + +2001-10-22 David Turner + + * builds/unix/ftsystem.c (FT_New_Memory, FT_Done_Memory), + builds/vms/ftsystem.c (FT_New_Memory, FT_Done_Memory), + builds/amiga/ftsystem.c (FT_New_Memory, FT_Done_Memory), + src/base/ftdbgmem.c: Updated the memory debugger and + platform-specific implementations of `ftsystem' in order to be able + to debug memory allocations on Unix, VMS and Amiga too! + + * src/pshinter/pshalgo2.c (psh2_hint_table_record_mask): Removed + some bogus warnings. + + * include/freetype/internal/ftmemory.h, src/base/ftdbgmem.c: + Modified the debugging memory manager to report the location (source + file name + line number) where leaked memory blocks are allocated in + the source file. + + * src/base/ftdbgmem.c: New debugging memory manager. You must + define the FT_DEBUG_MEMORY macro in `ftoption.h' to enable it. It + will record every memory block allocated and report simple errors + like memory leaks and double deletes. + + * src/base/Jamfile: Include ftdbgmem. + * src/base/rules.mk: Ditto. + * src/base/ftbase.c: Include ftdbgmem.c. + + * include/freetype/config/ftoption.h: Added the FT_DEBUG_MEMORY + macro definition. + + * src/base/ftsystem.c (FT_New_Memory, FT_Done_Memory): Modified the + base component to use the debugging memory manager when the macro + FT_DEBUG_MEMORY is defined. + +2001-10-21 Tom Kacvinsky + + * src/cff/cffload.c (CFF_Done_Font): Free subfonts array only if + we are working with a CID keyed CFF font. Otherwise, a variable + that was never allocated memory might freed. This is a correction + to the previous patch for freeing subfonts. + +2001-10-21 Tom Kacvinsky + + * src/cff/cffload.c (CFF_Done_Font): Free the subfonts array to + avoid a memory leak. + +2001-10-21 David Turner + + * src/pshinter/pshalgo2.c, src/pshinter/pshalgo1.c, + src/pshinter/pshglob.c: Removing compiler warnings in pedantic modes + (in multi-object compilation mode, mainly). + +2001-10-20 Tom Kacvinsky + + * src/type1/t1load.c (parse_encoding): Add a test to make sure + that custom encodings (i.e., neither StandardEncoding nor + ExpertEncoding) are not loaded twice when the Type 1 font is + synthetic. + + * src/type1/t1load.c (parse_font_name, parse_subrs): Added a test + for when loading synthetic fonts to make sure that the font name + and subroutines are not loaded twice. This is to remove a memory + leak that occurred because the original memory blocks for these + objects were not deallocated when the objects were parsed the + second time. + +2001-10-19 David Turner + + * src/smooth/ftgrays.c, src/pshinter/pshglob.h, + src/pshinter/pshrec.c, src/pshinter/pshalgo2.c: Getting rid of + compiler warnings. + + * src/pshinter/module.mk, src/pshinter/rules.mk: Adding control + files to build the PostScript hinter with the `old' build system. + +2001-10-19 Jacob Jansen + + * descrip.mms, src/pshinter/descrip.mms: Updates to the VMS build + files. + +2001-10-18 David Turner + + * src/psnames/pstables.h, src/tools/glnames.py: Rewrote the + `glnames.py' script used to generate the `pstables.h' header file. + The old one contained a serious bug that made FreeType return + incorrect glyph names for certain glyphs. + + * src/truetype/ttdriver.c (Set_Char_Sizes): Changing computation of + pixel size from character size to use rounding. This is an + experiment to see whether this gives values similar to Windows for + scaled ascent/descent/etc. + + * src/base/ftcalc.c (FT_Div64by32): Changed the implementation + slightly since the original code was mis-compiled on Mac machines + using the MPW C compiler. + + * src/base/ftobjs.c (FT_Realloc): When a memory block was grown + through FT_Realloc(), the new bytes were not set to 0, which created + some strange bugs in the PostScript hinter. + (destroy_face): Don't deallocate unconditionally. + + * src/cid/cidgload.c (CID_Compute_Max_Advance, CID_Load_Glyph): + Adding support to new PostScript hinter. + + * include/freetype/internal/psglobal.h, + include/freetype/internal/pshints.h, + include/freetype/config/ftmodule.h, src/pshinter/Jamfile, + src/pshinter/pshalgo.h, src/pshinter/pshalgo1.h, + src/pshinter/pshalgo1.c, src/pshinter/pshalgo2.h, + src/pshinter/pshalgo2.c, src/pshinter/pshglob.h, + src/pshinter/pshglob.c, src/pshinter/pshinter.c, + src/pshinter/pshmod.c, src/pshinter/pshmod.h, src/pshinter/pshrec.c, + src/pshinter/pshrec.h: Adding new PostScript hinter module. + + * include/freetype/internal/ftobjs.h, + include/freetype/internal/internal.h, + include/freetype/internal/psaux.h, + include/freetype/internal/t1types.h, src/psaux/psobjs.c, + src/psaux/psobjs.h, src/psaux/t1decode.h, src/psaux/t1decode.c, + src/type1/t1driver.c, src/type1/t1gload.c, src/type1/t1objs.c, + src/type1/t1objs.h: Updates to use the new PostScript hinter. + + * tests/Jamfile, tests/gview.c: Adding a new glyph hinting + viewer/debugger to the source tree. Note that you will _not_ be + able to compile it since it depends on an unavailable graphics + library named `Nirvana' to render vector images. + +2001-10-17 David Turner + + + * Version 2.0.5 released. + ========================= + + + * include/freetype/freetype.h, include/internal/ftobjs.h, + src/base/ftobjs.c, src/type1/t1driver.c: Adding a new function named + 'FT_Get_Postscript_Name' to retrieve the PostScript name of a given + font. Should work with all formats except pure CFF/CEF fonts (this + will be added soon). + + * src/cid/cidriver (cid_get_postscript_name): New function. + (CID_Get_Interface): Handle `postscript_name' interface. + + * src/sfnt/sfdriver.c (get_sfnt_postscript_name): New function. + (SFNT_Get_Interface): Handle `postscript_name' interface. + + * src/type1/t1driver.c (t1_get_ps_name): New function. + (Get_Interface): Handle `postscript_name' interface. + + * README, docs/CHANGES: Updated for 2.0.5 release. + +2001-10-08 David Turner + + Fixed a bug in `glnames.py' that prevented it from generating + correct glyph names tables. This resulted in the unavailability of + certain glyphs like `Cacute', `cacute' and `lslash' in Unicode + charmaps, even if these were present in the font (causing problems + for Polish users). + + * src/tools/glnames.py (mac_standard_names): Fixed. + (t1_standard_strings): Some fixes and renamed to ... + (sid_standard_names): This. + (t1_expert_encoding): Fixed. + (the_adobe_glyph_list): Renamed to ... + (adobe_glyph_names): This. + (the_adobe_glyphs): Renamed to ... + (adobe_glyph_values): This. + (dump_mac_indices, dump_glyph_list, dump_unicode_values, main): + Updated. + * src/psnames/pstables.h: Regenerated. + * src/psnames/psmodule.c (PS_Unicode_Value): Fix offset. + Fix return value. + Use `sid_standard_table' and `ps_names_to_unicode' instead of + `t1_standard_glyphs' and `names_to_unicode'. + (PS_Macintosh_Name): Use `ps_glyph_names' instead of + `standard_glyph_names'. + (PS_Standard_Strings): Use `sid_standard_names' instead of + `t1_standard_glyphs'. + + * doc/BUGS, doc/TODO: New documents. + +2001-10-07 Richard Barber + + * src/cache/ftlru.c (FT_Lru_Lookup_Node): Fixed a bug that prevented + correct LRU behaviour. + +2001-10-07 David Turner + + setjmp() and longjmp() are now used for rollback (i.e. when memory + pool overflow occurs). + + Function names are now all uniformly prefixed with `gray_'. + + * src/smooth/ftgrays.c: Include . + (ErrRaster_MemoryOverflow): New macro. + (TArea): New type to store area values in each cell (using `int' was + too small on 16-bit systems). is included to properly + get the needed data type. + (TCell, TRaster): Use it. + (TRaster): New element `jump_buffer'. + (gray_compute_cbox): Use `RAS_ARG' as the only parameter and get + `outline' from it. + (gray_record_cell): Use longjmp(). + (gray_set_cell): Use gray_record_cell() for error handling. + (gray_render_line, gray_render_conic, gray_render_cubic): Simplify. + (gray_convert_glyph_inner): New function, using setjmp(). + (gray_convert_glyph): Use it. + +2001-10-07 David Turner + + Provide a public API to manage multiple size objects for a given + FT_Face in the new header file `ftsizes.h'. + + * include/freetype/ftsizes.h: New header file, + * include/freetype/internal/ftobjs.h: Use it. + Remove declarations of FT_New_Size and FT_Done_Size (moved to + ftsizes.h). + * include/freetype/config/ftheader.h (FT_SIZES_H): New macro. + * src/base/ftobjs.c (FT_Activate_Size): New function. + * src/cache/ftcmanag.c: Include ftsizes.h. + (ftc_manager_init_size, ftc_manager_flush_size): Use + FT_Activate_Size. + +2001-09-20 Detlef Würkner + + * builds/amiga/*: Added port to Amiga with the SAS/C compiler. + +2001-09-15 Detlef Würkner + + * src/type1/t1afm.c (T1_Done_AFM): Free `afm'. + +2001-09-10 Yao Zhang + + * src/sfnt/ttcmap.c (code_to_index2): Handle code values with + hi-byte == 0 correctly. + +2001-09-10 Werner Lemberg + + * builds/link-std.mk ($(PROJECT_LIBRARY)): Fix typo. + +2001-08-30 Martin Muskens + + * src/type1/t1load.c (parse_font_matrix): A new way to compute the + units per EM with greater accuracy (important for embedded T1 fonts + in PDF documents that were automatically generated from TrueType + ones). + + * src/type1/t1load.c (is_alpha): Now supports `+' in font names; + this is used in embedded fonts. + + * src/psaux/psobjs.c (PS_Table_Add): Fixed a reallocation bug that + generated a dangling pointer reference. + +2001-08-30 Anthony Feik + + * src/type1/t1afm.c (T1_Read_Afm): Now correctly sets the flag + FT_FACE_FLAG_KERNING when appropriate for Type1 + AFM files. + +2001-08-25 Werner Lemberg + + * src/sfnt/ttload.c (TT_Load_CMap): Fix frame length of + `cmap_rec_fields'. + + * include/freetype/fterrors.h [!FT_CONFIG_OPTION_USE_MODULE_ERRORS]: + Undefine FT_ERR_BASE before defining again. + +2001-08-22 Werner Lemberg + + * src/truetype/ttinterp.h: Fix prototype of TT_Move_Func. + +2001-08-21 Werner Lemberg + + * builds/dos/dos-def.mk (NO_OUTPUT): Don't use `&>' but `>'. + +2001-08-21 David Turner + + * include/freetype/config/ftoption.h: Changed the default setting + for FT_CONFIG_OPTION_USE_MODULE_ERRORS to undefined, since it breaks + source compatibility in a few cases. Updated the comment to explain + that too. + +2001-08-17 Martin Muskens + + * src/base/ftcalc.c (FT_MulDiv): Fixed serious typo. + +2001-08-12 Werner Lemberg + + Updating to OpenType 1.3. + + * include/freetype/internal/tttypes.h (TT_CMap0, TT_CMap2, TT_CMap4, + TT_CMap6): Adding field `language'. + (TT_CMapTable): Removing field `language'. + Type of `length' field changed to FT_ULong. + Adding fields for cmaps format 8, 10, and 12. + (TT_CMapGroup): New auxiliary structure. + (TT_CMap8_12, TT_CMap10): New structures. + * include/freetype/tttables.h (TT_HoriHeader, TT_VertHeader): + Removed last element of `Reserved' array. + * include/freetype/ttnameid.h (TT_PLATFORM_CUSTOM, TT_MS_ID_UCS_4, + TT_NAME_ID_CID_FINDFONT_NAME): New macros. + + * src/sfnt/ttcmap.c (TT_CharMap_Load): Updated loading of `language' + field to the new structures. + Fixed freeing of arrays in case of unsuccessful loads. + Added support for loading format 8, 10, and 12 cmaps. + (TT_CharMap_Free): Added support for freeing format 8, 10, and 12 + cmaps. + (code_to_index4): Small improvement. + (code_to_index6): Ditto. + (code_to_index8_12, code_to_index10): New functions. + * src/sfnt/ttload.c (TT_Load_Metrics_Header): Updated to new + structure. + (TT_Load_CMap): Ditto. + + * src/sfnt/sfobjs.c (tt_encodings): Add MS UCS4 table (before MS + Unicode). + +2001-08-11 Werner Lemberg + + * src/type1/t1driver.c (t1_get_name_index): Fix compiler warning. + +2001-08-09 Tom Kacvinsky + + * src/cff/cffdrivr.c (get_cff_glyph_name): Renamed to + cff_get_glyph_name for consistency. + + (cff_get_glyph_index): Minor documentation change. + + * src/type1/t1driver.c (t1_get_name_index): New function used in + Get_Interface as the function returned when the `name_index' + function is requested. + + (get_t1_glyph_name): Renamed to t1_get_glyph_name for consistency. + +2001-08-08 Tom Kacvinsky + + * src/cff/cffload.c: Removed definitions of cff_isoadobe_charset, + cff_expert_charset, cff_expertsubset_charset, cff_standard_encoding, + and cff_expert_encoding arrays to cffload.h. + + * src/cff/cffload.h: Added definitions of cff_isoadobe_charset, + cff_expert_charset, cff_expertsubset_charset, cff_standard_encoding, + and cff_expert_encoding arrays. + + * src/cff/cffdrivr.c (cff_get_name_index): New function, returned + when `cff_get_interface' is called with a request for the + `name_index' function. + + (cff_get_interface): Modified so that it returns the function + `cff_get_name_index' when the `name_index' function is requested. + + * src/base/ftobjs.c (FT_Get_Name_Index): New function, used to + return a glyph index for a given glyph name only if the driver + supports glyph names. + + * include/freetype/internal/ftobjs.h (FT_Name_Index_Requester): + New function pointer type definition used in the function + FT_Get_Name_Index. + + * include/freetype/freetype.h (FT_Get_Name_Index): Added + documentation and prototype. + +2001-07-26 Werner Lemberg + + * builds/cygwin/*: Removed. Use the unix stuff instead. + +2001-07-26 Jouk Jansen + + * builds/vms/ftconfig.h (FT_CALLBACK_DEF): Updated to change dated + 2001-06-27. + +2001-07-17 Werner Lemberg + + * include/freetype/internal/psaux.h (PS_Table): Use FT_Offset for + `cursor' and `capacity'. + * src/psaux/psobjc.c (reallocate_t1_table): Use FT_Long for second + parameter. + (PS_Table_Add): Use FT_Offset for `new_size'. + + Add support for version 0.5 maxp tables. + + * src/sfnt/ttload.c (TT_Load_MaxProfile): Implement it. + (TT_Load_OS2): Initialize some values. + +2001-07-13 Werner Lemberg + + * src/base/ftsynth.c: Include ftcalc.h unconditionally. + +2001-07-07 David Turner + + * src/truetype/ttgload.c, src/truetype/ttinterp.c, src/pcf/pcfread: + Removed pedantic compiler warnings when the bytecode interpreter is + compiled in. + +2001-07-03 Werner Lemberg + + * src/autohint/ahhint.c (ah_hinter_align_weak_points): Remove + unused variable `edges'. + (ah_hinter_load): Remove unused variables `old_width' and + `new_width'. + * src/cid/cidload.c (cid_decrypt): Use `U' for constant (again). + * src/psaux/psobjs.c (T1_Decrypt): Ditto. + * src/type1/t1parse.c (T1_Get_Private_Dict): Ditto. + +2001-06-28 David Turner + + * include/internal/ftstream.h: Modified the definitions + of the FT_GET_XXXX and NEXT_XXXX macros for 16-bit correctness. + +2001-06-26 Werner Lemberg + + * src/cid/cidload.c, src/cid/cidload.h (cid_decrypt): Use FT_Offset + instead of FT_Int as type for `length' parameter. + * include/freetype/internal/psaux.h (PSAux_Interface): Updated. + +2001-06-27 Wolfgang Domröse + + * src/psaux/psobjs.c, src/psaux/psobjs.h (T1_Decrypt): Use FT_Offset + instead of FT_Int as type for `length' parameter. + + + * Version 2.0.4 released. + ========================= + + +2001-06-27 David Turner + + * builds/unix/ftconfig.in: Changed the definition of the + FT_CALLBACK_DEF macro. + + * include/freetype/ftconfig.h, src/*/*.c: Changed the definition and + use of the FT_CALLBACK_DEF macro in order to support 16-bit + compilers. + + * builds/unix/ftconfig.in: Changed the definition of the + FT_CALLBACK_DEF macro. + + * src/sfnt/ttload.c (TT_Load_Kern): The kern table loader now ensures + that the kerning table is correctly sorted (some problem fonts don't + have a correct kern table). + +2001-06-26 Wolfgang Domröse + + * include/freetype/internal/ftstream.h (FT_GET_OFF3_LE): Fix typo. + +2001-06-24 David Turner + + * src/base/ftcalc.c (ft_div64by32): Fixed the source to work + correctly on 16-bit systems. + +2001-06-23 Anthony Fok + + * debian/*: Added Debian package build directory for 2.0.4. + +2001-06-22 David Turner + + * docs/PATENTS: Added patents disclaimer. This one was missing! + + * docs/CHANGES, docs/todo: Updated for the upcoming 2.0.4 release. + +2001-06-20 Werner Lemberg + + * include/freetype/config/ftconfig.h: Add two more `L's to + constants. + Add missing semicolons. + + * builds/toplevel.mk: Do similar change as for + builds/unix/detect.mk. + + * include/freetype/freetype.h (FT_ENC_TAG): New version to make it + easier to redefine. + * include/freetype/ftimage.h (FT_IMAGE_TAG): Ditto. + + * src/pcf/pcfread.c (pcf_get_encodings): Add cast. + +2001-06-19 David Turner + + * builds/win32/visualc/freetype.dsp, builds/win32/visualc/index.html: + Updated the Visual C++ project (for the 2.0.4 release). + + * builds/unix/detect.mk: Added rule for AIX detection (which uses + /usr/sbin/init instead of /sbin/init). + + * include/freetype/fterrors.h, src/*/*err*.h: Updated some of the + error macros to simplify handling of new error scheme. + +2001-06-19 Werner Lemberg + + * include/freetype/fttypes.h (FT_ERROR_MODULE): New macro. + +2001-06-19 David Turner + + Removing _lots_ of compiler warnings when the most pedantic warning + levels of Visual C++ and Borland C++ are used. Too many files to be + listed here, but FT2 now compiles without warnings with VC++ and the + `/W4' warning level (lint-style). + + * include/freetype/freetype.h (FT_New_Memory_Face): Updated + documentation. + * include/freetype/fttypes.h (FT_BOOL): New macro. + * include/freetype/internal/ftdebug.h: Add #pragma for Visual C++ + to suppress warning. + * include/freetype/internal/ftstream.h (FT_GET_SHORT_{BE,LE}, + FT_GET_OFF3_{BE,LE}, FT_GET_LONG_{BE,LE}): New macros. + (NEXT_*): Use them. + * src/autohint/ahglobal.c: Include FT_INTERNAL_DEBUG_H. + (FT_New_Memory_Face): Add `const' to function declaration. + +2001-06-18 Werner Lemberg + + Minor cleanups to remove compiler warnings. + + * include/freetype/cache/ftcmanag.h (FTC_MAX_BYTES_DEFAULT): Use + `L' for constant. + * include/freetype/config/ftoption.h (FT_RENDER_POOL_SIZE): Ditto. + * src/base/ftcalc.c (FT_MulDiv): Use `L' for constant. + * src/base/ftglyph.c (FT_Glyph_Get_CBox): Remove `error' variable. + * src/base/fttrigon.c (ft_trig_arctan_table): Use `L' for constants. + * src/base/ftobjs.c (FT_Done_Size): Fix return value. + (FT_Set_Char_Size, FT_Set_Pixel_Sizes, FT_Get_Kerning): Remove + unused `memory' variable. + * src/autohint/ahglyph.c (ah_get_orientation): Use `L' for constant. + * src/autohint/ahhint.c (ah_hint_edges_3, + ah_hinter_align_edge_points): Remove unused `before' and `after' + variables. + (ah_hinter_align_weak_points): Remove unused `edge_limit' variable. + (ah_hinter_load): Remove unused `new_advance', `start_contour', + and `metrics' variables. + * src/cff/cffload.c (CFF_Load_Encoding): Remove dead code to avoid + compiler warning. + * src/cff/cffobjs.c (CFF_Init_Face): Remove unused `base_offset' + variable. + * src/cff/cffgload.c (CFF_Parse_CharStrings): Remove unused + `outline' variable. + (cff_compute_bias): Use `U' for constant. + * src/cid/cidload.c (cid_decrypt): Ditto. + * src/psaux/psobjs.c (T1_Decrypt): Ditto. + * src/psaux/t1decode.c (T1_Decoder_Parse_CharStrings): Ditto. + * src/sfnt/ttload.c (TT_Load_Kern): Remove unused `version' + variable. + * src/sfnt/ttsbit.c (TT_Load_SBit_Image): Remove unused `top' + variable. + * src/truetype/ttgload.c (load_truetype_glyph): Remove unused + `num_contours' and `ins_offset' variables. + (compute_glyph_metrics): Remove unused `Top' and `x_scale' + variables. + (TT_Load_Glyph): Remove unused `memory' variable. + * src/smooth/ftgrays.c (grays_raster_render): Use `L' for constants. + +2001-06-18 Werner Lemberg + + Make the new error scheme source compatible with older FT versions + by introducing another layer. + + * include/freetype/fterrors.h (FT_ERRORDEF_, FT_NOERRORDEF_): New + macros. + (FT_NOERRORDEF): Removed. + * include/*/*err*.h: Use FT_ERRORDEF_ and FT_NOERRORDEF_. + +2001-06-16 Werner Lemberg + + * include/freetype/freetype.h (FT_ENC_TAG): New macro. + (FT_Encoding_): Use it. + * include/freetype/ftimage.h (FT_IMAGE_TAG): Define it + conditionally. + +2001-06-14 David Turner + + Modified the TrueType interpreter to let it use the new + trigonometric functions provided in `fttrigon.h'. This gets rid of + some old 64-bit computation routines, as well as many warnings when + compiling the library with the `long long' 64-bit integer type. + + * include/freetype/config/ftoption.h: Undefine + FT_CONFIG_OPTION_OLD_CALCS. + * include/freetype/internal/ftcalc.h: Rearrange use of + FT_CONFIG_OPTION_OLD_CALCS. + * src/base/ftcalc.c: Add declaration of FT_Int64 if + FT_CONFIG_OPTION_OLD_CALCS isn't defined. + * src/truetype/ttinterp.c: Use FT_TRIGONOMETRY_H. + (Norm): Add a special version if FT_CONFIG_OPTION_OLD_CALCS isn't + defined. + (Current_Ratio, Normalize): Simplify code. + +2001-06-11 Mike Owens + + * src/base/ftcalc.c (FT_MulDiv, FT_DivFix, FT_Sqrt64): Remove + compiler warnings. + +2001-06-08 Werner Lemberg + + * builds/unix/configure.in: Renamed to ... + * builds/unix/configure.ac: This to make sure that autoconf 2.50 is + needed. + Run `autoupdate' on it. + Increase `version_info' to 7:0:1. + * builds/unix/configure: Regenerated. + +2001-06-08 David Turner + + * src/autohint/ahhint.c (ah_hinter_load_glyph): Fixed a bug that + corrupted transformed glyphs that were auto-hinted (the transform + was applied twice). + + Fixed a bug that returned an invalid linear width for composite + TrueType glyphs. + + * include/internal/tttypes.h (TT_Loader_): Two new elements `linear' + and `linear_def'. + * src/truetype/ttgload.c (load_truetype_glyph, + compute_glyph_metrics): Use it. + + * include/fttypes.h (FT_ERROR_BASE): New macro. + * src/base/ftobjs.c (FT_Open_Face, FT_Render_Glyph_Internal): Use it + to make source code work with the new error scheme implemented by + Werner. + * src/base/ftoutln.c (FT_Outline_Render): Ditto. + +2001-06-07 Werner Lemberg + + Updating to libtool 1.4.0 and autoconf 2.50. + + * builds/unix/ltconfig: Removed. + * builds/unix/ltmain.sh, builds/unix/configure.in, + builds/unix/aclocal.m4: Updated. + * builds/unix/configure: Regenerated. + +2001-06-06 Werner Lemberg + + Complete redesign of error codes. Please check ftmoderr.h for more + details. + + * include/freetype/internal/cfferrs.h, + include/freetype/internal/tterrors.h, + include/freetype/internal/t1errors.h: Removed. Replaced with files + local to the module. All extra error codes have been moved to + `fterrors.h'. + + * src/sfnt/ttpost.h: Move error codes to `fterrors.h'. + + * src/autohint/aherrors.h, src/cache/ftcerror.h, src/cff/cfferrs.h, + src/cid/ciderrs.h, src/pcf/pcferror.h, src/psaux/psauxerr.h, + src/psnames/psnamerr.h, src/raster/rasterrs.h, src/sfnt/sferrors.h, + src/smooth/ftsmerrs.h, src/truetype/tterrors.h, + src/type1/t1errors.h, src/winfonts/fnterrs.h: New files defining the + error names for the module it belongs to. + + * include/freetype/ftmoderr.h: New file, defining the module error + offsets. Its structure is similar to `fterrors.h'. + + * include/freetype/fterrors.h (FT_NOERRORDEF): New macro. + (FT_ERRORDEF): Redefined to use module error offsets. + All internal error codes are now public; unused error codes have + been removed, some are new. + + * include/freetype/config/ftheader.h (FT_MODULE_ERRORS_H): New + macro. + * include/freetype/config/ftoption.h + (FT_CONFIG_OPTION_USE_MODULE_ERRORS): New macro. + + All other source files have been updated to use the new error codes; + some already existing (internal) error codes local to a module have + been renamed to give them the same name as in the base module. + + All make files have been updated to include the local error files. + +2001-06-06 Werner Lemberg + + * src/cid/cidtokens.h: Replaced with... + * src/cid/cidtoken.h: This file for 8+3 consistency. + + * src/raster/ftraster.c: Use macros for header file names. + + * src/include/freetype/tttables.h (TT_HoriHeader_, TT_VertHeader_): + Fix length of `Reserved' array. Note that this isn't the real fix + since recent OpenType specs have introduced a `CaretOffset' field + instead of the first reserved byte. + +2001-05-29 Werner Lemberg + + * INSTALL: Minor fixes. + + + * Version 2.0.3 released. + ========================= + + +2001-05-29 David Turner + + * INSTALL, docs/CHANGES: Updated. + +2001-05-25 David Turner + + Moved several documents from the top-level to the `docs' directory. + + * src/base/ftcalc.c (FT_DivFix): Small fix to return value. + +2001-05-16 David Turner + + * src/truetype/ttgload.c (load_truetype_glyph): Fixed a bug in the + composite loader. Spotted by Keith Packard. + * src/base/ftobjs.c (FT_GlyphLoader_Check_Points, + FT_GlyphLoader_Check_Subglyphs): Ditto. + +2001-05-14 David Turner + + Fixed the incorrect blue zone computations, and improved the + composite support. Note that these changes result in improved + rendering, while sometimes introducing their own artefacts. This is + probably the last big change to the autohinter before the + introduction of a complete replacement. + + * src/autohint/ahglobal.c (sort_values): Fix loop. + * src/autohint/ahglyph.c: Removed some obsolete code. + (ah_outline_compute_edges): Modify code to set the ah_edge_round + flag. + (ah_outline_compute_blue_edges): Add code to compute active blue + zones. + * src/autohint/ahhint.c (ah_hinter_glyph_load): Change load_flags + value. + + * src/base/ftcalc.c (FT_DivFix): Fixed a bug in the 64-bit code that + created incorrect scale factors! + (FT_Round_Fix, FT_CeilFix, FT_FloorFix): Minor improvements. + +2001-05-12 Werner Lemberg + + * include/freetype/ftbbox.h: FTBBOX_H -> __FTBBOX_H__. + * include/freetype/fttrigon.h: __FT_TRIGONOMETRY_H__ -> + __FTTRIGON_H__. + Include FT_FREETYPE_H. + Beautified; added copyright. + * src/base/fttrigon.c: Beautified; added copyright. + +2001-05-11 David Turner + + * src/cff/cffparse.c (cff_parse_font_matrix), src/cid/cidload.c + (parse_font_matrix), src/type1/t1load.c (parse_font_matrix): Fixed + the incorrect EM size computation. + + * include/freetype/fttrigon.h, src/base/fttrigon.c: New files, + adding trigonometric functions to the core API (using Cordic + algorithms). + * src/base/ftbase.c, src/base/Jamfile, src/base/rules.mk: Use them. + + * builds/newline: New file. + * builds/top_level.mk, builds/detect.mk: Use it. This fixes + problems with Make on Windows 2000, as well as problems when `make + distclean' is invoked on a non-Unix platform when there is no + `config.mk' in the current directory. + + * builds/freetype.mk: Fixed a problem with object deletions under + Dos/Windows/OS/2 systems. + + Added new directory to hold tools and test programs. + + * docs/docmaker.py, docs/glnames.py: Moved to... + * src/tools/docmaker.py, src/tools/glnames.py: This place. + * src/tools/cordic.py: New file used to compute arctangent table + needed by fttrigon.c. + * src/tools/test_bbox.c, src/tools/test_trig.c: New test files. + + * src/tools/docmaker.py: Improved the script to add the current date + at the footer of each web page (useful to distinguish between + versions). + + * Jamfile: Fixed incorrect HDRMACRO argument. + + * TODO: Removed the cubic arc bbox computation note, since it has been + fixed recently. + * src/base/ftbbox.c (test_cubic_zero): Renamed to... + (test_cubic_extrema): This function. Use `UL' for unsigned long + constants. + + * include/freetype/t1tables.h, include/freetype/config/ftoption.h: + Formatting. + +2001-05-10 David Turner + + * src/base/ftobjs.c (FT_Open_Face): Fixed a small memory leak + which happened when trying to open 0-size font files! + +2001-05-09 Werner Lemberg + + * include/freetype/internal/ftcalc.h: Move declaration of + FT_SqrtFixed() out of `#ifdef FT_LONG64'. + +2001-05-08 Francesco Zappa Nardelli + + * src/pcfdriver.c (PCF_Load_Glyph): Fixed incorrect bitmap width + computation. + +2001-05-08 David Turner + + * docs/docmaker.py: Updated the DocMaker script in order to add + command line options (--output,--prefix,--title), fix the erroneous + line numbers reported during errors and warnings, and other + formatting issues. + + * src/base/ftcalc.c (FT_MulDiv, FT_MulFix, FT_DivFix): Various tiny + fixes related to rounding in 64-bits routines and + pseudo-`optimizations'. + +2001-04-27 David Turner + + * src/base/ftbbox.c (BBox_Cubic_Check): Fixed the coefficient + normalization algorithm (invalid final bit position, and invalid + shift computation). + +2001-04-26 Werner Lemberg + + * builds/unix/config.guess, builds/unix/config.sub: Updated to + latest versions from gnu.org. + + * builds/compiler/gcc-dev.mk: Add `-Wno-long-long' flag. + + * include/freetype/internal/ftcalc.h: Define FT_SqrtFixed() + unconditionally. + * src/base/ftbbox.c: Include FT_INTERNAL_CALC_H. + Fix compiler warnings. + * src/base/ftcalc.c: Fix (potential) compiler warnings. + +2001-04-26 David Turner + + * src/base/ftcalc.c (FT_SqrtFixed): Corrected/optimized the 32-bit + fixed-point square root computation. It is now used even with + 64-bits integers, as it is _much_ faster than calling FT_Sqrt64 :-) + + * src/base/ftbbox.c: Removed invalid `#include FT_BEZIER_H' line. + +2001-04-25 David Turner + + * src/base/ftbbox.c (BBox_Cubic_Check): Rewrote function to use + direct computations with 16.16 values instead of sub-divisions. It + is now slower, but proves a point :-) + + * src/raster/ftraster.c, src/smooth/ftgrays.c, src/base/ftbbox.c: + Fixed the Bézier stack depths. + + * src/base/ftcalc.c (FT_MulFix): Minor rounding fix. + + * builds/beos: Added BeOS-specific files to the old build system + (no changes were necessary to support BeOS in the Jamfile though). + +2001-04-20 David Turner + + * ftconfig.h, ftoption.h: Updated `ftconfig.h' to detect 64-bit int + types on platforms where Autoconf is not available). Also removed + FTCALC_USE_LONG_LONG and replaced it with + FT_CONFIG_OPTION_FORCE_INT64. + + * builds/win32/freetype.dsp: Updated the Visual C++ project file. + Doesn't create a DLL yet. + + * cffgload.c: Removed a compilation warning. + +2001-04-10 Tom Kacvinsky + + * t1load.c (parse_charstrings): Changed code for placing .notdef + glyph into slot 0 so that we no longer have a memory access + violation. + + * t1load.h: In structure T1_Loader, added swap_table (of type + PS_Table) to facilitate placing the .notdef glyph into slot 0. + +2001-04-10 Francesco Zappa Nardelli + + * src/pcf/pcfdriver.c (PCF_Get_Char_Index): Fix return value. + +2001-04-09 Laurence Withers + + * builds/dos/detect.mk: Add support for bash. + +2001-04-05 Werner Lemberg + + * builds/os2/*.mk: These files have been forgotten to update to + the structure of similar makefiles. + * builds/dos/*.mk: Ditto. + * builds/ansi/*.mk: Ditto. + + * builds/win32/win32-def.mk (BUILD): Fix typo. + + * builds/compiler/*.mk (CLEAN_LIBRARY): Don't use NO_OUTPUT. + This is already used in the link_*.mk files. + +2001-04-03 Werner Lemberg + + * src/*/Jamfile: Slight changes to make files more cryptic. + +2001-04-03 Werner Lemberg + + * Jamfile, src/Jamfile, src/*/Jamfile: Formatted. Slight changes + to give files identical structure. + +2001-04-02 Werner Lemberg + + * CHANGES: Reformatted, minor fixes. + * TODO: Updated. + * README: Formatting. + * include/freetype/freetype.h: Formatting. + + * Jamfile: Fix typo. + + * src/cff/cffparse.c: Move error code #defines to... + * include/freetype/internal/cfferrs.h: This file. + * src/cff/cffdrivr.c, src/cff/cffobjs.c, src/cff/cffload.c: Replaced + `FT_Err_*' with `CFF_Err_*'. + * src/cid/cidparse.c: Replaced `FT_Err_*' with `T1_Err_*'. + * src/psaux/psobjs.c, src/psaux/t1decode.c: Ditto. + * src/sfnt/sfobcs.c, src/sfnt/ttload.c: Replaced `FT_Err_*' with + `TT_Err_*'. + * src/truetype/ttgload.c, src/truetype/ttobjs.c: Ditto. + * src/type1/t1gload.c, src/type1/t1load.c, src/type1/t1objs.c, + src/type1/t1parse.c: Replaced `FT_Err_*' with `T1_Err_*'. + + * include/freetype/internal/cfferrs.h: Add + `CFF_Err_Unknown_File_Format'. + * include/freetype/internal/t1errors.h: Add + `T1_Err_Unknown_File_Format'. + * include/freetype/internal/tterrors.h: Add + `TT_Err_Unknown_File_Format'. + + * src/cff/cffload.h: Add `cff_*_encoding' and `cff_*_charset' + references. + * src/psaux/psobjs.c: Include `FT_INTERNAL_TYPE1_ERRORS_H'. + + * src/cff/cffobjs.c (CFF_Init_Face, CFF_Done_Face): Use + FT_LOCAL_DEF. + * src/cid/cidobjs.c (CID_Done_Driver): Ditto. + * src/trutype/ttobjs.c (TT_Init_Face, TT_Done_Face, TT_Init_Size): + Ditto. + * src/type1/t1objs.c (T1_Done_Driver): Ditto. + * src/pcf/pcfdriver.c (PCF_Done_Face): Ditto. + * src/pcf/pcf.h: Use FT_LOCAL for `PCF_Done_Face'. + +2001-04-02 Tom Kacvinsky + + * src/sfnt/ttload.c (TT_Load_Metrics): Fix an improper pointer + dereference. Submitted by Herbert Duerr . + +2001-03-26 Tom Kacvinsky + + * include/freetype/config/ftconfig.h: Changed hexadecimal + constants to use suffix U to avoid problems with HP-UX's c89 + compiler. Submitted by G.W. Lucas . + +2001-03-24 David Turner + + * Jamrules, Jamfile, src/Jamfile, src/*/Jamfile: Adding jamfiles to + the source tree. See www.freetype.org/jam/index.html for details. + + + * Version 2.0.2 released. + ========================= + + +2001-03-20 Werner Lemberg + + * builds/win32/detekt.mk: Fix .PHONY target for Intel compiler. + +2001-03-20 David Turner + + * include/freetype/config/ftheader.h, include/freetype/ftsnames.h: + Renamed `ftnames.h' to `ftsnames.h', and FT_NAMES_H to + FT_SFNT_NAMES_H. + + * docs/docmaker.py: Added generation of INDEX link in table of + contents. + + * INSTALL, docs/BUILD: Updated documentation to indicate that the + compilation process has changed slightly (no more `src' required in + the include path). + + * builds/*/*-def.mk: Changed the objects directory from `obj' to + `objs'. + + * include/freetype/config/ftheader.h: Removed obsolete macros like + FT_SOURCE_FILE, etc. and added cache-specific macro definitions that + were previously defined in . Added comments to + be included in a new API Reference section. + + * src/*/*: Removed the use of FT_SOURCE_FILE, etc. Now, each + component needs to add its own directory to the include path at + compile time. Modified all `rules.mk' and `descrip.mms' + accordingly. + +2001-03-20 Werner Lemberg + + * builds/unix/configure.in: Add $ft_version. + * builds/unix/freetype-config.in: Use it. + * builds/unix/configure: Updated. + +2001-03-19 Tom Kacvinsky + + * src/type1/t1load.c (parse_font_matrix): Assign the units per em + value an unsigned short value, first by shifting right 16 bits, + then by casting the results to FT_UShort. + + * src/cff/cffparse.c (cff_parse_font_bbox): Assign the units per em + value an unsigned short value, first by shifting right 16 bits, + then by casting the results to FT_UShort. + +2001-03-17 David Turner + + * src/cid/cidobjs.c, src/cid/cidload.c, src/pcf/pcfread.c, + src/type1/t1load.c, src/type1/t1objs.c: Added a few casts to remove + compiler warnings in pedantic modes. + + * include/config/ft2build.h, include/config/ftheader.h: The file + `ft2build.h' was renamed to `ftheader.h' to avoid conflicts with the + top-level . + + * include/config/ftheader.h: Added new section describing the #include + macros. + +2001-03-17 Tom Kacvinsky + + * src/cff/cffparse.c (cff_parse_font_bbox): Obtain rounded FT_Fixed + values for the bounding box numbers. + + * src/cff/cffobjs.c (CFF_Init_Face): When processing a CFF/CEF font, + set `root->ascender' (`root->descender') to the integer part of + `root->bbox.yMax' (`root->bbox.yMin', respectively). + +2001-03-16 Tom Kacvinsky + + * src/cff/cffdrivr.c (get_cff_glyph_name): New function. Used in + cff_get_interface to facilitate getting a glyph name for glyph index + via FT_Get_Glyph_Name(). + + (cff_get_interface): Added support for getting a glyph name via the + `glyph_name' module interface. Uses the new function + get_cff_glyph_name(). + Submitted by Sander van der Wal . + + * src/cff/cffobjs.c (CFF_Init_Face): Logical or the face flags with + FT_FACE_FLAG_GLYPH_NAMES only if FT_CONFIG_OPTION_NO_GLYPH_NAMES is + not defined. This is to add support for getting a glyph name from a + glyph index via FT_Get_Glyph_Name(). + Submitted by Sander van der Wal . + + * src/cff/cffgload.c (CFF_Parse_CharStrings): Added support for + deprecated operator `dotsection'. + Submitted by Sander van der Wal . + +2001-03-12 Werner Lemberg + + * src/psaux/t1decode.c (T1_Decoder_Parse_Charstrings): Fix error + messages. + + * INSTALL, docs/BUILD: We need GNU make 3.78.1 or newer. + +2001-03-12 Tom Kacvinsky + + * include/freetype/internal/psaux.h: Changed the lenIV member of + the T1_Decoder_ struct to be an FT_Int instead of an FT_UInt. + + * src/psaux/t1decode.c (T1_Decoder_Parse_Charstrings): Adjust + for lenIV seed bytes at the start of a decrypted subroutine. + + * src/cid/cidload.c (cid_read_subrs): Decrypt subroutines only + if lenIV >= 0. + + * src/cid/cidgload.c (cid_load_glyph): Decrypt charstrings only + if lenIV >= 0. + +2001-03-11 Werner Lemberg + + * TODO: Updated. + + * src/pcf/pcfread.c: Put READ_Fields() always in a conditional to + avoid compiler warnings. + +2001-03-10 Tom Kacvinsky + + * TODO: New file. + + * include/freetype/freetype.h: Added prototypes and notes for + three new functions: FT_RoundFix, FT_CeilFix, and FT_FloorFix. + * src/base/ftcalc.c (FT_RoundFix, FT_CeilFix, FT_FloorFix): Added + implementation code. + + * src/cid/cidobjs.c (CID_Init_Face): Use calculated units_per_EM, + and if that is not available, default to 1000 units per EM. Changed + assignment code for ascender and descender values. + * src/cid/cidload.c (parse_font_matrix): Added units_per_EM + processing. + (parse_font_bbox): Changed to use FT_Fixed number handling. + + * src/type1/t1objs.c (T1_Init_Face): Changed the assignment code + for ascender, descender, and max_advance_width. + * src/type1/t1load.c (parse_font_bbox): Changed to use FT_Fixed + number handling. + +2001-03-10 Henrik Grubbström + + * src/*/*.c: Added many casts to make code more 64bit-safe. + +2001-03-07 Werner Lemberg + + * INSTALL, docs/BUILD: We need GNU make 3.78 or newer. + +2001-03-07 Tom Kacvinsky + + * src/type1/t1objs.c (T1_Init_Face): Minor correction: We must wait + until parse_font_bbox is changed before we use logical shift rights + in the assignments of `root->ascender', `root->descender', and + `root->max_advance_width'. + + (T1_Done_Face): Free `char_name' table to avoid a memory leak. + Submitted by Sander van der Wal . + +2001-03-05 Tom Kacvinsky + + * src/cff/cffgload.c (CFF_Load_Glyph): Set glyph control data to the + the Type 2 glyph charstring (used by conversion programs). + Submitted by Ha Shao . + +2001-03-04 Antoine Leca + + * include/freetype/ttnameid.h: Correct a stupid typo which prevented + correct compilation (TT_MS_LANGID_TIGRIGNA_ETHIOPIA appeared twice). + +2001-03-04 Werner Lemberg + + * src/autohint/ahtypes.h (AH_Hinter): Add elements + `disable_horz_edges', `disable_vert_edges'. + * src/autohint/ahhint.c (ah_hint_edges_3, ah_hinter_hint_edges): Use + them (and remove static variables with the same names). + * src/pcf/pcfutil.c (BitOrderInvert): Add `const'. + * docs/glnames.py: Updated to latest pstables.h changes. + + * builds/unix/detect.mk: Add test for Hurd. + * builds/hurd/detect.mk: Removed. + +2001-03-04 Sander van der Wal + + * src/psnames/pstables.h: Add more `const'. + * src/pcf/pcfutil.c: Ditto. + +2001-03-04 Werner Lemberg + + * src/base/ftglyph.c (FT_Glyph_To_Bitmap): Fixing typo + (FT_Glyph_Done -> FT_Done_Glyph). + +2001-03-01 Antoine Leca + + * include/freetype/ttnameid.h: Added some new Microsoft language + codes and LCIDs as found in Office Xp. + +2001-02-28 David Turner + + * builds/hurd/detect.mk: New file. Added support to detect the GNU + Hurd operating system as Unix-like. Fix submitted by Anthony Fok + . + + * src/type1/t1gload.c (T1_Load_Glyph): Set glyph control data to the + the Type 1 glyph charstring (used by conversion programs). + Submitted by Ha Shao . + +2001-02-22 David Turner + + * src/base/ftgrays.c (grays_sweep): The function didn't exit + immediately if `num_cells' was 0 as it should. Thanks to Boris for + finding this out. + + * src/base/ftglyph.c (FT_Glyph_To_Bitmap): Fixed memory leak when + bitmap rendering fails (thanks to Graham Asher). + +2001-02-13 Werner Lemberg + + * docs/docmaker.py (DocSection::add_element): Use + `self.print_error()'. + + * builds/unix/config.{guess,sub}: Updated (from ftp.gnu.org). + +2001-02-13 David Turner + + * docs/docmaker.py, include/freetype/*.h: Updated the DocMaker + script to support chapters and section block ordering. Updated the + public header files accordingly. + + * src/base/ftglyph.c (FT_Glyph_Copy): Advance width and glyph format + were not correctly copied. + +2001-02-08 Tom Kacvinsky + + * src/cff/cffparse.c (cff_parse_font_matrix): Removed an + unnecessary fprintf( stderr, ... ). + +2001-02-07 Tom Kacvinsky + + * src/type1/t1objs.c (T1_Init_Face): Added code to get the + units_per_EM from the value assigned in parse_font_matrix, if + available. Default to 1000 if not available. + + * src/cff/cffparse.c (cff_parse_font_matrix): Added logic to get + the units_per_EM from the FontMatrix. + + (cff_parse_fixed_thousand): New function. Gets a real number from + the CFF font, but multiplies by 1000 (this is to avoid rounding + errors when placing this real number into a 16.16 fixed number). + + (cff_parse_real): Added code so that the integer part is moved + into the high sixteen bits of the 16.16 fixed number. + + * src/cff/cffobjs.c (CFF_Init_Face): Added logic to get the units + per EM from the CFF dictionary, if available. + + * include/freetype/internal/cfftypes.h: In struct CFF_Font_Dict_, + added a units_per_em member to facilitate passing of units_per_em + from function cff_parse_font_matrix. + + * src/type1/t1load.c (is_alpha): Make `-' a legal alphanumeric + character. This is so that font names with `-' are fully parsed, + etc... + +2001-02-02 Werner Lemberg + + * src/psaux/psobjs.c (shift_elements): Remove if clause (which is + obsolete now). + + (reallocate_t1_table, PS_Table_Done): Replace REALLOC() with ALLOC() + + MEM_Copy() to avoid a memory bug. + +2001-02-01 David Turner + + * docs/docmaker.py: Improved the index sorting routine to place + capital letters before small ones. Added the `' marker to + section blocks in order to give the order of blocks. + +2001-01-30 Antoine Leca + + * include/freetype/ttnameid.h: Latest updates to Microsoft language + ID codes. + +2001-01-24 Tom Kacvinsky + + * src/cff/t1load.c (parse_font_matrix): Added heuristic to get + units_per_EM from the font matrix. + + (parse_dict): Deleted test to see whether the FontInfo keyword has + been seen. Deletion of this test allows fonts without FontInfo + dictionaries to be parsed by the Type 1 driver. + + (T1_Open_Face): Deleted empty subroutines array test to make sure + fonts with no subroutines still are parsed. + +2001-01-17 Francesco Zappa Nardelli + + * src/pcfread.c (pcf_get_properties, pcf_get_metrics, + pcf_get_bitmaps): Fix compiler errors. + +2001-01-11 David Turner + + * src/pcf/pcfread.c: Removed some compilation warnings related + to comparison of signed vs. unsigned integers. + + * include/freetype/internal/ftdebug.h: Changed the debug trace + constants from trace_t2xxxx to trace_cffxxxx to be able to compile + the CFF driver in debug mode. + +2001-01-11 Matthew Crosby + + * builds/unix/freetype-config.in: Fix problems with separate + --prefix and --exec-prefix. + +2001-01-11 David Turner + + * docs/docmaker.py: Added cross-references generation as well as + more robust handling of pathname wildcard matching. + +2001-01-10 Werner Lemberg + + * docs/docmaker.py: Minor improvements to reduce unwanted spaces + and empty lines in output. + +2001-01-09 David Turner + + * docs/docmaker.py: Improved script to generate table of contents + and index pages. It also supports wildcards on non Unix systems. + + * include/freetype/*.h, include/freetype/cache/*.h: Updated comments + to include section definitions/delimitations for the API Reference + generator. + + * include/freetype/freetype.h: Moved declaration of + `FT_Generic_Finalizer' and the `FT_Generic' structure to... + * include/freetype/fttypes.h: here. + +2001-01-04 Werner Lemberg + + * include/freetype/ttnameid.h: Updated Unicode code range comments. + +2001-01-03 Tom Kacvinsky + + * src/cff/rules.mk: Use cffgload.{c,h} instead of t2gload.{c,h}. + + * include/freetype/internal/internal.h: Changed to use cfftypes.h + (cfferrs.h) instead of t2types.h (t2errors.h, respectively). + + * include/freetype/internal/cfftypes.h: Merged in changes from + t2types.h and made this the canonical `types' header for the CFF + driver. + + * include/freetype/internal/t2types.h: This file was merged with + cfftypes.h and is no longer necessary. + + * include/freetype/internal/t2errors.h: Renamed to cfferrs.h. + + * src/cff/cffobjs.c, src/cff/cffobjs.h, src/cff/cffparse.c, + src/cff/cffdrivr.c, src/cff/cff.c, src/cff/cffload.c, + src/cff/cffgload.c, src/cff/cffgload.h: Changed to use + cffgload.{c,h} instead of t2gload.{c,h}. All occurrences of t2_ + (T2_) were replaced with cff_ (CFF_, respectively). + + * src/cff/t2gload.h: Renamed cffgload.h. + + * src/cff/t2gload.c: Renamed cffgload.c + +2000-01-02 Jouk Jansen + + * builds/vms: Support files for VMS architecture added. + * descrip.mms, src/*/descrip.mms: VMS makefiles added. + * README.VMS: New file. + +2000-01-01 Werner Lemberg + + * LICENSE.TXT: Added info about PCF driver license. + +2001-01-01 Francesco Zappa Nardelli + + * src/pcf/*: New driver module for PCF font format (used in + X Window System). + * include/freetype/internal/ftdebug.h (FT_Trace): Added values for + PCF driver. + * include/freetype/internal/pcftypes.h: New file. + * include/freetype/config/ftmodule.h: Added PCF driver module. + +2001-01-01 Werner Lemberg + + * src/winfonts/winfnt.c (FNT_Get_Char_Index): Fix parameter type. + +2000-12-31 Werner Lemberg + + * builds/modules.mk (clean_module_list): Fixed deletion of module + file in case `make make_module_list' is called before `make setup'. + +2000-12-30 Werner Lemberg + + * src/cff/cffload.c (CFF_Load_Charset): Improved error messages. + (CFF_Load_Charset, CFF_Load_Encoding): Remove unnecessary variable + definition. + +2000-12-30 Tom Kacvinsky + + * include/freetype/internal/t2types.h, + include/freetype/internal/cfftypes.h: Changed the structures for + CFF_Encoding and CFF_Encoding for the new implementations of the + charset and encoding parsers in the CFF driver. + + * src/cff/t2gload.c (t2_lookup_glyph_by_stdcharcode, + t2_operator_seac): Added these functions for use in implementing the + seac emulation provided by the Type 2 endchar operator. + (T2_Parse_CharStrings): Added seac emulation for the endchar + operator. + + * src/cff/cffload.c (CFF_Load_Encoding, CFF_Load_Charset, + CFF_Done_Encoding, CFF_Done_Charset): Extended to load and parse the + charset/encoding tables, and free the memory used by them when the + CFF driver is finished with them. Added tables + + cff_isoadobe_charset + cff_expert_charset + cff_expertsubset_charset + cff_standard_encoding + cff_expert_encoding + + so that the encoding/charset parser can handle predefined encodings and + charsets. + +2000-12-24 Tom Kacvinsky + + * src/cff/t2gload.c (T2_Load_Glyph): Added code so that the font + transform is applied. + + * src/cff/cffparse.c (cff_parse_font_matrix): Added code so that + the font matrix numbers are scaled by 1/(matrix->yy). Also, the + offset vector now contains integer values instead of 16.16 fixed + numbers. + +2000-12-22 Tom Kacvinsky + + * src/autohint/ahhint.c (ah_hinter_load_glyph): + Removed unnecessary comments and commented-out code. + +2000-12-21 David Turner + + * src/cid/cidafm.c, src/cid/cidafm.h: removed un-needed files, + we'll work on supporting CID AFM files later I guess :-) + +2000-12-21 Tom Kacvinsky + + * src/autohint/ahhint.c (ah_hinter_load, ah_hinter_load_glyph): + Changed so that fonts with a non-standard FontMatrix render + correctly. Previously, the first glyph rendered from such a + font did not have the transformation matrix applied. + +2000-12-17 Werner Lemberg + + * *.mk: Added lots of `.PHONY' targets. + +2000-12-17 Karsten Fleischer + + * *.mk: Implemented `platform' target to disable auto-detection. + +2000-12-14 Werner Lemberg + + * docs/design/modules.html: Removed. Covered by design-*.html. + + * INSTALL: Added info about makepp. + +2000-12-14 David Turner + + Added support for clipped direct rendering in the smooth renderer. + This should not break binary compatibility of existing applications. + + * include/freetype/fttypes.h, include/freetype/ftimage.h: Move + definition of the FT_BBox structure from the former to the latter. + * include/freetype/ftimage.h: Add `ft_raster_flag_clip' value to + FT_Raster_Flag enumeration. + Add `clip_box' element to FT_Raster_Params structure. + * src/smooth/ftgrays.c (grays_convert_glyph): Implement it. + + * INSTALL: Updated installation instructions on Win32, listing the + new `make setup list' target used to list supported + compilers/targets. + + * src/raster/ftraster.c (ft_black_render): Test for unsupported + direct rendering before testing arguments. + +2000-12-13 David Turner + + * include/freetype/config/ft2build.h, + include/freetype/internal/internal.h: Fixed header inclusion macros + to use direct definitions. This is the only way to do these things + in a portable way :-( The rest of the code should follow shortly + though everything compiles now. + + * builds/compiler/intelc.mk, builds/compiler/watcom.mk: New files. + + * builds/win32/detect.mk: Added support for the Intel C/C++ + compiler, as well as _preliminary_ (read: doesn't work!) support for + Watcom. Also added a new setup target. Type `make setup list' for + a list of supported command-line compilers on Win32. + + * src/base/ftdebug.c: Added dummy symbol to avoid empty file if + conditionals are off. + +2000-12-13 Werner Lemberg + + * builds/unix/ftsystem.c: Fixed typos. Fixed inclusion of wrong + ftconfig.h file. + +2000-12-12 Werner Lemberg + + * include/freetype/config/ft2build.h (FT2_ROOT, FT2_CONFIG_ROOT): + Removed. ANSI C doesn't (explicitly) allow macro expansion in + arguments using `##'. + (FT2_PUBLIC_FILE, FT2_CONFIG_FILE, FT2_INTERNAL_FILE): Use directory + names directly. Make them configurable. Use `##' to strip leading + and trailing spaces from arguments. + + * builds/unix/ft2unix.h: Adapted. + + * src/base/ftsystem.c (ft_alloc, ft_realloc, ft_free, ft_io_stream, + ft_close_stream): Use FT_CALLBACK_DEF. + + * builds/unix/ftsystem.c: Use new header scheme. + (FT_Done_Memory): Use free() from FT_Memory structure. + + * src/base/ftinit.c, src/base/ftmac.c: Header scheme fixes. + +2000-12-11 Werner Lemberg + + * include/freetype/config/ft2build.h (FT2_CONFIG_ROOT, + FT2_PUBLIC_FILE, FT2_CONFIG_FILE, FT2_INTERNAL_FILE, + FT_SOURCE_FILE): Use `##' operator to be really ANSI C compliant. + +2000-12-09 Werner Lemberg + + * builds/unix/detect.mk: Remove unused USE_CFLAGS variable. + +2000-12-08 Werner Lemberg + + * */*.h: Changed body inclusion macro names to start and end with + `__' (those which haven't converted yet). Fixed minor conversion + issues. + + * src/winfonts/winfnt.c: Updated to new header inclusion scheme. + + * src/truetype/ttinterp.c: Remove unused CALC_Length() macro. + +2000-12-07 David Turner + + * */*.[ch]: Changed source files to adhere to the new + header inclusion scheme. Not completely tested but works for now + here. + + * src/cff/t2driver.c: Renamed and updated to... + * src/cff/cffdrivr.c: New file. + * src/cff/t2driver.h: Renamed and updated to... + * src/cff/cffdrivr.h: New file. + * src/cff/t2load.c: Renamed and updated to... + * src/cff/cffload.c: New file. + * src/cff/t2load.h: Renamed and updated to... + * src/cff/cffload.h: New file. + * src/cff/t2objs.c: Renamed and updated to... + * src/cff/cffobjs.c: New file. + * src/cff/t2objs.h: Renamed and updated to... + * src/cff/cffobjs.h: New file. + * src/cff/t2parse.c: Renamed and updated to... + * src/cff/cffparse.c: New file. + * src/cff/t2parse.h: Renamed and updated to... + * src/cff/cffparse.h: New file. + * src/cff/t2tokens.h: Renamed and updated to... + * src/cff/cfftoken.h: New file. + + * src/cff/cff.c, src/cff/rules.mk: Updated. + +2000-12-06 David Turner + + * src/cache/ftlru.c (FT_Lru_Done): Fixed memory leak. + +2000-12-06 Werner Lemberg + + * builds/module.mk: Replaced `xxx #' with `xxx$(space). + * builds/os2/detekt.mk, builds/win32/detekt.mk: Moved comment to + avoid trailing spaces in variable. + * builds/freetype.mk: Use $(D) instead of $D to make statement more + readable. + + * docs/docmaker.py: Formatting. + +2000-12-05 David Turner + + * src/psaux/psauxmod.c: Fixed a broken inclusion of component + header files (an FT_FLAT_COMPILE test was missing). + + * src/cache/ftcmanag.c (FTC_Manager_Done): Fixed a bug that caused + an occasional crash when the function was called (due to a dangling + pointer). + + * src/base/ftsystem.c (FT_Done_Memory): Fixed an obvious bug: + The ANSI `free()' function was called instead of `memory->free()'. + + * docs/docmaker.py: Added section filtering, multi-page generation + (index page generation is still missing though). + +2000-12-04 David Turner + + * builds/unix/install.mk, builds/unix/ft2unix.h: The file `ft2unix.h' + is now installed as for Unix systems. Note that we + still use the `freetype2/freetype' installation path for now. + + * */*.[ch]: Now using as the default build and setup + configuration file in all public headers. Internal source files + still need some changes though. + + * builds/devel/ft2build.h, builds/devel/ftoption.h: Created a new + directory to hold all development options for both the Unix and + Win32 developer builds. + + * builds/win32/detect.mk, builds/win32/w32-bccd.mk, + builds/win32/w32-dev.mk: Changed the developer build targets to + `devel-gcc' and `devel-bcc' in order to be able to develop with the + Borland C++ compiler. + +2000-12-01 David Turner + + + * Version 2.0.1 released. + ========================= + + + * builds/unix/configure.in, builds/unix/configure, + builds/cygwin/configure.in, builds/cygwin/configure: Setting + `version_info' to 6:1:0 for the 2.0.1 release. + + * CHANGES: Added a summary of changes between 2.0.1 and 2.0. + + * builds/unix/ftconfig.in, builds/cygwin/ftconfig.in: Changes + to allow compilation under Unix with the Unix-specific config + files. + +2000-12-01 Werner Lemberg + + * INSTALL: Revised. + * builds/compiler/bcc-dev.mk, builds/compiler/visualage.mk, + builds/compiler/bcc.mk, builds/win32/w32-bcc.mk, + builds/win32/w32-bccd.mk: Revised. + * include/freetype/config/ftbuild.h, + include/freetype/internal/internal.h: Revised. + * include/freetype/ftimage.h: Updated to new header inclusion scheme. + +2000-11-30 Werner Lemberg + + * builds/toplevel.mk (.PHONY): Adding `distclean'. + * builds/unix/detect.mk (.PHONY): Adding `devel', `unix', `lcc', + `setup'. + +2000-11-30 David Turner + + * INSTALL: Slightly updated the quick starter documentation to + include IDE compilation, prevent against BSD Make, and specify `make + setup' instead of a single `make' for build configuration. + + * include/config/ftbuild.h, include/internal/internal.h: Added new + configuration files used to determine the location of all public, + configuration, and internal header files for FreeType 2. Modified + all headers under `include/freetype' to reflect this change. Note + that we still need to change the library source files themselves + though. + + * builds/compiler/bcc.mk, builds/compiler/bcc-dev.mk, + builds/win32/w32-bcc.mk, builds/win32/w32-bccd.mk, + builds/win32/detect.mk: Added new files to support compilation with + the free Borland C++ command-line compiler. Modified the detection + rules to recognize the new `bcc32' target in `make setup bcc32'. + + * src/sfnt/ttcmap.c, src/sfnt/ttpost.c, src/sfnt/ttsbit.c, + src/truetype/ttobjs.c, src/truetype/ttgload.c, + src/truetype/ttinterp.c: Fixed a few comparisons that Borland C++ + didn't really like. Basically, this compiler complains when FT_UInt + is compared to FT_UShort (apparently, it promotes `UShort' to `Int' + in these cases). + +2000-11-30 Tom Kacvinsky + + * t2objs.c (T2_Init_Face): Added calculation of `face->height' for + pure CFF fonts. + + * t1objs.c (T1_Init_Face): Fixed computation of `face->height'. + +2000-11-29 David Turner + + * src/base/ftbbox.c (BBox_Conic_Check): Fixed a really stupid + bug in the formula used to compute the conic Bézier extrema + of non-monotonous arcs. + +2000-11-29 Werner Lemberg + + * src/base/ftcalc.c (FT_SqrtFixed), src/base/ftobjs.c + (FT_Set_Renderer): Use FT_EXPORT_DEF. + * src/cache/ftcimage.c (FTC_Image_Cache_Lookup), + src/cache/ftcmanag.c (FTC_Manager_Done, FTC_Manager_Reset, + FTC_Manager_Lookup_Face, FTC_Manager_Lookup_Size, + FTC_Manager_Register_Cache), src/cache/ftcsbits.c + (FTC_SBit_Cache_Lookup): Ditto. + + * src/include/freetype/cache/ftcglyph.h (FTC_GlyphNode_Init), + src/include/freetype/ftmac.h (FT_New_Face_From_FOND): Use FT_EXPORT. + +2000-11-29 Werner Lemberg + + * src/sfnt/sfdriver.c: Include ttsbit.h and ttpost.h only + conditionally. + + * src/truetype/ttdriver.c (Set_Char_Sizes, Set_Pixel_Sizes): Set + `size->strike_index' only conditionally. + + * src/type1/t1driver.c, src/type1/t1objs.c: Include t1afm.h only + conditionally. + + * src/winfonts/winfnt.h: Move all type definitions to... + * src/include/freetype/internal/fnttypes.h: New file. + * src/winfonts/winfnt.c: Use it. + +2000-11-29 ??? ??? + + * include/freetype/internal/ftdebug.h: Replaced FT_CAT and FT_XCAT + with a direct solution (which also satisfies picky compilers). + +2000-11-28 YAMANO-UCHI Hidetoshi + + * src/truetype/ttobjs.c (TT_Init_Size): Fix #ifdef's to work with + disabled interpreter also. + + * src/base/ftnames.c (FT_Get_Sfnt_Name_Count): Fix incorrect + parentheses. + +2000-11-26 Tom Kacvinsky + + * src/cff/t2gload.c (T2_Parse_CharStrings): Added logic to glyph + width setting code to take into account even/odd argument counts + and glyph width operand before endchar/hmoveto/vmoveto. + +2000-11-26 Werner Lemberg + + * builds/ansi/ansi.mk: Fix inclusion order of files. + +2000-11-26 Keith Packard + + * src/type1/t1objs.c (T1_Init_Face): Compute style flags. + +2000-11-26 Werner Lemberg + + * builds/compiler/ansi-cc.mk (CLEAN_LIBRARY): Fix rule and + conditional. + +2000-11-23 Werner Lemberg + + * src/type1/t1load.c (parse_subrs, parse_charstrings): Use decrypt + function from PSAux module. + + * src/type1/t1parse.c (T1_Done_Parse): Renamed to... + (T1_Finalize_Parser): New function (to avoid name clash with a + function in the PSAux module). + (T1_Decrypt): Removed since it is duplicated in the PSAux module. + (T1_Get_Private_Dict): Added `psaux' as new parameter; use decrypt + function from PSAux module. + + * src/type1/t1parse.h: Adapted. + +2000-11-22 Tom Kacvinsky + + * src/cff/t2objs.c (T2_Init_Face): For pure CFF fonts, set + `root->num_faces' to `cff->num_faces' and set `units_per_EM' + to 1000. + + * src/cff/t2parse.c (parse_t2_real): Fixed real number parsing + loop. + + * src/cff/t2load.c (T2_Get_String): Called T2_Get_Name with a + sid that was off by one. + +2000-11-16 David Turner + + * src/autohint/ahtypes.h (AH_Hinter): Added new fields to control + auto-hinting of synthetic Type 1 fonts. + + * src/autohint/ahhint.c (ah_hinter_load, ah_hinter_load_glyph): + Added auto-hinting support of synthetic Type 1 fonts. + +2000-11-12 Tom Kacvinsky + + * src/sfnt/ttload.c (TT_LookUp_Table, TT_Load_Generic_Table): Change + tracing output. + + * src/sfnt/sfobjs.c (SFNT_Load_Face): Set boolean variable + `has-outline' to true only if the font has a `glyf' or `CFF ' table. + +2000-11-11 Werner Lemberg + + * builds/win32/visualc/freetype.dsp: Fix raster1->raster and + type1z->type1. + +2000-11-11 Tom Kacvinsky + + * builds/unix/freetype-config.in, builds/cygwin/freetype-config.in: + Added a --libtool option. When freetype-config --libtool is + invoked, the absolute path to the libtool convenience library + is returned. + +2000-11-11 Werner Lemberg + + * builds/cygwin/cygwin-def.in: Same fix as previous. + +2000-11-10 Tom Kacvinsky + + * builds/unix/unix-def.in: Add + + INSTALL_PROGRAM := @INSTALL_PROGRAM@ + INSTALL_SCRIPT := @INSTALL_SCRIPT@ + + so that installation of freetype-config does not fail. + +2000-11-10 Werner Lemberg + + * builds/cygwin/freetype-config.in, builds/unix/freetype-config.in: + Move test down for empty --exec-prefix. + Fix --version. + + * builds/cygwin/install.mk, builds/unix/install.mk: Use + $(INSTALL_SCRIPT) for installation of freetype-config. + + * builds/cygwin/install.mk: Fix clean target names. + +2000-11-09 David Turner + + + * Version 2.0 released. + ======================= + +---------------------------------------------------------------------------- + +Copyright 2000, 2001, 2002, 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. + + +Local Variables: +version-control: never +coding: utf-8 +End: diff --git a/deps/freetype/ChangeLog.21 b/deps/freetype/ChangeLog.21 new file mode 100644 index 0000000..d6371d1 --- /dev/null +++ b/deps/freetype/ChangeLog.21 @@ -0,0 +1,9439 @@ +2005-06-08 Werner Lemberg + + + * Version 2.1.10 released. + ========================== + + + * src/pcf/readme: Renamed to... + * src/pcf/README: This. + +2005-06-07 Detlef Würkner + + * builds/amiga/*: Added copyright notes, reworked some comments. + +2005-06-05 Werner Lemberg + + * Add copyright notices to all files which don't have one. + + * docs/license.txt: Renamed to... + * docs/LICENSE.TXT: This. + * docs/FTL.txt: Renamed to... + * docs/FTL.TXT: This. + * docs/GPL.txt: Renamed to... + * docs/GPL.TXT: This. + + * docs/PATENTS: Slightly reworded. Suggested by Sylvain Beucler + . + +2005-06-04 Werner Lemberg + + * include/freetype/ftimage.h (FT_Outline_MoveToFunc, + FT_Outline_LineToFunc, FT_Outline_ConicToFunc, + FT_Outline_CubicToFunc, FT_Raster_RenderFunc), + include/freetype/ftrender.h (FT_Glyph_TransformFunc, + FT_Renderer_RenderFunc, FT_Renderer_TransformFunc): Don't use + `const' to stay compatible with FreeType 2.1.9. + +2005-06-01 Adam D. Moss + + * src/base/ftstroke.c (ft_stroker_inside): Revert `sigma' patch from + 2004-07-11; this gives much better results under normal + circumstances. + +2005-05-30 Chia I Wu + + * include/freetype/ftbitmap.h (FT_Bitmap_Embolden): Minor + documentation improvements. + + * include/freetype/ftoutln.h (FT_Outline_Embolden): Fix typos. + + * src/base/ftbitmap.c (FT_Bitmap_Embolden): Add support for bitmap + of pixel_mode FT_PIXEL_MODE_GRAY2 or FT_PIXEL_MODE_GRAY4. + If xstr is larger than 8 and bitmap is of pixel_mode + FT_PIXEL_MODE_MONO, set xstr to 8 instead of returning error. + +2005-05-29 Chia I Wu + + * src/base/ftbitmap.c (FT_Bitmap_Embolden): Fix emboldening bitmap + of mode FT_PIXEL_MODE_GRAY. Also add support for mode + FT_PIXEL_MODE_LCD and FT_PIXEL_MODE_LCD_V. + (ft_bitmap_assure_buffer): FT_PIXEL_MODE_LCD and FT_PIXEL_MODE_LCD_V + should have ppb (pixel per byte) 1. + Zero the padding when there's no need to allocate memory. + + * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Handle slot->advance + too. + More suited emboldening strength. + +2005-05-28 Chia I Wu + + * src/base/ftbitmap.c (FT_Bitmap_Embolden): Handle negative pitch. + Handle FT_PIXEL_MODE_GRAY with num_gray != 256. + Improve speed for FT_PIXEL_MODE_GRAY. + (ft_bitmap_assure_buffer): Accept FT_PIXEL_MODE_LCD and + FT_PIXEL_MODE_LCD_V. + +2005-05-27 Chia I Wu + + * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Initialize `error'. + + * src/base/ftobjs.c (ft_cmap_done_internal): New function. + (FT_CMap_Done): Remove cmap from cmap list. + (destroy_charmaps, FT_CMap_New): Don't call FT_CMap_Done but + ft_cmap_done_internal. + +2005-05-26 Werner Lemberg + + * docs/GPL.txt: Update postal address of FSF. + +2005-05-26 Chia I Wu + + * include/freetype/ftbitmap.h (FT_Bitmap_Embolden): Improve + documentation. + + * src/base/ftsynth.c (FT_BOLD_THRESHOLD): Removed. + (FT_GlyphSlot_Embolden): Check whether slot is bitmap owner. + Always modify the metrics. + +2005-05-24 Werner Lemberg + + * docs/CHANGES: Updated. + +2005-05-24 Chia I Wu + + * include/freetype/ftbitmap.h (FT_Bitmap_Embolden): New declaration. + + * include/freetype/ftoutln.h (FT_Outline_Embolden): New declaration. + + * src/base/ftbitmap.c (ft_bitmap_assure_buffer): New auxiliary + function. + (FT_Bitmap_Embolden): New function. + + * src/base/ftoutln.c (FT_Outline_Embolden): New function. + + * src/base/ftsynth.c: Don't include FT_INTERNAL_CALC_H and + FT_TRIGONOMETRY_H but FT_BITMAP_H. + (FT_GlyphSlot_Embolden): Use FT_Outline_Embolden or + FT_Bitmap_Embolden. + +2005-05-24 Werner Lemberg + + * configure: Always remove config.mk, builds/unix/unix-def.mk, and + builds/unix/unix-cc.mk. This fixes repeated calls of the script. + Reported by Nelson Beebe and Behdad Esfahbod. + + * README.CVS: Mention file permissions. + +2005-05-23 Werner Lemberg + + * builds/amiga/makefile.os4 (WARNINGS), builds/compiler/gcc-dev.mk + (CFLAGS), builds/compiler/gcc.mk (CFLAGS): Remove + -fno-strict-aliasing. + + * src/sfnt/rules.mk (SFNT_DRV_SRC): Don't include ttsbit0.c -- + it is currently loaded from ttsbit.c. + +2005-05-23 Behdad Esfahbod + + Say you have `(Foo*)x' and want to assign, pass, or return it as + `(Bar*)'. If you simply say `x' or `(Bar*)x', then the C compiler + would warn you that type casting incompatible pointer types breaks + strict-aliasing. The solution is to cast to `(void*)' instead which + is the generic pointer type, so the compiler knows that it should + make no strict-aliasing assumption on `x'. But the problem with + `(void*)x' is that seems like in C++, unlike C, `void*' is not a + generic pointer type and assigning `void*' to `Bar*' without a cast + causes an error. The solution is to cast to `Bar*' too, with + `(Bar*)(void*)x' as the result -- this is what the patch does. + + * include/freetype/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP), + include/freetype/cache/ftcmru.h (FTC_MRULIST_LOOKUP_CMP): Remove + cast on lvalue, use a temporary pointer instead. + Cast temporarily to (void*) to not break strict aliasing. + + * include/freetype/internal/ftmemory.h (FT_MEM_ALLOC, + FT_MEM_REALLOC, FT_MEM_QALLOC, FT_MEM_QREALLOC, FT_MEM_FREE), + src/base/ftglyph.c (FT_Glyph_To_Bitmap): Cast temporarily to (void*) + to not break strict aliasing. + + * src/base/ftinit.c (FT_USE_MODULE): Fix wrong type information. + + * builds/unix/configure.ac (XX_CFLAGS): Remove -fno-strict-aliasing. + +2005-05-23 David Turner + + Fix Savannah bug #12213 (incorrect behaviour of the cache sub-system + in low-memory conditions). + + * include/freetype/cache/ftccache.h (FTC_CACHE_TRYLOOP, + FTC_CACHE_TRYLOOP_END): New macros. + + * src/cache/ftccache.c (FTC_Cache_NewNode), src/cache/ftcsbits.c + (ftc_snode_compare): Use FT_CACHE_TRYLOOP and FTC_CACE_TRYLOOP_END. + +2005-05-23 Werner Lemberg + + * src/base/rules.mk (BASE_SRC): Don't add ftsynth.c here but... + (BASE_EXT_SRC): Here. + +2005-05-22 Werner Lemberg + + * src/base/ftrfork.c (raccess_guess_apple_generic): Mark + `version_number' and `entry_length' as unused. + (raccess_guess_linux_double_from_file_name): Remove `memory'. + (raccess_make_file_name): Mark `error' as unused. + + * src/bdf/bdflib.c (_bdf_parse_properties): Remove `memory'. + + * src/cid/cidobjs.c (cid_face_init): Remove `psnames'. + + * src/sfnt/sfobjs.c (sfnt_load_face): Remove `memory'. + + * src/truetype/ttgxvar.c (ft_var_readpackedpoints, + ft_var_readpackeddeltas, ft_var_load_avar): Mark `error' as unused. + + * src/base/rules.mk (BASE_SRC): Add ftsynth.c. + +2005-05-21 David Turner + + * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Fix a bug that + produced unpleasant artefacts when trying to embolden very sharp + corners. + +2005-05-20 Werner Lemberg + + * docs/CHANGES: Updated. + +2005-05-20 Chia I Wu + + * src/base/ftbitmap.c: Don't include FT_FREETYPE_H and FT_IMAGE_H + but FT_BITMAP_H. + (FT_Bitmap_Copy): New function (from ftglyph.c). + + * include/freetype/ftbitmap.h (FT_Bitmap_Copy): New public + definition. + + * src/base/ftglyph.c: Include FT_BITMAP_H. + (ft_bitmap_copy): Move to ftbitmap.c. + (ft_bitmap_glyph_init): Remove `memory' variable. + Create new bitmap object if FT_GLYPH_OWN_BITMAP isn't set. + (ft_bitmap_glyph_copy): Use FT_Bitmap_Copy. + (ft_bitmap_glyph_done): Use FT_Bitmap_Done. + (ft_outline_glyph_init): Use FT_Outline_Copy. + + * src/base/ftoutln.c (FT_Outline_Copy): Handle source == target. + (FT_Outline_Done_Internal): Check for valid `memory' pointer. + (FT_Outline_Translate, FT_Outline_Reverse, FT_Outline_Render, + FT_Outline_Transform): Check for valid `outline' pointer. + + * src/base/ftobjs.c (FT_New_GlyphSlot): Prepend glyph slot to + face->glyph, otherwise a new second glyph slot cannot be created. + (FT_Done_GlyphSlot): Fix memory leak. + (FT_Open_Face): Updated -- face->glyph is already managed by + FT_New_GlyphSlot. + + * src/type42/t42objs.c (T42_GlyphSlot_Done): Updated. + +2005-05-20 Kirill Smelkov + + * include/freetype/ftimage.h (FT_Raster_Params), + include/freetype/ftoutln.h (FT_Outline_Translate, + FT_Outline_Transform), src/base/ftoutln.c (FT_Outline_Translate, + FT_Outline_Transform): Decorate parameters with `const' where + appropriate. + Update all callers. + + * src/raster/ftraster.c (ft_black_reset), src/smooth/ftgrays.c + (gray_raster_reset): Remove `const' from `pool_base' argument. + +2005-05-18 Kirill Smelkov + + * src/raster/ftmisc.h: New file. Only needed if ftraster.c is + compiled as stand-alone. + + * src/raster/ftraster.c: Add comment how to compile as stand-alone. + s/FT_CONFIG_OPTION_STATIC_RASTER/FT_STATIC_RASTER/. + s/TT_STATIC_RASTER/FT_STATIC_RASTER/. + [_STANDALONE_]: Include ftimage.h and ftmisc.h. + (FT_TRACE1, FT_TRACE6, ft_memset, FT_MEM_ZERO): Define + conditionally. + (Render_Glyph, Render_Gray_Glyph): Return Raster_Err_None (or + Raster_Err_Unsupported). + (ft_black_new) [_STANDALONE_]: Fix type of `the_raster'. + (ft_black_init, ft_black_reset, ft_black_set_mode, ft_black_render): + Use `ras', not `raster'. + (ft_black_done): Use FT_UNUSED_RASTER. + (Horizontal_Sweep_Init, Horizontal_Sweep_Step, + Horizontal_Gray_Sweep_Span): Use FT_UNUSED_RASTER. + +2005-05-18 Werner Lemberg + + * docs/announce: Start updating. + + * docs/CHANGES: Updated. + +2005-05-16 Vitaliy Pasternak + + * builds/win32/visualc/freetype.vcproj: Updated. + Exclude debug info for `Release' versions to reduce library size. + +2005-05-16 Werner Lemberg + + * src/base/ftobjs.c (FT_Open_Face): Make it work as documented, this + is, ignore `aface' completely if face_index < 0. Reported by David + Osborn . + +2005-05-16 Kirill Smelkov + + * include/freetype/ftimage.h (FT_Outline_MoveToFunc, + FT_Outline_LineTo_Func, FT_Outline_ConicToFunc, + FT_Outline_CubicToFunc), src/smooth/ftgrays.c (gray_render_conic, + gray_render_cubic, gray_move_to, gray_line_to, gray_conic_to, + gray_cubic_to, gray_render_span, gray_sweep): Decorate parameters + with `const' where appropriate. + +2005-05-11 Kirill Smelkov + + * include/freetype/ftimage.h (FT_Raster_RenderFunc), + include/freetype/ftrender.h (FT_Glyph_TransformFunc, + FT_Renderer_Render_Func, FT_Renderer_TransformFunc), + src/base/ftglyph.c (ft_outline_glyph_transform), + src/raster/ftrend1.c (ft_raster1_transform, ft_raster1_render), + src/smooth/ftgrays.c (FT_Outline_Decompose, gray_raster_render), + src/smooth/ftsmooth.c (ft_smooth_transform, + ft_smooth_render_generic, ft_smooth_render, ft_smooth_render_lcd, + ft_smooth_render_lcd_v): Decorate parameters with `const' where + appropriate. + + * src/raster/ftraster.c (RASTER_RENDER_POOL): Removed. Obsolete. + (ft_black_render): Decorate parameters with `const' where + appropriate. + +2005-05-11 Werner Lemberg + + * src/sfnt/ttcmap.c (tt_cmap4_set_range): Fix typo (FT_PEEK_SHORT -> + FT_PEEK_USHORT) which caused crashes. Reported by Ismail Donmez + . + +2005-05-08 Werner Lemberg + + * include/freetype/internal/ftserv.h (FT_FACE_FIND_GLOBAL_SERVICE) + [__cplusplus]: Fix typo. + +2005-05-07 Werner Lemberg + + Handle unsorted SFNT type 4 cmaps correctly (reported by Dirck + Blaskey ). + + * src/sfnt/ttcmap.h (TT_CMap): Add member `unsorted'. + * src/sfnt/ttcmac.c: Use SFNT_Err_Ok where appropriate. + + (tt_cmap0_validate, tt_cmap2_validate, tt_cmap6_validate, + tt_cmap8_validate, tt_cmap10_validate, tt_cmap12_validate): Use + `FT_Error' as return type. + (tt_cmap4_validate): Use `FT_Error' as return type. + Return error code for unsorted cmap. + (tt_cmap4_char_index, tt_cmap4_char_next): Use old code for unsorted + cmaps. + (tt_face_build_cmaps): Set `unsorted' variable in cmap. + +2005-05-07 Werner Lemberg + + * src/truetype/ttpload.c (tt_face_get_location): Fix typo. + +2005-05-06 Werner Lemberg + + * src/cff/cffobjs.c (cff_face_init): Set ppem value in top + dictionary for SFNT-based CFF. + +2005-05-05 Werner Lemberg + + Handle malformed `loca' table entries. + + * docs/TODO: Add some bugs which should be fixed. + + * include/freetype/internal/tttypes.h (TT_FaceRec): Add `glyf_len' + element. + + * src/truetype/ttpload.c (tt_face_load_loca): Get length of `glyf' + table. + (tt_face_get_location): Fix computation of `asize' for malformed + `loca' entries. + +2005-05-01 David Turner + + * Jamfile: Remove `otvalid' from the list of compiled modules. + + * include/freetype/internal/ftserv.h: Add compiler pragmas to get + rid of annoying warnings with Visual C++ compiler in maximum warning + mode. + + * src/autofit/afhints.c, src/autofit/aflatin.c, src/base/ftstroke.c, + src/bdf/bdfdrivr.c, src/cache/ftcbasic.c, src/cache/ftccmap.c, + src/cache/ftcmanag.c, src/cff/cffload.c, src/cid/cidload.c, + src/lzw/zopen.c, src/otvalid/otvgdef.c, src/pcf/pcfread.c, + src/sfnt/sfobjs.c, src/truetype/ttgxvar.c: Remove compiler warnings. + +2005-04-28 Werner Lemberg + + * docs/TODO: Updated. + +2005-04-24 Werner Lemberg + + * src/otvalid/otvcommn.c + (otv_GSUBGPOS_have_MarkAttachmentType_flag): Handle table == 0. + +2005-04-16 Werner Lemberg + + * src/cff/cffobjs.c (cff_face_init): Set default upem value in top + font dict also. + Handle font matrix settings in subfonts. + + * src/cff/cffgload.c (cff_slot_load): Use the correct font matrix + for CID-keyed fonts with subfonts. + + * docs/formats.txt: Updated. + +2005-04-14 Kirill Smelkov + + * include/freetype/freetype.h (FT_Vector_Transform), + include/freetype/ftimage.h (FT_Raster_Params), + include/freetype/ftoutln.h, src/base/ftoutln.c (FT_Outline_Get_CBox, + FT_Outline_Copy, FT_Outline_Transform, FT_Vector_Transform, + FT_Outline_Get_Bitmap), src/raster/ftraster.c (ft_black_render), + src/smooth/ftgrays.c (gray_raster_render): Decorate parameters with + `const' where appropriate. + +2005-04-14 Werner Lemberg + + * src/type1/t1load.c (parse_charstrings): Catch this non-standard + beginning of the /CharStrings dictionary: + + /CharStrings 118 dict def + Private begin + CharStrings begin + + * src/sfnt/ttsbit0.c (tt_sbit_decoder_load_image): Fix arguments + to call of tt_sbit_decoder_load_bitmap. + +2005-04-13 Werner Lemberg + + * docs/TODO: Updated. + + * autogen.sh: Use `--force' for all commands. + +2005-04-09 Werner Lemberg + + * src/pshinter/pshalgo.c (ps_hints_apply): Change scaling values + only if `fitted' is not zero. + +2005-04-06 Werner Lemberg + + * src/truetype/ttgload.c (tt_face_get_metrics) [FT_OPTIMIZE_MEMORY]: + Fix typo which sometimes causes wrong metrics for the last glyph. + +2005-04-04 David Turner + + * devel/ftoption.h, include/freetype/config/ftoption.h + (FT_OPTIMIZE_MEMORY): Comment out this macro for the upcoming 2.1.10 + release. + (*_CHESTER_*): Removed. No longer used. + + * src/autofit/afhints.c (af_axis_hints_new_segment, + af_axis_hints_new_edge): Small tweak to use less heap memory. + +2005-04-03 Werner Lemberg + + * src/type1/t1parse.c (T1_New_Parser): Relax the check for a valid + first line in the font. + +2005-04-03 Werner Lemberg + + * docs/CHANGES, include/freetype/freetype.h: Improve documentation + of FT_Set_Pixel_Sizes and FT_Set_Char_Size. + +2005-03-26 Detlef Würkner + + * builds/amiga/src/base/ftsystem.c (ft_amiga_stream_io): Fix buffer + offsets after a large read. + +2005-03-26 Werner Lemberg + + * src/autofit/afglobal.c (af_face_globals_get_metrics): + s/index/gidx/. + + * src/sfnt/ttsbit0.c (tt_sbit_decoder_load_image): Fix compiler + warnings. + + * src/sfnt/rules.mk (SFNT_DRV_SRC): Add ttsbit0.c. + + * src/sfnt/ttsbit0.h: Dummy file for build with `make'. + +2005-03-26 Detlef Würkner + + Update of the Amiga port. + + * builds/amiga/makefile, builds/amiga/makefile.os4, + builds/amiga/smakefile: Included the base extension files + (ftbitmap.c, ftotval.c, ftpfr.c, ftstroke.c, ftxf86.c). + +2005-03-25 Detlef Würkner + + Update of the Amiga port. + + * builds/amiga/makefile, builds/amiga/smakefile: Handle new modules. + + * builds/amiga/makefile.os4: Makefile for AmigaOS4 SDK. + + * builds/amiga/README: Updated. + + * builds/amiga/include/freetype/config/ftconfig.h: Handle gcc for + AmigaOS4. + + * builds/amiga/include/freetype/config/ftmodule.h: Handle new + modules. + + * builds/amiga/src/base/ftdebug.c: Updated to current version of + default ftdebug.c. + Add various include files and macros to have proper support for + both AmigaOS4 and older AmigaOS versions. + Don't declare KVPrintF explicitly. + Replace getenv with GetVar. + Actually enable debugging code. + + * builds/amiga/src/base/ftsystem.c: Major rewrite. + +2005-03-23 Werner Lemberg + + * tests/*: Removed. + +2005-03-23 Werner Lemberg + + * docs/CHANGES, docs/INSTALL.ANY: Updated. + + * include/freetype/ftmoderr.h: Replace `Autohint' with `Autofit'. + Add `OTvalid'. + + * src/autofit/aferrors.h: New file. + + * src/autofit/afglobal.c, src/autofit/afhints.c, + src/autofit/aflatin.c, src/autofit/afloader.c: s/FT_Err_/AF_Err_/. + Include aferrors.h. + + * src/autofit/rules.mk (AUTOF_DRV_H): Include aferrors.h. + + * src/otvalid/otverror.h: s/FT_Mod_Err_OTV/FT_Mod_Err_OTvalid/. + +2005-03-22 David Turner + + * src/autohint/*: Removed. + * Jamfile: Updated. + +2005-03-15 David Turner + + * src/bdf/bdflib.c: Remove compiler warnings. + (hash_rehash, hash_init): Don't call FT_MEM_ZERO. + (_bdf_list_t): Add `memory' field. + (_bdf_list_init, _bdf_list_done, _bdf_list_ensure): New functions. + (_bdf_shift, _bdf_join): Rename to... + (_bdf_list_shift, _bdf_list_join): This. + (_bdf_split): Renamed to... + (_bdf_list_split): This. Use new functions. + (bdf_internal_readstream): Removed. + (NO_SKIP): New macro. + (_bdf_readstream): Rewritten. + (bdf_create_property, _bdf_add_comment): Improve allocation. + (_bdf_set_default_spacing, _bdf_parse_glyphs): Updated. Improve + allocation. + (_bdf_parse_properties, _bdf_parse_start): Updated. + (bdf_load_font): Updated to use new functions. + + * src/type1/t1parse.c (check_type1_format): New function. + (T1_New_Parser): Use it to check font header before allocating + anything on the heap. + + * src/type42/t42parse.c (t42_parser_init): Modify functions to check + the font header before allocating anything on the heap. + + * include/freetype/internal/ftmemory.h (FT_ARRAY_MAX, + FT_ARRAY_CHECK): New macros. + + * src/base/ftstream.c (FT_Stream_TryRead): New function. + * include/freetype/internal/ftstream.h: Updated. + + * src/pcf/pcfread.c (pcf_read_TOC), src/pcf/pcfutil.c + (BitOrderInvert, TwoByteSwap, FourByteSwap): Minor fixes and + simplifications. Try to protect the PCF driver from doing stupid + things with broken fonts. + + * src/lzw/ftlzw.c (FT_Stream_OpenLZW): Check the LZW header before + doing anything else. This avoids unnecessary heap allocations + (400KByte of heap memory for the LZW decoder). + + * src/gzip/ftgzip.c (FT_Stream_OpenGZip): Ditto for the gzip + decoder, although the code savings are smaller. + + * docs/CHANGES: Updated. + +2005-03-10 David Turner + + * src/tools/glnames.py: Add comment to explain the compression + being used for the Adobe Glyph List. + +2005-03-10 Werner Lemberg + + * src/truetype/ttpload.c (tt_face_load_cvt, tt_face_load_fpgm): + Fix serious typo which prevented correct TT rendering. + + * include/freetype/internal/ftmemory.h: Undo change from 2005-03-03. + To suppress warnings it is sufficient to use `-fno-strict-aliasing'. + +2005-03-10 Werner Lemberg + + * src/tools/glnames.py: Formatted. + Format output to be in sync with other FreeType code. + Import `re' and `os.path'. + (StringTable) <__init__>: Add parameter to initialize master table + name. + (StringTable) : Don't pass master table name. + (StringTable) : Emit explanatory comment. + Simplify and make output more human readable. + (t1_bias, glyph_list, adobe_glyph_names): Removed. Unused. + (main): Use `basename' for file name in header. + + * src/psnames/pstables.h: Regenerated. + +2005-03-09 David Turner + + * src/tools/glnames.py: Rewrite the generator for the `pstables.h' + header file which contains various constant tables related to glyph + names. It now uses a different, more compact storage scheme that + saves about 20KB. This also closes Savannah bug #12262. + + * src/psnames/pstables.h: Regenerated. + + * src/psnames/psmodule.c (ps_unicode_value): Use + `ft_get_adobe_glyph_index', a new function defined in `pstables.h'. + (ps_get_macintosh_name, ps_get_standard_strings): Updated. + + * src/base/ftobjs.c (FT_Set_Char_Sizes): Handle fractional sizes + more carefully. This fixes Savannah bug #12263. + +2005-03-06 David Turner + + * src/otvalid/otvgsub.c, src/otvalid/otvgpos.c: Make static tables + constant. + + * src/autofit/aflatin.c (af_latin_metrics_init): Fix Savannah bug + #12212 (auto-hinter refuses to work if no Unicode charmap in font). + +2005-03-05 Werner Lemberg + + * autogen.sh: New script for bootstrapping. + + * README.CVS: New file which documents bootstrapping. + + * builds/unix/aclocal.m4, builds/unix/config.guess, + builds/unix/config.sub, builds/unix/configure, + builds/unix/ltmain.sh: Removed. + +2005-03-04 Werner Lemberg + + * src/base/ftutil.c: Include FT_INTERNAL_OBJECTS_H. + +2005-03-03 Werner Lemberg + + Various fixes for C and C++ compiling. + + * src/autofit/*: Add copyright messages. + + * src/autofit/afhints.c (af_glyph_hints_done): Don't use + `AF_Dimension' but `int' for loop counter. + + * src/autofit/aflatin.c (af_latin_metrics_init_widths): Don't use + `AF_Dimension' but `int' for loop counter. + Use proper enumeration value for `render_mode'. + (af_latin_metrics_scale_dim): Don't shadow variables. + (af_latin_hints_compute_segments): Use proper cast for `major_dir' + and `segment_dir'. + (af_latin_align_linked_edge, af_latin_hint_edges): Fix arguments of call to + `af_latin_compute_stem_width'. + (af_latin_hints_apply): Don't use `AF_Dimension' but `int' for loop + counter. + + * src/base/ftdbgmem.c (ft_mem_table_get_source, FT_DumpMemory): Use + proper cast for memory allocation. + + * src/cff/cffdrivr.c (cff_get_kerning): Use proper cast for + initialization of `sfnt'. + + * src/sfnt/sfdriver.c: Include `ttkern.h'. + + * src/sfnt/ttkern.c (tt_face_get_kerning): Don't shadow variables. + + * src/truetype/ttgload.c: Include `ttpload.h'. + +2005-03-03 David Turner + + * include/freetype/internal/ftmemory.h (FT_ALLOC, FT_REALLOC, + FT_QALLOC, FT_QREALLOC) [gcc >= 3.3]: Provide macro versions which + avoid compiler warnings. + (FT_NEW, FT_NEW_ARRAY, FT_RENEW_ARRAY, FT_QNEW, FT_QNEW_ARRAY, + FT_QRENEW_ARRAY, FT_ALLOC_ARRAY, FT_REALLOC_ARRAY): Updated. + + * include/freetype/internal/ftserv.h (FT_FACE_FIND_SERVICE, + FT_FACE_FIND_GLOBAL_SERVICE, FT_FACE_LOOKUP_SERVICE) [__cplusplus]: + Provide macro versions which avoid compiler warnings. + + * src/base/ftutil.c (ft_highpow2): New utility function. + + * include/freetype/internal/ftobjs.h: Updated. + + * src/pfr/pfrload.c (pfr_get_gindex, pfr_compare_kern_pairs, + pfr_sort_kerning_pairs): Don't define if FT_OPTIMIZE_MEMORY is set. + (pfr_phy_font_done): Don't handle `kern_pairs' if FT_OPTIMIZE_MEMORY + is set. + (pfr_phy_font_load): Don't call `pfr_sort_kerning_pairs' if + FT_OPTIMIZE_MEMORY is set. + + * src/pfr/pfrobjs.c (pfr_slot_load): Comment out some code which + doesn't work with broken fonts. + (pfr_face_get_kerning) [FT_OPTIMIZE_MEMORY]: Implement. + + * src/pfr/pfrtypes.h (PFR_KernItemRec): Optimize member types. + (PFR_NEXT_KPAIR): New macro. + (PFR_PhyFontRec): Don't define `kern_pairs' if FT_OPTIMIZE_MEMORY is + set. + + * src/sfnt/ttsbit0.c (tt_sbit_decoder_load_image): Introduce + temporary variable to avoid gcc warning. + (tt_face_load_sbit_image): Mark unused variables with FT_UNUSED. + + * src/truetype/ttpload.c (tt_face_load_loca) [FT_OPTIMIZE_MEMORY]: + Remove redundant variable. + + * include/freetype/config/ftmodule.h: Moving the order of drivers to + speed up font loading. The PCF and BDF loaders are still slow and + consume far too much memory. + +2005-03-03 Werner Lemberg + + * devel/ftoption.h: Updated to recent changes. + +2005-03-02 Werner Lemberg + + * src/autofit/afdummy.c, src/autofit/afdummy.h + (af_dummy_script_class): Fix type. + + * src/autofit/aflatin.c, src/autofit/aflatin.h + (af_latin_script_class): Fix type. + + * src/autofit/rules.mk (AUTOF_DRV_SRC): Fix typo. + +2005-03-01 David Turner + + * src/sfnt/ttkern.c (tt_face_load_kern, tt_face_get_kerning), + src/sfnt/ttsbit0.c (tt_face_load_sbit_strikes, + tt_sbit_decoder_load_byte_aligned, tt_sbit_decoder_load_compound, + tt_sbit_decoder_load_image), src/sfnt/ttload.c + (tt_face_load_metrics): Remove compiler warnings + -- redundant variables, missing initializations, etc. + + * src/sfnt/ttsbit.h: Handle FT_OPTIMIZE_MEMORY. + + * src/autofit/rules.mk, src/autofit/module.mk, + src/autofit/afangles.h: New files. + + * src/autofit/afhints.c (af_axis_hints_new_segment, + af_axis_hints_new_edge): New functions. + (af_glyph_hints_done): Do proper deallocation. + (af_glyph_hints_reload): Only reallocate points array. This + drastically reduces heap usage. + + * src/autofit/afhints.h (AF_PointRec, AF_SegmentRec): Optimize + member types and positions. + (AF_AxisHintsRec): Add `max_segments' and `max_edges'. + (af_axis_hints_new_segment, af_axis_hints_new_edge): New prototypes. + + * src/autofit/aflatin.c (af_latin_metricsc_scale): Don't call + AF_SCALER_EQUAL_SCALES. + (af_latin_hints_compute_segments): Change return type to FT_Error. + Update all callers. + Improve segment allocation. + (af_latin_hints_compute_edges): Change return type to FT_Error. + Update all callers. + Improve edge allocation and link handling. + (af_latin_hints_detect_features): Change return type to FT_Error. + Update all callers. + + * src/autofit/aflatin.h: Updated. + + * src/autofit/afloader.c (af_loader_load_g) + : Assure axis->num_edges > 1. This fixes + a bug with certain fonts. + + * include/freetype/config/ftmodule.h: The auto-fitter is now the + only supported auto-hinting module. + + * include/freetype/config/ftstdlib.h (FT_INT_MAX): New macro. + +2005-02-28 Werner Lemberg + + * src/truetype/ttpload.c (tt_face_load_loca): Fix typo. + + * src/sfnt/ttkern.c: Include `ttkern.h'. + (FT_COMPONENT): Updated. + + * include/freetype/internal/fttrace.h: Add entry for `ttkern'. + + * src/sfnt/ttsbit0.c: s/FT_Err_/SFNT_Err_/. + Decorate constants with `U' and `L' where necessary. + + * src/sfnt/ttcmap.c (tt_cmap4_next): Remove unused variable. + +2005-02-28 David Turner + + * src/base/ftdbgmem.c (FT_DumpMemory): Added sorting of memory + sources according to decreasing maximum cumulative allocations. + (ft_mem_source_compare): New auxiliary function. + + * src/sfnt/ttsbit0.c: New file, implementing a heap-optimized + embedded bitmap loader. + + * src/sfnt/ttsbit.c: Include `ft2build.h', FT_INTERNAL_DEBUG_H, + FT_INTERNAL_STREAM_H, FT_TRUETYPE_TAGS_H. + Load `ttsbit0.c' if FT_OPTIMIZE_MEMORY is set, otherwise use + file contents. + (tt_face_load_sbit_strikes): Set up root fields to indicate the + strikes. This fixes Savannah bug #12107. + Use `static' keyword for `sbit_line_metrics_field', + `strike_start_fields', `strike_end_fields'. + + * include/freetype/internal/tttypes.h (TT_FaceRec): Define + `sbit_table', `sbit_table_size', `sbit_num_strikes' if + FT_OPTIMIZE_MEMORY is set. + Don't define `num_sbit_strikes' and `sbit_strikes' if + FT_OPTIMIZE_MEMORY is set. + + * src/cff/cffobjs.c (sbit_size_reset): Handle FT_OPTIMIZE_MEMORY. + + * src/sfnt/sfobjs.c (sfnt_load_face): Fixed bug that prevented + loading SFNT fonts without a `kern' table. + Properly pass root->face_flags. + Remove code for TT_CONFIG_OPTION_EMBEDDED_BITMAPS. + + * src/sfnt/sfdriver.c (sfnt_interface) + [TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: Don't use `tt_find_sbit_image' + and `tt_load_sbit_metrics'. + + * src/sfnt/ttcmap.c: Optimize linear charmap scanning for Format 4. + (OPT_CMAP4): New macro. + (TT_CMap4Rec) [OPT_CMAP4]: New structure. + (tt_cmap4_init, tt_cmap4_set_range, tt_cmap4_next, tt_cmap4_reset) + [OPT_CMAP4]: New functions. + (tt_cmap4_char_next) [OPT_CMAP4]: Use `tt_cmap4_next' and + `tt_cmap4_reset'. + (tt_cmap4_class_rec) [OPT_CMAP4]: Use `TT_CMap4Rec' and + `tt_cmap4_init'. + + * src/truetype/ttobjs.c (Reset_SBit_Size): Handle + FT_OPTIMIZE_MEMORY. + + * src/autofit/afhints.h (AF_PointRec, AF_SegmentRec, AF_EdgeRec): + Optimize member types. + + * src/autofit/afloader.c (af_loader_done): Call + `af_glyph_hints_done'. + +2005-02-27 David Turner + + * src/sfnt/ttkern.c (tt_face_load_kern): Fix a small bug which + caused invalid (random) return values for the horizontal kerning. + +2005-02-25 David Turner + + Implement several memory optimizations to drastically reduce the + heap usage of FreeType, especially in the case of memory-mapped + files. The idea is to avoid loading and decoding tables in the + heap, and instead access the raw data whenever possible (i.e., when + it doesn't compromise performance). + + This has several benefits: For example, opening vera.ttf now uses + just a small amount of memory (even when the FT_Library footprint is + accounted for), until you start loading glyphs. Even then, you save + at least 20KB compared to the non-optimized case. Performance of + various operations, including open and close, has also been + dramatically improved. + + More optimizations to come, especially for the auto-hinter. + + * include/freetype/internal/sfnt.h (TT_Face_GetKerningFunc): New + function type. + (SFNT_Interface): Add it. + + * include/freetype/internal/tttypes.h (TT_HdmxEntryRec, TT_HdmxRec, + TT_Kern0_PairRec): Don't define if FT_OPTIMIZE_MEMORY is set. + (TT_FaceRec): Define `horz_metrics', `horz_metrics_size', + `vert_metrics', `vert_metrics_size', `hdmx_table', + `hdmx_table_size', `hdmx_record_count', `hdmx_record_size', + `hdmx_record_sizes', `kern_table', `kern_table_size, + `num_kern_tables', `kern_avail_bits', `kern_order_bits' if + FT_OPTIMIZE_MEMORY is set. + Don't define `hdmx', `num_kern_pairs', `kern_table_index', + `kern_pairs' if FT_OPTIMIZE_MEMORY is set. + + * src/base/ftdbgmem.c (ft_mem_table_set): Don't shadow variable. + Fix compiler warning. + + * src/cff/cffdrivr.c (Get_Kerning): Renamed to... + (cff_get_kerning): This. Simplify. + (cff_driver_class): Updated. + + * src/sfnt/Jamfile (_sources): Add `ttkern'. + * src/sfnt/rules.mk (SFNT_DRV_SRC): Add `ttkern.c'. + + * src/sfnt/sfdriver.c (sfnt_interface): Add `tt_face_get_kerning'. + + * src/sfnt/sfnt.c: Include `ttkern.c'. + + * src/sfnt/sfobjs.c: Include `ttkern.h'. + (sfnt_load_face): Consider the `kern' and `gasp' table as optional. + (sfnt_done_face): Call `tt_face_done_kern'. + Handle horizontal metrics for FT_OPTIMIZE_MEMORY. + + * src/sfnt/ttkern.c, src/sfnt/ttkern.h: New files. Code has been + taken from `ttload.c' and `ttload.h'. + Provide special versions of `tt_face_load_kern', + `tt_face_get_kerning', and `tt_face_done_kern' for + FT_OPTIMIZE_MEMORY. + + * src/sfnt/ttload.c (tt_face_load_metrics, tt_face_load_hdmx, + tt_face_free_hdmx): Provide version for FT_OPTIMIZE_MEMORY. + (tt_face_load_kern, tt_kern_pair_compare, TT_KERN_INDEX): Moved to + `ttkern.c'. + + * src/sfnt/ttload.h: Updated. + + * src/sfnt/ttsbit.c (sbit_metrics_field): Add `static' keyword. + + * src/truetype/ttdriver.c (Get_Kerning): Renamed to... + (tt_get_kerning): This. Simplify. + (tt_driver_class): Updated. + + * src/truetype/ttgload.c (TT_Get_Metrics): Renamed to... + (tt_face_get_metrics): This. Provide version for FT_OPTIMIZE_MEMORY. + Update all callers. + (Get_Advance_Widths): Replaced with... + (Get_Advance_WidthPtr): This. Provide version for + FT_OPTIMIZE_MEMORY. + Update all callers. + + * src/truetype/ttgload.h: Updated. + +2005-02-22 David Turner + + * src/base/ftdbgmem.c: Partly rewritten. Added the ability to list + all allocation sites in the memory debugger. Also a new function + FT_DumpMemory() was added. It is only available in builds with + FT_DEBUG_MEMORY defined, and you must declare it in your own code to + use it, i.e., with something like: + + extern void FT_DumpMemory( FT_Memory ); + + ... + + FT_DumpMemory( memory ); + + * include/freetype/config/ftoption.h + (TT_CONFIG_OPTION_BYTECODE_INTERPRETER): Comment out definition -- + again. + (FT_OPTIMIZE_MEMORY): New configuration macro to control various + optimizations for reducing the heap footprint of memory-mapped + TrueType files. + + * include/freetype/internal/ftmemory.h (FT_ARRAY_ZERO): New + convenience macro. + + * include/freetype/internal/tttypes.h (TT_FaceRec) + [FT_OPTIMIZE_MEMORY]: Use optimized types for `num_locations' and + `glyph_locations'. + + * src/truetype/ttgload.c (load_truetype_glyph): Call + `tt_face_get_location'. + + * src/truetype/ttobjs.c (tt_face_init) + [FT_CONFIG_OPTION_INCREMENTAL]: Improve error handling. + (tt_face_done): Call `tt_face_done_loca'. + + * src/truetype/ttpload.c (tt_face_get_location, tt_face_done_loca): + New functions. If FT_OPTIMIZE_MEMORY is set, the locations table is + read directly from memory-mapped streams, instead of being decoded + into the heap. + (tt_face_load_loca) [FT_OPTIMIZE_MEMORY]: New implementation. + (tt_face_load_cvt, tt_face_load_fpgm): Only load table if the + bytecode interpreter is compiled in. + + * src/truetype/ttpload.h: Updated. + + * src/autohint/ahglyph.c (ah_outline_load): Improve allocation + logic. + +2005-02-20 Werner Lemberg + + * builds/unix/ltmain.sh: Regenerated with `libtoolize --force + --copy' from libtool 1.5.14. + * builds/unix/aclocal.m4: Regenerated with `aclocal -I .' from + automake 1.9.4. + + * builds/unix/config.guess, builds/unix/config.sub: Updated from + `config' CVS module at subversions.gnu.org. + + * builds/unix/install-sh, builds/unix/mkinstalldirs: Updated from + `texinfo' CVS module at subversions.gnu.org. + +2005-02-14 Werner Lemberg + + * src/cff/cffcmap.c (cff_cmap_unicode_init): Don't try to build + a cmap for a CID-keyed font which doesn't have SIDs. + +2005-02-13 Werner Lemberg + + * src/type1/t1load.c (read_binary_data): Return more meaningful + value. + (parse_encoding, parse_subrs, parse_charstrings, parse_dict): Check + parser error value after call to T1_Skip_PS_Token (where necessary). + + * src/type1/t1parse.c (T1_Get_Private_Dict): Check parser error + value after call to T1_Skip_PS_Token. + + * src/cid/cidparse.c (cid_parser_new): Check parser error value + after call to cid_parser_skip_PS_token. + + * src/type42/t42parse.c (t42_parse_encoding, t42_parse_sfnts, + t42_parse_charstrings, t42_parse_dict): Check parser error value + after call to T1_Skip_PS_Token (where necessary). + + * src/psaux/psobjc.c (skip_string, ps_parser_skip_PS_token, + ps_tobytes): Add error messages. + +2005-02-12 Werner Lemberg + + * configure: Output more variables to the created Makefile so that + it can be used for ft2demos also (if the FT2DEMOS variable is + defined). + +2005-02-10 David Turner + + * src/pfr/pfrgload.c (pfr_glyph_load): Fix an unbounded growing + dynamic array when loading a glyph from a PFR font (Savannah bug + #11921). + + * src/base/ftbitmap.c (FT_Bitmap_Convert): Small improvements to the + conversion function (mainly stupid optimization). + + * src/base/Jamfile: Adding ftbitmap.c to the list of compiled files. + +2005-02-10 Werner Lemberg + + * builds/unix/freetype-config.in: Add new flag `--ftversion' to + return the FreeType version. Suggested by George Williams + . + + * docs/CHANGES: Updated. + +2005-02-09 Werner Lemberg + + * src/otvalid/otvmod.c (otv_validate): Deallocate arrays in case + of error. Reported by YAMANO-UCHI Hidetoshi . + +2005-02-08 Werner Lemberg + + * src/psaux/t1decode.c (t1_decoder_parse_charstrings) + : Accept `T1_Parse_Have_Moveto' state also which can + happen in empty glyphs. Reported by Ian Brown + (Savannah bug #11856). + +2005-02-04 Werner Lemberg + + * src/otlayout/*: Removed. Obsolete. + +2004-12-28 Werner Lemberg + + * builds/unix/ltmain.sh: Regenerated with `libtoolize --force + --copy' from libtool 1.5.10. + * builds/unix/aclocal.m4: Regenerated with `aclocal -I .' from + automake 1.9.4. + * builds/unix/configure: Regenerated with autoconf 2.59b. + + * builds/unix/config.guess, builds/unix/config.sub: Updated from + `config' CVS module at subversions.gnu.org. + + * builds/unix/install-sh: Updated from + `texinfo' CVS module at subversions.gnu.org. + + * builds/unix/ftsystem.c (FT_Stream_Open): Add proper cast for + ft_alloc. + Fix compiler warning. + +2004-12-27 Dirck Blaskey + + * src/cff/cffobjs.c (cff_face_init): Improve computation of + FT_STYLE_BOLD_FLAG. + +2004-12-27 Werner Lemberg + + * src/cff/cffobjs.c (cff_face_init): A CFF within an SFNT can have + only a single font. This is undocumented but has been verified on + the opentype list. + +2004-12-26 Werner Lemberg + + * Jamfile (FT2_COMPONENTS): Add `otvalid'. + +2004-12-25 Werner Lemberg + + * src/base/ftbitmap.c (FT_Bitmap_Convert): Fix compiler warning. + +2004-12-15 Werner Lemberg + + * vms_make.com: Add ftbitmap.obj. + +2004-12-14 Werner Lemberg + + * src/base/ftbitmap.c, include/freetype/ftbitmap.h: New files for + handling various bitmap formats. + + * include/freetype/config/ftheader.h (FT_BITMAP_H): New macro. + + * src/base/rules.mk (BASE_EXT_SRC): Add ftbitmap.c. + + * src/bdf/bdfdrivr.c (BDF_Glyph_Load): Don't convert bitmaps to 8bpp + but return them as-is. + + * docs/CHANGES: Mention new bitmap API. + * include/freetype/ftchapter.s: Updated. + +2004-12-11 Robert Clark + + * src/base/ftobjs.c (FT_Get_Kerning): Make kerning amount + dependent on ppem by scaling down for ppem < 25, then do normal + rounding. This gives slightly better results than rounding towards + zero. + +2004-12-09 Werner Lemberg + + * src/base/ftobjs.c (FT_Get_Kerning): Always round towards zero + for FT_KERNING_DEFAULT. This greatly enhances the kerning for + small ppem values. + +2004-12-08 Werner Lemberg + + * src/base/ftobjs.c (ft_glyphslot_clear): Reset `lsb_delta' and + `rsb_delta'. + +2004-12-05 Werner Lemberg + + * builds/unix/install.mk (install): Use $(OBJ_BUILD) for ftconfig.h. + +2004-12-03 Antoine Leca + + * include/freetype/ttnameid.h: Updated to latest + specifications from Microsoft. + +2004-11-26 Jouk Jansen + + * vms_make.com: Include ftbbox.c. + Fix `ccopt'. + Handle `otvalid' module. + Update `vmslib.dat' default values. + Fixes to `libs.opt'. + +2004-11-23 Anders Kaseorg + + * src/base/ftoutln.c (FT_OrientationExtremumRec, + ft_orientation_extremum_compute): Removed. + (FT_Outline_Get_Orientation): Rewritten, simplified. + + * src/autohint/ahglyph.c: Include FT_OUTLINE_H. + (ah_test_extremum, ah_get_orientation): Removed. + (ah_outline_load): Use FT_Outline_Get_Orientation. + + * src/base/ftsynth.c (ft_test_extrama, ft_get_orientation): Removed. + (FT_GlyphSlot_Embolden): Use FT_Outline_Get_Orientation. + +2004-11-23 Fernando Papa + + * src/truetype/ttinterp.h: Fix typo. + +2004-11-22 Antoine Leca + + * builds/win32/detect.mk: Corrected logic that detects Windows NT to + use the previous change even if win32 is forced. Corrected + detection of win32 on Win9X. + + * builds/dos/detect.mk: Added same correction as for win32 about + COPY on Windows NT. Detection of plain DOS 7.x. + +2004-11-22 Werner Lemberg + + * builds/detect.mk: Undo change from 2004-11-20. + * builds/win32/detect.mk: If the `OS' environment variable contains + `Windows_NT', use `cmd.exe /c copy' for copying files. + +2004-11-20 Werner Lemberg + + * builds/detect.mk (dos_setup): Use `cmd.exe' for copying + $(CONFIG_MK) to force lowercase file name under Windows. + +2004-11-19 Werner Lemberg + + Fix a serious bug in the TT hinter. + + * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Don't shift + points vertically before hinting. + + * docs/CHANGES: Updated. + + * src/cache/ftcglyph.c (FTC_GNode_UnselectFamily, + FTC_GCache_Lookup): A new try to fix comparison with zero. + +2004-11-16 Werner Lemberg + + * builds/unix/configure.ac: Add `-fno-strict-aliasing' if gcc is + used. + * builds/unix/configure: Regenerated. + * builds/unix/config.guess, builds/unix/config.sub: Updated from + `config' CVS module at subversions.gnu.org. + +2004-11-16 Dr. Martin P.J. Zinser + + * src/cache/ftcglyph.c (FTC_GNode_UnselectFamily, + FTC_GCache_Lookup): Fix comparison with zero. + + * docs/INSTALL.VMS: Updated. + + * vms_make.com: Updated. All `descrip.mms' files are now created + automatically. + + * src/*/descrip.mms: Removed. + +2004-11-16 Owen Taylor + + * builds/unix/freetype-config.in: Suppress -L$libdir for + /usr/lib64 as well as /usr/lib. (Reported by Dan Winship - + https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=139199) + +2004-11-11 Werner Lemberg + + * src/cff/cffdrivr.c (cff_service_ps_info): Updated. + * src/cid/cidriver.c (cid_service_ps_info): Updated. + * src/type42/t42drivr.c (t42_ps_get_font_private): New function. + (t42_service_ps_info): Updated. + + * src/type42/t42parse.c (t42_parse_dict): Remove compiler warning. + +2004-11-11 David Bevan + + Add new function FT_Get_PS_Font_Private(). + + * include/freetype/internal/services/svpsinfo.h + (PS_GetFontPrivateFunc): New service function. + + * include/freetype/t1tables.h, src/base/fttype1.c + (FT_Get_PS_Font_Private): New function. + + * src/type1/t1driver.c (t1_ps_get_font_private): New function. + (t1_service_ps_info): Updated. + +2004-10-13 Werner Lemberg + + * include/freetype/config/ftstdlib.h: Include `stddef.h'. + (ft_ptrdiff_t): Define. + + * include/freetype/fttypes.h (FT_PtrDist): Use `ft_ptrdiff_t'. + + * src/cid/cidload.c (cid_parse_dict), src/type1/t1load.c + (parse_dict): Fix compiler warning. + +2004-10-11 Joshua Neal + + * src/sfnt/ttcmap.c (tt_face_build_cmaps): Check for pointer + overflow. + + * src/sfnt/ttload.c (tt_face_load_hdmx): Protect against bad input. + Don't use FT_QNEW_ARRAY but FT_NEW_ARRAY to make deallocation work + in case of failure. + + * src/sfnt/ttsbit.c (Load_SBit_Range): Check range intervals. + (tt_face_load_sbit_strikes): Allocate `strike_sbit_ranges' after + frame test. + + * src/truetype/ttgload.c (TTLoad_Simple_Glyph): Add assertion for + `flag'. + +2004-10-09 Werner Lemberg + + * docs/CHANGES: Updated. + +2004-10-09 Boris Letocha + + Fix handling of NPUSHW if skipped in data stream. + + * src/truetype/ttinterp.c (opcode_length): Set value for NPUSHW + to -2. + (SkipCode, TT_RunIns): Use opcode_length value for computation of + bytes to be skipped. + +2004-09-10 Jouk Jansen + + * vms_make.com: Updated. + +2004-09-09 Werner Lemberg + + Adding OpenType validation module. The code is based on the + (unfinished) `otlayout' module but has been heavily modified to make + it much more compact. + + * src/otvalid/*: New module. + + * include/freetype/ftotval.h, src/base/ftotval.c, + include/freetype/internal/services/svotval.h: New files. + + * include/freetype/config/ftmodule.h: Add otv_module_class. + * include/freetype/config/ftheader.h (FT_OPENTYPE_VALIDATE_H): New + macro. + * include/freetype/internal/ftserv.h + (FT_SERVICE_OPENTYPE_VALIDATE_H): New macro. + * include/freetype/internal/fttrace.h (otvmodule, otvcommon, + otvbase, otvgdef, otvgpos, otvgsub, otvjstf): New trace components. + + * include/freetype/ftchapters.h: Updated. + + * src/base/Jamfile (Library), src/base/descrip.mms (OBJS), + src/base/rules.mk (BASE_EXT_SRC): Updated. + + * docs/CHANGES: Updated. + +2004-09-08 Werner Lemberg + + * src/tools/docmaker/sources.py (re_source_block_format2) : + Use lookahead assertion to not match `*/'. This removes spurious + insertions of `/' in the HTML output. + +2004-09-07 Werner Lemberg + + * src/truetype/ttgxvar.c (TT_Vary_Get_Glyph_Deltas): Fix call to + FT_NEW_ARRAY. + +2004-09-04 Werner Lemberg + + * include/freetype/internal/ftobjs.h: Don't include + FT_CONFIG_STANDARD_LIBRARY_H. + (FT_Validator, FT_ValidationLevel, FT_ValidatorRec, FT_VALIDATOR, + ft_validator_init, ft_validator_run, ft_validator_error, FT_INVALID, + FT_INVALID_TOO_SHORT, FT_INVALID_OFFSET, FT_INVALID_FORMAT, + FT_INVALID_GLYPH_ID, FT_INVALID_DATA): Move to... + + * include/freetype/internal/ftvalid.h: New file. + Make FT_INVALID return module-specific error codes. + + * include/freetype/internal/internal.h (FT_INTERNAL_VALIDATE_H): New + macro. + + * include/freetype/fterrors.h: Undefine FT_ERR_PREFIX only if + FT_KEEP_ERR_PREFIX isn't defined. + + * src/base/ftobjs.c: Include FT_INTERNAL_VALIDATE_H. + + * src/sfnt/ttcmap.h: Don't include FT_INTERNAL_OBJECTS_H but + FT_INTERNAL_VALIDATE_H. + + * src/sfnt/ttcmap.c: Don't include FT_INTERNAL_OBJECTS_H but + FT_INTERNAL_VALIDATE_H. + Include sferrors.h before FT_INTERNAL_VALIDATE_H. + s/FT_Err_Ok/SFNT_Err_Ok/. + + * src/sfnt/sferrors.h: Define FT_KEEP_ERR_PREFIX. + + * src/type1/t1afm.c: Include t1errors.h. + +2004-09-03 Werner Lemberg + + * src/base/ftdebug.c (ft_debug_init): Highest debug level is 7, + not 6. + * docs/DEBUG: Updated. + +2004-08-30 Werner Lemberg + + * include/freetype/tttags.h (TTAG_BASE, TTAG_GDEF, TTAG_GPOS, + TTAG_JSTF): New tags. + + * include/freetype/fttypes.h (FT_Bytes, FT_Tag): New typedefs. + (FT_Int): Add `signed'. + +2004-08-29 Werner Lemberg + + * src/otlayout/otlgpos.c (otl_gpos_subtable_validate): Add argument + to pass number of lookups. + Update all callers. + Don't call otl_lookup_list_validate but otl_lookup_validate. + (otl_gpos_validate): Call otl_lookup_list_validate instead of + otl_gpos_subtable_validate. + + * src/otlayout/otlgpos.h: Updated. + + * src/otlayout/otljstf.c (otl_jstf_max_validate): Add argument to + pass number of lookups. + Update all callers. + + + * src/cff/cffparse.c (cff_parse_real): s/exp/exponent/ to avoid + compiler warning. + + + * src/sfnt/ttcmap0.c, src/sfnt/ttcmap0.h: Renamed to... + * src/sfnt/ttcmap.c, src/sfnt/ttcmap.h: This. + * src/sfnt/Jamfile, src/sfnt/rules.mk, src/sfnt/sfdriver.c, + src/sfnt/sfnt.c, src/sfnt/sfobjs.c: Updated. + + + * builds/compiler/gcc-dev.mk (CFLAGS): Don't add `-Wnested-externs' + if compiler is g++ (v3.3.3 emits a warning otherwise). + +2004-08-28 Werner Lemberg + + * src/otlayout/otlgpos.c (otl_value_length): Return number of bytes, + not number of 16bit entities. + (otl_gpos_lookup2_validate): Check class definition tables for + format 2. + Fix loop for format 2. + (otl_liga_mark2_validate): Fix offset for otl_anchor_validate. + +2004-08-27 Werner Lemberg + + * src/base/ftmac.c: Don't include truetype/ttobjs.h. + Don't include type1/t1objs.h. + (FT_New_Face_From_FSSpec) [!__MWERKS__]: Remove compiler warnings. + +2004-08-27 Mathieu Malaterre + + * src/base/ftmac.c: Handle OS_INLINE for xlc compiler also. + +2004-08-27 Werner Lemberg + + * src/otlayout/otlayout.h: Add copyright. + (OTL_INVALID_OFFSET): Removed. + + * src/otlayout/otlgdef.h: Include otlayout.h. + Comment out inclusion of otltable.h. + + * src/otlayout/otlgpos.c (otl_gpos_lookup4_validate): Fix call + to otl_base_array_validate. + (otl_liga_mark2_validate): Fix `for' loop. + + * src/otlayout/otlgsub.c (otl_ligature_validate): Check `glyph_id', + not components array. + + * src/otlcommn.c (otl_lookup_get_count, otl_feature_get_count): + Comment out. + (otl_lookup_list_get_count, otl_feature_list_get_count): Activate. + (otl_feature_list_validate, otl_gsubgpos_get_lookup_count): + s/otl_lookup_get_count/otl_lookup_list_get_count/. + (otl_script_list_validate): + s/otl_feature_get_count/otl_feature_list_get_count/. + (otl_script_validate): Call otl_lang_validate for default language. + + * src/otlayout/otlcommn.h: Updated. + +2004-08-16 Werner Lemberg + + * src/otlayout/otlgpos.c (otl_gpos_lookup1_validate, + otl_gpos_lookup2_validate, otl_gpos_lookup3_validate, + otl_gpos_lookup4_validate, otl_gpos_lookup5_validate, + otl_gpos_lookup6_validate, otl_gpos_lookup9_validate, + otl_gpos_validate): Update + function arguments. + (otl_gpos_lookup7_validate, otl_gpos_lookup8_validate): Update + function arguments. + Handle NULL offsets correctly. + Check sequence and lookup indices for format 3. + (otl_pos_rule_validate, otl_chain_pos_rule_validate): Add argument + to pass lookup count. + Check sequence and glyph indices. + (otl_gpos_subtable_validate): Update function arguments. + Update callers. + + * src/otlayout/otlgpos.h: Updated. + + * src/otlayout/otlgsub.c (otl_gsub_lookup1_validate, + otl_gsub_lookup3_validate, otl_gsub_lookup8_validate): Update + function arguments. + Add glyph index checks. + (otl_sequence_validate, otl_alternate_set_validate, + otl_ligature_validate): Add argument to pass glyph count. + Update callers. + Add glyph index check. + (otl_gsub_lookup2_validate, otl_gsub_lookup4_validate): Update + function arguments. + (otl_ligature_set_validate): Add argument to pass glyph count. + Update caller. + (otl_sub_class_rule_validate, + otl_sub_class_rule_set_validate): Removed. + (otl_sub_rule_validate, otl_chain_sub_rule_validate): Add argument + to pass lookup count. + Update callers. + Add lookup index check. + (otl_sub_rule_set_validate, otl_chain_sub_rule_set_validate): Add + argument to pass lookup count. + Update callers. + (otl_gsub_lookup5_validate): Update function arguments. + Handle NULL offsets correctly. + Don't call otl_sub_class_rule_set_validate but + otl_sub_rule_set_validate. + Check sequence and lookup indices for format 3. + (otl_gsub_lookup6_validate): Update function arguments. + Handle NULL offsets correctly. + Check sequence and lookup indices for format 3. + (otl_gsub_lookup7_validate, otl_gsub_validate): Update function + arguments. + + * src/otlayout/otlgsub.h: Updated. + + * src/otlayout/otlbase.c (otl_base_validate): Handle NULL offsets + correctly. + + * src/otlayout/otlcommn.c (otl_class_definition_validate): Fix + compiler warning. + (otl_coverage_get_first, otl_coverage_get_last): New functions. + (otl_lookup_validate): Add arguments to pass lookup and glyph + counts. + Update callers. + (otl_lookup_list_validate): Add argument to pass glyph count. + Update callers. + + * src/otlayout/otlcommn.h: Updated. + + * src/otlayout/otljstf.c (otl_jstf_extender_validate, + otl_jstf_max_validate, otl_jstf_script_validate, + otl_jstf_priority_validate, otl_jstf_lang_validate): Add parameter + to validate glyph indices. + Update callers. + (otl_jstf_validate): Add parameter which specifies number of glyphs + in font. + + * src/otlayout/otljstf.h: Updated. + +2004-08-15 Werner Lemberg + + * src/otlayout/otlgpos.c (otl_liga_mark2_validate): Add parameter + to handle possible NULL values properly. + Update all callers. + +2004-08-15 Werner Lemberg + + * src/otlayout/gpos.c: Rename counting variables to be more + meaningful. + Add copyright. + (otl_liga_attach_validate): Renamed to... + (otl_liga_mark2_validate): This. + Update all callers. + (otl_mark2_array_validate): Removed. + (otl_gpos_lookup6_validate): Call otl_liga_mark2_validate, not + otl_mark2_array_validate. + (otl_pos_class_set_validate, otl_pos_class_rule_validate): Removed. + (otl_gpos_lookup7_validate): Complete code for format 2. + (otl_chain_pos_class_rule_validate, + otl_chain_pos_class_set_validate): Removed. + (otl_gpos_lookup8_validate): Don't call + otl_chain_pos_class_set_validate but + otl_chain_pos_rule_set_validate. + Simplify some code. + + * src/otlayout/otlgpos.h: Add copyright. + +2004-08-14 Werner Lemberg + + * src/otlayout/otljstf.c (otl_jstf_gsub_mods_validate): Removed. + (otl_jstf_gpos_mods_validate): Renamed to... + (otl_jstf_gsubgpos_mods_validate): This. + Test whether lookup_count is zero. + (otl_jstf_priority_validate): Use otl_jstf_gsubgpos_mods_validate. + (otl_jstf_validate): Initialize gsub_lookup_count and + gpos_lookup_count if gsub or gpos is zero. + + * src/otlayout/otlgsub.c: Rename counting variables to be more + meaningful. + Add copyright. + (otl_gsub_lookup1_validate): Simplify code. + (otl_gsub_lookup2_validate, otl_gsub_lookup3_validate, + otl_gsub_lookup4_validate, otl_gsub_lookup7_validate): Remove unused + variables. + (otl_gsub_lookup5_validate): Remove unused variable. + Fix call to otl_sub_rule_set_validate and + otl_sub_class_rule_set_validate. + (otl_chain_sub_class_rule_validate, + otl_chain_sub_class_set_validate): Removed. + (otl_gsub_lookup6_validate): Remove unused variable. + Fix call to otl_chain_sub_rule_set_validate. + (otl_gsub_lookup7_validate): Handle lookup type 8 also. + (otl_gsub_lookup8_validate: New function. + (otl_gsub_lookup1_apply, otl_gsub_lookup2_apply, + otl_gsub_lookup3_apply): Commented out. + (otl_gsub_validate_funcs): Add otl_gsub_lookup7_validate and + otl_gsub_lookup8_validate. + (otl_gsub_validate): Updated. + + * src/otlayout/otlgsub.h: Add copyright. + + * src/otlayout/otlcommn.c, src/otlayout/otlcommn.h + (otl_coverage_get_index): Comment out. + +2004-08-13 Werner Lemberg + + * src/otlayout/otlcommn.c (otl_gsubgpos_get_lookup_count): New + function. + * src/otlayout/otlcommn.h: Updated. + + * src/otlayout/otlbase.c: Rename counting variables to be more + meaningful. + Add copyright message. + * src/otlayout/otlbase.h: Add copyright message. + + * src/otlayout/otlgdef.c: Rename counting variables to be more + meaningful. + Add copyright message. + Use OTL_CHECK everywhere. + (otl_caret_value_validate): Remove unused variable. + (otl_gdef_validate): All tables are optional. + * src/otlayout/otlgdef.h: Add copyright message. + + * src/otlayout/otljstf.c: Rename counting variables to be more + meaningful. + Add copyright message. + (otl_jstf_gsub_mods_validate, otl_jstf_gpos_mods_validate): Add + parameter to pass lookup count. + Update all callers. + Check lookup array. + (otl_jstf_max_validate): + s/otl_gpos_subtable_check/otl_gpos_subtable_validate/. + (otl_jstf_priority_validate, otl_jstf_lang_validate, + otl_jstf_script_validate): Add two parameters to pass lookup counts. + Update all callers. + (otl_jstf_validate): Add two parameters to pass GPOS and GSUB + table offsets; use otl_gsubgpos_get_lookup_count to convert extract + lookup counts. + Fix typo. + * src/otlayout/otljstf.h: Updated. + Add copyright message. + + * src/otlayout/otlgpos.c (otl_gpos_subtable_validate): New function. + (otl_gpos_validate): Use it. + * src/otlayout/otlgpos.h: Updated. + +2004-08-13 Werner Lemberg + + * src/otlayout/otcommn.c: Use OTL_CHECK everywhere. + (otl_coverage_validate): Initialize `p', + s/count/num_glyphs/. + s/start_cover/start_coverage/. + (otl_coverage_get_index): Return OTL_Long, not OTL_Int. + Remove unused variables. + (otl_class_definition_validate): s/count/num_glyphs/. + Remove unused variables. + (otl_class_definition_get_value, otl_device_table_get_start, + otl_device_table_get_end, otl_device_table_get_delta, + otl_lookup_get_table, otl_lookup_list_get_count, + otl_lookup_list_get_lookup, otl_lookup_list_get_table, + otl_feature_get_lookups, otl_feature_list_get_count, + otl_feature_list_get_feature, otl_lang_get_count, + otl_lang_get_req_feature, otl_lang_get_features): Commented out + temporarily until we really need it. + (otl_lookup_validate): Removed. + (otl_lookup_table_validate): Renamed to ... + (otl_lookup_validate): This. Update callers. + (otl_lookup_list_validate): Remove already commented out definition + and move the other definition up. + (otl_feature_validate): Add parameter to pass number of lookups. + Update callers. + Check lookup indices. + (otl_feature_list_validate): Add parameter to pass lookup table. + Update callers. + (otl_lang_validate): Add parameter to pass number of features. + Update callers. + Handle req_feature and check feature indices. + (otl_script_validate): Add parameter to pass number of features. + Update callers. + (otl_script_list_validate): Add parameter to pass feature table. + Update callers. + + * src/otlayout/otcommn.h: s/LOCALDEF/LOCAL/. + Comment out the same functions as in otcommn.c. + (otl_script_list_get_script): Removed. + + * src/otlayout/otlgsub.c (otl_gsub_lookup1_apply): Change `index' to + type OTL_Long. + (otl_gsub_lookup2_apply, otl_gsub_lookup3_apply): Change `index' to + type OTL_Long. + Fix test. + (otl_gsub_validate): Fix order of validation. + + * src/otlayout/otlgpos.c (otl_gpos_validate): Fix order of + validation. + +2004-08-12 Werner Lemberg + + Make otlayout module compile (without actually working). + + * src/otlayout/*: s/OTL_Valid/OTL_Validator/. + s/NULL/0/. + + * src/otlayout/otlayout.h: Fix various typos. + (OTL_Bool): New typedef. + (OTL_Int, OTL_Long, OTL_Int16, OTL_Int32): Use `signed' keyword. + (OTL_Err_InvalidArgument): Removed. + (OTL_Err_InvalidData, OTL_Err_InvalidSize): New enum values. + (OTL_MAKE_TAG): Add missing parenthesis. + (OTL_INVALID_DATA): Use OTL_Err_InvalidData. + (OTL_INVALID_TOO_SHORT): Use OTL_Err_InvalidSize. + (OTL_INVALID_FORMAT, OTL_INVALID_OFFSET): New macros. + + * src/otlayout/otlgpos.c: s/FT_/OTL_/. + s/OTL_Short/OTL_Int16/. + (otl_gpos_pairset_validate): Add return type. + (otl_base_array_validate): Fix call to otl_anchor_validate. + (otl_liga_array_validate): Fix call to otl_liga_attach_validate. + (otl_gpos_lookup5_validate): Fix typos. + (otl_gpos_lookup6_validate): Fix call to otl_mark2_array_validate. + (otl_gpos_lookup7_validate): Comment out unfinished code. + Fix typos. + + * src/otlayout/otlgsub.c: Add forward declaration for + otl_gsub_validate_funcs. + (otl_gsub_lookup1_apply, otl_gsub_lookup2_apply, + otl_gsub_lookup3_apply): Fix call to otl_parser_check_property. + s/otl_coverage_lookup/otl_coverage_get_index/. + (otl_ligature_validate): Add missing variable declaration. + (otl_sub_rule_validate): Fix typo. + (otl_sub_class_rule_validate): Add missing variable declaration. + Fix typo. + (otl_gsub_lookup5_validate): Fix typo. + (otl_gsub_lookup6_validate): Fix call to + otl_chain_sub_class_set_validate. + (otl_gsub_validate_funcs): Don't use `const'. + + * src/otlayout/otlcommn.c (otl_class_definition_get_value, + otl_device_table_validate, otl_device_table_get_delta, + otl_lookup_validate, otl_script_validate): Add missing + variable declarations. + (otl_lookup_list_validate): Comment out first definition. + (otl_lookup_list_foreach, otl_feature_list_foreach): Comment out. + (otl_feature_list_validate): + s/otl_feature_table_validate/otl_feature_validate/. + (otl_script_list_validate): + s/otl_script_table_validate/otl_script_validate/. + + * src/otlayout/otlcommn.h: Comment out first declaration. + (otl_lookup_list_foreach, otl_feature_list_foreach): Comment out. + + * src/otlayout/otlbase.c (otl_base_coord_validate): Fix call to + otl_device_table_validate. + (otl_base_script_validate): Add missing variable declarations. + (otl_base_script_list_validate): Fix call to + otl_base_script_validate. + (otl_axis_table_validate): Fix calls to otl_base_tag_list_validate + and otl_base_script_list_validate. + (otl_base_validate): Fix calls to otl_axis_table_validate. + + * src/otlayout/otlgdef.c (otl_attach_list_validate): Fix call to + otl_attach_point_validate. + (otl_caret_value_validate): Add missing variable declaration. + Fix call to otl_device_table_validate. + (otl_ligature_glyph_validate): Fix call to otl_caret_value_validate. + (otl_ligature_caret_list_validate): Fix call to + otl_ligature_glyph_validate. + (otl_gdef_validate): Fix calls to otl_class_definition_validate, + otl_attach_list_validate, otl_ligature_caret_list_validate, and + otl_class_definition_validate. + + * src/otlayout/otltable.h (otl_table_validate, otl_table_init, + otl_table_set_script): Comment out. + + * src/otlayout/otlparse.h (OTL_ParserRec): + s/OTL_Alternate/OTL_GSUB_Alternate/. + (OTL_ParseError): Add OTL_Err_Parser_Memory and + OTL_Err_Parser_Internal. + (otl_parser_error): Fix typo. + (otl_parser_check_property): Remove third argument. + + * src/otlayout/otlparse.c (otl_string_ensure): + s/OTL_Parse_Err_Memory/OTL_Err_Parser_Memory/. + (OTL_STRING_ENSURE, otl_parser_error, otl_parser_get_index, + otl_parser_replace_1, otl_parser_replace_n): Fix typos. + (OTL_PARSER_UNCOVERED): Removed. + (otl_parser_check_property): Remove third argument. + + * src/otlayout/otljstf.c (otl_jstf_priority_validate): Add missing + variable declaration. + + * src/otlayout/otlutils.h (OTL_MEM_REALLOC): Fix typo. + +2004-08-11 Danny + + * src/base/ftstream.c (FT_Stream_Close): Don't reset stream->close + to NULL. This allows custom close functions to delete the FT_STREAM + object. + +2004-08-11 Werner Lemberg + + Add API to get information about SFNT tables. + + * include/freetype/internal/services/svsfnt.h + (FT_SFNT_Table_Info_Func): New typedef. + (SFNT_Table): Add it. + + * src/base/ftobjs (FT_Sfnt_Table_Info): New function. + + * include/freetype/tttables.h: Updated. + + * src/sfnt/sfdriver.c (sfnt_table_info): New function. + (sfnt_service_sfnt_table): Add it. + + * docs/CHANGES: Updated. + + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 10. + + * builds/unix/configure.ac (version_info): Set to 9:8:3. + * builds/unix/configure: Updated. + + * builds/win32/visualc/index.html, + builds/win32/visualc/freetype.dsp, + builds/win32/visualc/freetype.vcproj: s/219/2110/, s/2.1.9/2.1.10/. + + * builds/freetype.mk (refdoc), README, Jamfile (RefDoc): + s/2.1.9/2.1.10/. + + * docs/CHANGES, docs/VERSION.DLL: Updated. + +2004-08-11 Detlef Würkner + + * src/base/ftrfork.c (FT_Raccess_Guess) + [!FT_CONFIG_OPTION_GUESSING_EMBEDDED_FORK]: Remove compiler + warnings. + +2004-08-06 Adam Piotrowski + + * src/pfr/pfrload.c (pfr_sort_kerning_pairs): Single-byte + adjustments are unsigned, not signed. + +2004-08-05 David Turner + + `Activate' gray-scale specifing hinting within the TrueType + bytecode interpreter. This is an experimental feature which + should probably be made optional. + + * src/truetype/ttgload.c (TT_Process_Simple_Glyph, + load_truetype_glyph): Move the code to set the pedantic_hinting flag + to... + (TT_Load_Glyph): Here. + Set `grayscale' flag except for `FT_LOAD_TARGET_MONO'. + + * src/truetyep/ttinterp.c (Ins_GETINFO): Return MS rasterizer + version 1.7. + Return rotation and stretching info only if glyph is rotated or + stretched, respectively. + Handle grayscale info. + + * src/truetype/ttinterp.h (TT_ExecContextRec): Add `grayscale' + member. + +2004-08-02 George Williams + + * src/base/ftobjs.c (FT_Attach_File): Initialize `open.stream'. + +2004-08-01 Werner Lemberg + + * docs/CHANGES: Updated. + +2004-08-01 George Williams + + FreeType now can read kerning values from PFM files. + + * src/type1/t1afm.c (T1_Done_AFM): Renamed to... + (T1_Done_Metrics): This. + Update all callers. + (T1_Read_AFM): Make it static. + Don't enter and leave a frame. + (LITTLE_ENDIAN_USHORT, LITTLE_ENDIAN_UINT): New macros. + (T1_Read_PFM): New function. + (T1_Read_Metrics): New higher-level function to be used instead of + T1Read_AFM. + Update all callers. + +2004-07-31 Werner Lemberg + + * src/pcf/pcfread (pcf_load_font), src/bdf/bdfdrivr.c + (BDF_Face_Init), src/truetype/ttgxvar (TT_Get_MM_Var, + tt_face_vary_cvt): Fix compiler warnings. + +2004-07-26 Søren Sandmann + + * src/pcf/pcfread.c (pcf_interpret_style): Always allocate memory for + face->style_name. + * src/pcf/pcfdrivr.c (PCF_Face_Done): Free `style_name'. + +2004-07-26 Darren J Longhorn + + * include/freetype/config/ftconfig.h (FT_SIZEOF_LONG): Recognize + five-byte `long' (which is avoided then). + +2004-07-25 Detlef Würkner + + * src/pcf/pcfdrivr.c (PCF_Set_Pixel_Size): Compare heights, not + ppem values. + (PCF_Set_Point_Size): Don't call PCF_Set_Pixel_Size but provide own + code to compare ppem values. + * src/bdf/bdfdrivr.c (BDF_Set_Pixel_Size): Compare heights, not + ppem values. + (BDF_Set_Point_Size): Don't call BDF_Set_Pixel_Size but provide own + code to compare ppem values. + +2004-07-25 Kornfeld Eliyahu Peter + + * src/sfnt/sfobjs.c (sfnt_load_face): Handle + TT_NAME_ID_PREFERRED_FAMILY and TT_NAME_ID_PREFERRED_SUBFAMILY. + +2004-07-24 Derek B. Noonburg + + * src/cff/cffload.c (cff_font_load): Always create inverse mapping. + Even if the charstring count is the same as the CID count, it is + still possible that the font uses a different CID -> GID mapping. + +2004-07-23 Werner Lemberg + + * src/truetype/ttobjs.c (tt_face_init): Accept 0x00020000 format tag + found in some Arphic fonts made for Chinese version of Windows 3.1. + +2004-07-17 David Turner + + Fixed a dangling pointer bug in the cache code that happened in very + rare cases, i.e., when a new family object was destroyed by an + out-of-memory condition during a glyph node initialization. The + function FTC_Cache_Lookup would flush the cache and restart the + lookup with a bad pointer. + + * include/freetype/cache/ftcglyph.h (FTC_FAMILY_TREE): New macro. + (FTC_GCACHE_LOOKUP_CMP): Use it. + Handle reference count in `num_nodes' correctly. + + * src/cache/ftcglyph.c (FTC_GNode_UnselectFamily): Use + FTC_FAMILY_FREE. + (FTC_GCache_Lookup): Handle reference count in `num_nodes' correctly. + + * src/cache/ftcmanag.c (FTC_Manager_FlushN): Fixed a cache flushing + bug. + + * src/truetype/ttinterp.c (Normalize): Fixed a bug that caused + long and unnecessary delays while normalizing huge vectors. + +2004-07-15 Werner Lemberg + + * docs/CHANGES: Updated. + + * src/base/ftstroke.c (FT_Stroker_ParseOutline): Fix compiler + warning. + +2004-07-15 David Turner + + * src/base/ftstroke.c (FT_Stroker_ParseOutline): Single points + are not stroked, preventing a bug with pala.ttf and other + fonts. + + * include/freetype/ftstroke.h: Updating documentation comments. + +2004-07-13 Werner Lemberg + + * src/base/ftstroke.c (ft_stroke_border_reverse): Removed. Unused. + +2004-07-12 David Turner + + * src/base/ftstroke.c (ft_stroke_border_close): Add second parameter + to indicate reversion of points. + Update all callers. + (ft_stroke_border_reverse): Fix initialization of `point1' and + `tag1'. + + * src/cache/ftcsbits.c (ftc_snode_load): Fixing advance computation + for transformed glyphs. + +2004-07-11 David Turner + + Fix bugs that prevented the stroker to correctly generate stroked + paths from closed paths, i.e., nearly all glyphs in vectorial fonts. + + The code is still _very_ buggy though; treat with special care. + + * src/base/ftstroke.c (FT_STROKE_TAG_BEGIN_END): New macro. + (ft_stroke_border_reverse): New function. + (ft_stroker_inside): Remove local variable `sigma'; use different + threshold. + (ft_stroker_add_reverse_left): Switch begin/end tags if necessary. + (FT_Stroker_EndSubPath): Call ft_stroker_inside and + ft_stroke_border_reverse. + +2004-06-26 Peter Kovar + + * src/truetype/ttgload.c (load_truetype_glyph): Fix typo. + +2004-06-25 Werner Lemberg + + * src/type1/t1afm.c (afm_atoindex): Fix boundary test. Reported + by Dirck Blaskey. + +2004-06-24 David Turner + + + * Version 2.1.9 released. + ========================= + + + * src/truetype/ttgload.c, src/truetype/ttxgvar.c: Removing + compiler warnings. + +2004-06-23 Werner Lemberg + + * include/freetype/internal/ftmemory.h [FT_DEBUG_MEMORY]: Declare + FT_QAlloc_Debug and FT_QRealloc_Debug. + + * src/base/ftutil.c (FT_QAlloc): Fix error and debug messages. + (FT_QRealloc): Call FT_QAlloc if original pointer is NULL. + Fix error message. + +2004-06-23 David Turner + + * include/freetype/internal/ftmemory.h, src/base/ftutil.c + (FT_QAlloc, FT_QRealloc), src/base/ftdbgmem.c (FT_QAlloc_Debug, + FT_QRealloc_Debug): New functions that perform allocation without + zero-ing out the corresponding blocks. + + * include/freetype/internal/ftmemory.h (FT_MEM_QALLOC, + FT_MEM_QREALLOC, FT_MEM_QNEW, FT_MEM_QNEW_ARRAY, + FT_MEM_QRENEW_ARRAY, FT_QALLOC, FT_QREALLOC, FT_QNEW, FT_QNEW_ARRAY, + FT_QRENEW_ARRAY): New macros. + + * src/base/ftstream.c (FT_Stream_EnterFrame): Use FT_QALLOC. + * src/gzip/ftgzip.c (FT_Stream_OpenGzip): Use FT_QNEW_ARRAY. + * src/sfnt/sfobjs.c (tt_face_get_name): Use FT_QNEW_ARRAY. + + * src/sfnt/ttload.c (tt_face_load_directory, tt_face_load_metrics, + tt_face_load_gasp): Use FT_QNEW_ARRAY. + (tt_face_load_kern): Use FT_QNEW_ARRAY. + Small optimization in the kerning table verifier; this speeds up + TrueType face opening by about 7%. + (tt_face_load_hdmx): Use FT_QNEW_ARRAY and FT_QALLOC. + + * include/freetype/config/ftmodule.h: Changed the order of modules, + putting TrueType and Type 1 first. This dramatically improves the + performance of face open/close operations. For example, putting the + TrueType driver first in the list results in a 5x speedup when + opening `Vera.ttf'. + + The very problem is that both the PCF and BDF drivers do a lot more + than necessary to detect that they cannot handle a font file. + +2004-06-22 Werner Lemberg + + * src/pcf/pcfread.c (pcf_read_TOC, pcf_get_properties, + pcf_get_metrics, pcf_get_bitmaps, pcf_get_encodings): Improve + debugging messages. + + * src/pcf/pcfdrivr.c (FT_COMPOMENT): Move up. + (PCF_Face_Init): Simplify code. + + * src/bdf/bdfdrivr.h (BDF_FaceRec): New element `default_glyph'. + + * src/bdf/bdflib.c (_bdf_add_property, _bdf_parse_start), + src/bdf/bdf.h (bdf_font_t): s/default_glyph/default_char/. + + * src/bdf/bdfdrivr.c (BDF_Face_Init): Fix number of glyphs. + Set `default_glyph'. + (BDF_Glyph_Load): Use `default_glyph' for undefined glyph. + + * docs/CHANGES: Updated. + +2004-06-21 Werner Lemberg + + * docs/CHANGES: Updated. + +2004-06-21 David Turner + + * src/truetype/ttgload.c (TT_Process_Simple_Glyph, + load_truetype_glyph): Don't access (unrounded) + `TT_Size.root.metrics' but (rounded) `TT_Size.metrics'. This fixes + a scaling bug that caused incorrect rendering when the bytecode + interpreter was enabled. + +2004-06-14 Huw D M Davies + + * src/winfonts/winfnt.c (FNT_Face_Init): Set x_ppem and y_ppem + based on pixel_width and pixel_height. + (FNT_Size_Set_Pixels): Updated. + +2004-06-14 Werner Lemberg + + * src/lzw/zopen.c: Comment out inclusion of signal.h and unistd.h. + Reported by Hyvärinen Jyrki Juhani. + +2004-06-11 Werner Lemberg + + * docs/CHANGES: Updated. + +2004-06-10 David Turner + + * src/base/ftobject.c, src/base/fthash.c, src/base/ftexcept.c, + src/base/ftsysio.c, src/base/ftsysmem.c, src/base/ftlist.c: Removed. + Obsolete. + + * src/raster/ftraster.c (Alignment, PAlignment): New union to fix + problems with 64bit systems. + (AlignProfileSize): Use it. + +2004-06-08 David Turner + + * include/freetype/freetype.h (FT_GlyphMetrics): Move `lsb_delta' + and `rsb_delta' elements to... + (FT_GlyphSlotRec): Here to retain binary compatibility with older + FreeType versions. + Update all users. + + * src/sfnt/sfobjs.c (tt_face_get_name): Remove compiler warning. + + * src/winfonts/winfnt.c (FNT_Load_Glyph): Add missing initialization + of slot->metrics.width and slot->metrics.height when loading a + Windows FNT glyph. Thanks to Huw Davies. + + * include/freetype/cache/ftcmru.h (FTC_MruNode_CompareFunc): Change + return type to FT_Bool. + + * src/cache/ftbasic.c (ftc_basic_family_compare): Change return + type to FT_Bool. + + * src/cache/ftccache.c (FTC_Cache_Init, ftc_cache_init): Make + the former call the latter, not vice versa. + (FTC_Cache_Done, ftc_cache_done): Ditto. + + * src/cache/ftcglyph.c (FTC_GNode_Compare, ftc_gnode_compare): Make + the former call the latter, not vice versa. + (FTC_GCache_Init, ftc_gcache_init): Ditto. + (FTC_GCache_Done, ftc_gcache_done): Ditto. + + * src/cache/ftcimage.c (FTC_INode_Free, ftc_inode_free): Make the + former call the latter, not vice versa. + (FTC_INode_Weight, ftc_inode_weight): Ditto. + + * src/cache/ftcmanag.c (ftc_size_node_compare, + ftc_size_node_compare_faceid, ftc_face_node_compare): Change return + type to FT_Bool. + + * src/cache/ftcsbits.c (FTC_SNode_Free, ftc_snode_free): Make the + former call the latter, not vice versa. + (FTC_SNode_Weight, ftc_snode_weight): Ditto. + (FTC_SNode_Compare, ftc_snode_compare): Ditto. + + * src/cache/ftcsbits.c: Fix some bugs and inefficiencies in the cache + sub-system. + +2004-06-05 Werner Lemberg + + * src/autofit/afloader.c (af_loader_load_g): Set `lsb_delta' and + `rsb_delta' in slot->metrics and tune side bearings slightly. + +2004-06-04 Werner Lemberg + + * docs/CHANGES: Updated. + +2004-06-04 David Chester + + Improve inter-letter spacing for autohinted glyphs. + + * include/freetype/freetype.h (FT_Glyph_Metrics): Add elements + `lsb_delta' and `rsb_delta'. + + * src/autohint/ahhint.c (ah_hinter_load): Set `lsb_delta' and + `rsb_delta' in slot->metrics and tune side bearings slightly. + +2004-06-04 David Turner + + * src/autofit/*: Important fixes to the auto-fitter. The output + now seems to be 100% equivalent to the auto-hinter, while being + about 2% faster (which proves that script-specific algorithm + selection isn't a performance problem). + + To test it, change `autohint' to `autofit' in + and recompile. + + A few more testing is needed before making this the official + auto-hinting module. + +2004-06-02 Werner Lemberg + + * src/truetype/ttgload.c (compute_glyph_metrics): Fix compiler + warnings. + +2004-06-01 Werner Lemberg + + * src/sfnt/sfobjs.c (tt_face_get_name): Make sure that an English + name record for the Apple platform is preferred to a non-English + entry for the Microsoft platform. Problem reported by HANDA + Ken'ichi. + +2004-05-19 George Williams + + * src/type1/t1load.c (mm_axis_unmap, mm_weights_unmap): New + auxiliary functions. + (T1_Get_MM_Var): Provide axis tags. + Use mm_axis_unmap and mm_weights_unmap to provide default values + for design and normalized axis coordinates. + + * include/freetype/t1tables.h (PS_DesignMapRec): Change type of + `design_points' to FT_Long. + Update all users. + +2004-05-17 Werner Lemberg + + * src/base/ftbbox.c (BBox_Conic_Check): Fix boundary cases. + Reported by Mikey Anbary . + +2004-05-15 Werner Lemberg + + * src/sfnt/sfobjs.c (sfnt_done_face): Free face->postscript_name. + +2004-05-15 George Williams + + * src/sfnt/ttload.c (tt_face_load_max_profile): Always set + face->root.num_glyphs. + +2004-05-14 Masatake YAMATO + George Williams + + * src/sfnt/ttload.c (sfnt_dir_check): Handle `bhed' properly. + +2004-05-14 Werner Lemberg + + * src/cache/ftcbasic.c (ftc_basic_family_compare, + ftc_basic_family_init, ftc_basic_family_get_count, + ftc_basic_family_load_bitmap, ftc_basic_family_load_glyph, + ftc_basic_gnode_compare_faceid): Adjust parameters and return types + to prototypes given in header files from include/freetype/cache. + Use casts to proper types locally. + (ftc_basic_image_family_class, ftc_basic_image_cache_class, + ftc_basic_sbit_family_class, ftc_basic_sbit_cache_class): Remove + casts. + + * src/cache/ftccback.h: Adjust parameters and return types to + prototypes given in header files from include/freetype/cache. + + * src/cache/ftcimage.c (ftc_inode_free, ftc_inode_new, + ftc_inode_weight): Adjust parameters and return types to prototypes + given in header files from include/freetype/cache. Use casts to + proper types locally. + + * src/cache/ftcsbits.c (ftc_snode_free, ftc_snode_new, + ftc_snode_weight, ftc_snode_compare): Adjust parameters and return + types to prototypes given in header files from + include/freetype/cache. Use casts to proper types locally. + + * src/cache/ftccmap.c (ftc_cmap_node_free, ftc_cmap_node_new, + ftc_cmap_node_weight, ftc_cmap_node_compare, + ftc_cmap_node_remove_faceid): Adjust parameters and return types to + prototypes given in header files from include/freetype/cache. Use + casts to proper types locally. + (ftc_cmap_cache_class): Remove casts. + + * src/cache/ftcglyph.c (ftc_gnode_compare, ftc_gcache_init, + ftc_gcache_done): Adjust parameters and return types to prototypes + given in header files from include/freetype/cache. Use casts to + proper types locally. + + * src/cache/ftcmanag.c (ftc_size_node_done, ftc_size_node_compare, + ftc_size_node_init, ftc_size_node_reset, + ftc_size_node_compare_faceid, ftc_face_node_init, + ftc_face_node_done, ftc_face_node_compare: Adjust parameters and + return types to prototypes given in header files from + include/freetype/cache. Use casts to proper types locally. + + (ftc_size_list_class, ftc_face_list_class): Remove casts. + +2004-05-13 Werner Lemberg + + * src/autohint/ahmodule.c (ft_autohinter_init, ft_autohinter_done): + Use FT_Module as parameter and do a cast to FT_AutoHinter locally. + (autohint_module_class): Remove casts. + + * src/base/ftglyph.c (ft_bitmap_glyph_init, ft_bitmap_glyph_copy, + ft_bitmap_glyph_done, ft_bitmap_glyph_bbox, ft_outline_glyph_init, + ft_outline_glyph_done, ft_outline_glyph_copy, + ft_outline_glyph_transform, ft_outline_glyph_bbox, + ft_outline_glyph_prepare): Use FT_Glyph as parameter and do a cast + to FT_XXXGlyph locally. + Use FT_CALLBACK_DEF throughout. + (ft_bitmap_glyph_class, ft_outline_glyph_class): Remove casts. + + * src/bdf/bdfdrivr.c (bdf_cmap_init, bdf_cmap_done, + bdf_cmap_char_index, bdf_cmap_char_next): Use FT_CMap as parameter + and do a cast to BDF_CMap locally. + (bdf_cmap_class): Remove casts. + +2004-05-12 Werner Lemberg + + * src/cff/cffgload.h (CFF_Builder): Remove `error'. + * src/cff/cffgload.c (cff_decoder_parse_charstrings): Replace + `Memory_Error' with `Fail' und update all users. + +2004-05-11 Werner Lemberg + + * include/freetype/internal/psaux.h (T1_ParseState): New + enumeration. + (T1_BuilderRec): Replace `path_begun' with `parse_state'. + Remove `error'. + * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Replace + `Memory_Error' with `Fail' and update all users. + Don't use `builder->error'. + Replace `path_begun' with `parse_state' and check parsing states. + + * src/psaux/psobjs.c (t1_builder_init, t1_builder_start_point): + Replace `path_begun' with `parse_state' and check parsing states. + +2004-05-10 George Williams + + * src/truetype/ttxgvar.c (ft_var_load_avar): Do free arrays in case + of error -- `avar' is optional so we can't rely on tt_done_blend + being called automatically. + +2004-05-09 George Williams + + * src/truetype/ttxgvar.c (ft_var_load_avar, ft_var_load_gvar): Fix + error handling. + +2004-05-07 Werner Lemberg + + * src/pfr/pfrobjs.c, src/pfr/pfrobjs.h (pfr_face_init, + pfr_face_done, pfr_face_get_kerning, pfr_slot_init, pfr_slot_done, + pfr_slot_load): Don't use PFR_XXX but FT_XXX arguments which are + typecast to the proper PFR_XXX types within the function. + Update code accordingly. + + * src/pfr/pfrdrivr.c (pfr_get_kerning, pfr_get_advance, + pfr_get_metrics, pfr_get_service): Don't use PFR_XXX but FT_XXX + arguments which are typecast to the proper PFR_XXX types within the + function. + Update code accordingly. + Use FT_CALLBACK_DEF throughout. + (pfr_metrics_service_rec, pfr_driver_class): Remove casts. + +2004-05-06 Masatake YAMATO + + * src/truetype/ttgxvar.c (ft_var_load_gvar): Use FT_FACE_STREAM. + (*): Rename local variable OffsetToData to offsetToData. + +2004-05-06 Werner Lemberg + + * src/cff/cffobjs.c (cff_size_done, cff_size_init, cff_size_reset, + cff_slot_done, cff_slot_init, cff_face_init, cff_face_done): Access + root fields directly. + * src/cff/cffdrivr.c (Load_Glyph): Access root fields directly. + + * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Save current + frame before calling TT_Vary_Get_Glyph_Deltas. + + * src/pcf/pcfdrivr.c (PCF_CMapRec): Rename `cmap' to `root' for + consistency. + (pcf_cmap_init, pcf_cmap_done, pcf_cmap_char_index, + pcf_cmap_char_next): Don't use PCF_XXX but FT_XXX arguments which + are typecast to the proper PCF_XXX types within the function. + Update code accordingly. + (pcf_cmap_class): Remove casts. + (PCF_Face_Done, PCF_Face_Init, PCF_Set_Pixel_Size): Don't use + PCF_XXX but FT_XXX arguments which are typecast to the proper + PCF_XXX types within the function. + Update code accordingly. + Use FT_CALLBACK_DEF throughout. + (PCF_Set_Point_Size): New wrapper function. + (PCF_Glyph_Load, pcf_driver_requester): Use FT_CALLBACK_DEF. + (pcf_driver_class): Remove casts. + +2004-05-04 Steve Hartwell + + * src/truetype/ttobjs.c (tt_driver_done): Fix typo. + +2004-05-04 Werner Lemberg + + * src/bdf/bdfdrivr.c (BDF_Face_Done, BDF_Face_Init, + BDF_Set_Pixel_Size): Don't use BDF_XXX but FT_XXX arguments which + are typecast to the proper BDF_XXX types within the function. + Update code accordingly. + Use FT_CALLBACK_DEF throughout. + (BDF_Set_Point_Size): New wrapper function. + (bdf_driver_class): Remove casts. + + * src/cff/cffdrivr.c (Get_Kerning, Load_Glyph, cff_get_interface): + Don't use CFF_XXX but FT_XXX arguments which are typecast to the + proper CFF_XXX types within the function. + Update code accordingly. + Use FT_CALLBACK_DEF throughout. + (cff_driver_class): Remove casts. + + * src/cff/cffobjs.h, src/cff/cffobjs.c (cff_size_done, + cff_size_init, cff_size_reset, cff_slot_done, cff_slot_init, + cff_face_init, cff_face_done, cff_driver_init, cff_driver_done): + Don't use CFF_XXX but FT_XXX arguments which are typecast to the + proper CFF_XXX types within the function. + Update code accordingly. + (cff_point_size_reset): New wrapper function. + + * src/cid/cidobjs.h, src/cid/cidobjs.c (cid_slot_done, + cid_slot_init, cid_size_done, cid_size_init, cid_size_reset, + cid_face_done, cid_face_init, cid_driver_init, cid_driver_done): + Don't use CID_XXX but FT_XXX arguments which are typecast to the + proper CID_XXX types within the function. + Update code accordingly. + (cid_point_size_reset): New wrapper function. + + * src/cid/cidgload.c, src/cid/cidgload.h (cid_slot_load_glyph): + Don't use CID_XXX but FT_XXX arguments which are typecast to the + proper CID_XXX types within the function. + Update code accordingly. + + * src/cid/cidriver.c (cid_get_interface): + Don't use CID_XXX but FT_XXX arguments which are typecast to the + proper CID_XXX types within the function. + Update code accordingly. + Use FT_CALLBACK_DEF. + (t1cid_driver_class): Remove casts. + + * src/truetype/ttdriver.c (tt_get_interface): Use FT_CALLBACK_DEF. + * src/truetype/ttgxvar.c (ft_var_load_avar): Don't free non-local + variables (this is done later). + (ft_var_load_avar): Fix call to FT_FRAME_ENTER. + (TT_Get_MM_Var): Fix size for `fvar_fields'. + (TT_Vary_Get_Glyph_Deltas): Handle deallocation of local variables + correctly. + + * src/base/ftdbgmem.c (ft_mem_debug_realloc): Don't abort if + current size is zero. + +2004-05-03 Steve Hartwell + + * src/truetype/ttobjs.h, src/truetype/ttobjs.c (tt_face_init, + tt_face_done, tt_size_init, tt_size_done, tt_driver_init, + tt_driver_done): Don't use TT_XXX but FT_XXX arguments which are + typecast to the proper TT_XXX types within the function. + Update code accordingly. + + * src/truetype/ttdriver.c (Get_Kerning, Set_Char_Sizes, + Set_Pixel_Sizes, Load_Glyph, tt_get_interface): Don't use TT_XXX but + FT_XXX arguments which are typecast to the proper TT_XXX types + within the function. + Update code accordingly. + (tt_driver_class): Remove casts. + +2004-05-02 Werner Lemberg + + * src/sfnt/ttload.c (tt_face_free_names): Check that `table->names' + is not NULL. Reported by Gordon Childs . + +2004-04-29 Werner Lemberg + + * docs/formats.txt: Add more information on PFR format. + +2004-04-28 Werner Lemberg + + * docs/formats.txt: New file. + * docs/CHANGES: Updated. + +2004-04-28 Masatake YAMATO + + * include/freetype/internal/tttypes.h (GX_BlendRec_) + [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Fix a typo. + + * src/truetype/ttgxvar.h (GX_BlendRec_): Fix a typo. + +2004-04-27 Masatake YAMATO + + * src/truetype/ttgxvar.h: Use FT_LOCAL instead of FT_LOCAL_DEF + for function declarations. + +2004-04-25 George Williams + + * src/truetype/ttgxvar.c (ft_var_apply_tuple): Fix typo. + +2004-04-25 Werner Lemberg + + * src/truetype/Jamfile, docs/CHANGES: Updated. + +2004-04-24 Werner Lemberg + + * src/pcf/pcfdrivr.c: Revert change from 2004-04-17. + * src/pcf/pcfutil.c: Use FT_LOCAL_DEF. + * src/pcf/pcfutil.h: Include FT_CONFIG_CONFIG_H. + Use FT_BEGIN_HEADER and FT_END_HEADER. + Use FT_LOCAL. + +2004-04-24 George Williams + + Add support for Apple's distortable font technology (in GX fonts). + + * devel/ftoption.h, include/freetype/config/ftoption.h + (TT_CONFIG_OPTION_GX_VAR_SUPPORT): New macro. + + * include/freetype/ftmm.h (FT_Var_Axis, FT_Var_Named_Style, + FT_MM_Var): New structures. + (FT_Get_MM_Var, FT_Set_Var_Design_Coordinates, + FT_Set_Var_Blend_Coordinates): New function declarations. + + * include/freetype/internal/services/svmm.h (FT_Get_MM_Var_Func, + FT_Set_Var_Design_Func): New typedefs. + Update MultiMasters service. + + * include/freetype/internal/tttypes.h + [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include FT_MULTIPLE_MASTERS_H. + (GX_Blend) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New typedef. + (TT_Face) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New members `doblend' + and `blend'. + + * include/freetype/tttags.h (TTAG_avar, TTAG_cvar, TTAG_gvar): New + macros. + + * include/freetype/internal/fttrace.h: Add `ttgxvar'. + + * src/base/ftmm.c (FT_Get_MM_Var, FT_Set_Var_Design_Coordinates, + FT_Set_Var_Blend_Coordinates): New functions. + + * src/sfnt/sfobjs.c (sfnt_load_face) + [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Set FT_FACE_FLAG_MULTIPLE_MASTERS + flag for GX var fonts. + + * src/truetype/ttgxvar.c, src/truetype/ttgxvar.h: New files. + + * src/truetype/truetype.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include + ttgxvar.c. + + * src/truetype/ttdriver.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include + FT_MULTIPLE_MASTERS_H, FT_SERVICE_MULTIPLE_MASTERS_H, and ttgxvar.h. + (tt_service_gx_multi_masters) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: + New service. + (tt_services) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Updated. + + * src/truetype/ttgload.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include + ttgxvar.h. + (TT_Process_Simple_Glyph, load_truetype_glyph) + [TT_CONFIG_OPTION_GX_VAR_SUPPORT] :Support GX var fonts. + + * src/truetype/ttobjs.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include + ttgxvar.h. + (tt_done_face) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Call + tt_done_blend. + + * src/truetype/ttpload.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include + ttgxvar.h. + (tt_face_load_cvt) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Call + tt_face_vary_cvt. + + * src/truetype/rules.mk (TT_DRV_SRC): Add ttgxvar.c. + + * src/type1/t1driver.c (t1_service_multi_masters): Add T1_Get_MM_Var + and T1_Set_Var_Design. + + * src/type1/t1load.c (FT_INT_TO_FIXED, FT_FIXED_TO_INT): New macros. + (T1_Get_MM_Var, T1_Set_Var_Design): New functions. + + * src/type1/t1load.h (T1_Get_MM_Var, T1_Set_Var_Design): New + function declarations. + +2004-04-23 Werner Lemberg + + * include/freetype/ftcache.h (FT_Get_CharMap_Index): Rename + declaration and move to... + * include/freetype/freetype.h (FT_Get_Charmap_Index): Here. + (FREETYPE_PATCH): Set to 9. + + * src/base/ftobjs.c (FT_Get_Charmap_Index): New function. + + * builds/unix/configure.ac (version_info): Set to 9:7:3. + * builds/unix/configure: Updated. + + * builds/win32/visualc/index.html, + builds/win32/visualc/freetype.dsp, + builds/win32/visualc/freetype.vcproj: s/218/219/. + + * builds/freetype.mk (refdoc), README, Jamfile (RefDoc): + s/2.1.8/2.1.9/. + + * docs/CHANGES, docs/VERSION.DLL: Updated. + +2004-04-21 Werner Lemberg + + * src/cff/cffparse.c (cff_parser_run), src/psaux/psobjs.c + (ps_parser_load_field): Use FT_CHAR_BIT. + +2004-04-21 David Turner + + + * Version 2.1.8 released. + ========================= + + + * src/cff/cffobjs.c (cff_face_init): Fix a small memory leak. + + * src/autofit/afloader.c (af_loader_load_g), src/autofit/afmodule.c + (af_autofitter_load_glyph), src/base/ftdebug.c (FT_Trace_Get_Name): + Remove compiler warnings. + + * src/autofit/aftypes.h: Undefine AF_DEBUG. + + * src/lzw/zopen.c (rmask), src/pcf/pcfdrivr.c (pcf_service_bdf, + pcf_services), src/pcf/pcfread.c (tableNames), src/psaux/psobjs.c + (ft_char_table), src/type42/t42drivr.c (t42_service_glyph_dict, + t42_service_ps_font_name): Decorate data arrays with `const' to + avoid populating the `.data' segment. + + * src/lzw/Jamfile: New file. + +2004-04-20 Werner Lemberg + + * src/psaux/psobjs.c (T1Radix): Renamed to... + (ps_radix): This. + Update current cursor position. + + * docs/CHANGES: Updated. + +2004-04-18 Werner Lemberg + + * src/truetype/ttgload.c, src/truetype/ttgload.h (TT_Load_Glyph), + src/ttdriver.c (Load_Glyph): Change type of `glyph_index' to + FT_UInt. From Lex Warners. + +2004-04-17 Chisato Yamauchi + + * src/sfnt/ttload.c (tt_face_load_sfnt_header): Really fix change + from 2004-03-19. + + * src/bdf/bdfdrivr.c (BDF_Face_Init): Use `ft_strlen'. + + * src/pcf/pcfutil.c, src/pcf/pcfutil.h: Decorate functions with + `static'. + Remove unused function `RepadBitmap'. + * src/pcf/pcfdrivr.c: Don't include pcfutil.h. + +2004-04-16 Werner Lemberg + + * builds/unix/freetype-config.in (usage): Fix and improve usage + information. + +2004-04-15 Werner Lemberg + + * builds/unix/ftconfig.in, builds/vms/ftconfig.h: Define + FT_CHAR_BIT. + + * src/base/ftobjs.c (FT_Load_Glyph): Don't apply autohinting if + glyph is vertically distorted or mirrored. + + * src/cff/cffgload.c (cff_slot_load): Handle zero `size' properly + for embedded bitmaps. + + * docs/CHANGES: Updated. + +2004-04-15 bytesoftware + + * include/freetype/config/ftconfig.h, src/base/ftstream.c + (FT_Stream_ReadFields): More fixes using FT_CHAR_BIT. + +2004-04-14 Werner Lemberg + + * include/freetype/config/ftconfig.h (FT_CHAR_BIT): New macro. + +2004-04-14 Alex Strelnikov + + * src/cache/ftcsbits.c (ftc_snode_load): Initialize `*asize' in case + of error. + +2004-04-14 Werner Lemberg + + * src/base/ftmac.c [__GNUC__]: Define OS_INLINE. + * builds/unix/configure.ac: Don't try to remove `-ansi' compilation + switch on the Mac. + + * builds/unix/ltmain.sh: Regenerated with `libtoolize --force + --copy' from libtool 1.5.6. + * builds/unix/aclocal.m4: Regenerated with `aclocal -I .' from + automake 1.8a. + * builds/unix/configure: Regenerated with autoconf 2.59a. + +2004-04-13 Werner Lemberg + + * include/freetype/config/ftconfig.h: Use CHAR_BIT to define + size of FT_SIZEOF_xxx. + +2004-04-12 Chisato Yamauchi + + * include/freetype/internal/sfnt.h (TT_Find_SBit_Image_Func, + TT_Load_SBit_Metrics_Func): New typedefs. + (SFNT_Interface): Add find_sbit_image and load_sbit_metrics. + + * src/sfnt/sfdriver.c (sfnt_interface): Updated. + * src/sfnt/ttsbit.h (tt_find_sbit_image, tt_load_sbit_metrics): New + declarations. + * src/sfnt/ttsbit.c (find_sbit_image): Renamed to... + (tt_find_sbit_image): This. + Updated all callers. + (load_sbit_metrics): Renamed to... + (tt_load_sbit_metrics): This. + Updated all callers. + +2004-04-12 Werner Lemberg + + * configure: Accept makepp also. + + * builds/unix/detect.mk: Use proper path to unix-def.mk. + * builds/unix/unix-def.in (BUILD_DIR, PLATFORM): Remove. + * builds/unix/unix.mk (BUILD_DIR, PLATFORM): Define. + Use BUILD_DIR. + + * docs/INSTALL, docs/INSTALL.GNU, docs/INSTALL.UNX: Update + documentation on makepp. + +2004-04-11 Werner Lemberg + + * src/lzw/zopen.c: Don't include sys/param.h and sys/stat.h. + +2004-04-10 Werner Lemberg + + * src/lzw/ftlzw.c: Include zopen.h dependent on + FT_CONFIG_OPTION_USE_LZW. + + * src/base/ftdebug.c: s/index/idx/ to avoid compiler warnings. + +2004-04-02 Werner Lemberg + + * builds/unix/ltmain.sh: Regenerated with `libtoolize --force + --copy' from libtool 1.5.2. + * builds/unix/aclocal.m4: Regenerated with `aclocal -I .' from + automake 1.8a. + * builds/unix/configure: Regenerated with autoconf 2.59a. + +2004-04-01 Werner Lemberg + + * builds/unix/ft-munmap.m4 (FT_MUNMAP_PARAM): Fix arguments of + AC_COMPILE_IFELSE. + * builds/unix/aclocal.m4: Regenerated with `aclocal -I .' from + automake 1.8a. + * builds/unix/configure: Regenerated with autoconf 2.59a. + * builds/unix/config.guess, builds/unix/config.sub: Updated from + `config' CVS module at subversions.gnu.org. + * builds/unix/install-sh, builds/unix/mkinstalldirs: Updated from + `texinfo' CVS module at subversions.gnu.org. + * builds/freetype.mk (refdoc): Updated. + +2004-03-31 Werner Lemberg + + Handle broken FNT files which don't have a trailing NULL byte + in the face name string. + + * src/winfonts/winfnt.h (FNT_FontRec): New member `family_name'. + * src/winfonts/winfnt.c (fnt_font_done): Free font->family_name. + (FNT_Face_Init): Append a final zero byte to the font face name. + +2004-03-30 Werner Lemberg + + * src/sfnt/ttload.c (tt_face_load_sfnt_header): Fix change from + 2004-03-19. + +2004-03-27 Werner Lemberg + + * src/base/descrip.mms (OBJS): Add ftbbox.obj. + +2004-03-26 George Williams + + Add vertical phantom points. + + * include/freetype/internal/tttypes.h (TT_LoaderRec): Add + `top_bearing', `vadvance', `pp3', and `pp4'. + + * src/autofit/afloader.c (af_loader_load_g): Handle two more points. + + * src/autohint/ahhint.c (ah_hinter_load): Handle two more points. + * src/truetype/ttgload.c (Get_VMetrics): New function. + (TT_Load_Simple_Glyph, TT_Process_Simple_Glyph): Handle two more + points. + (load_truetype_glyph): Use Get_VMetrics. + Handle two more points. + (compute_glyph_metrics): Thanks to vertical phantom points we now + can always compute `advance_height' and `top_bearing'. + * src/truetype/ttobjs.h (TT_SubglyphRec): Add vertical phantom + points. + + + * src/autohint/ahglyph.c (ah_outline_load): Fix allocation of + `news'. + +2004-03-21 Werner Lemberg + + * src/bdf/bdfdrivr.c (BDF_Glyph_Load): Fix left side bearing. + +2004-03-20 Steve Hartwell + + * src/cache/ftcmru.c (FTC_MruList_RemoveSelection): Handle a NULL + value for `selection' as `select all'. + +2004-03-19 Steve Hartwell + + * src/sfnt/ttload.c (tt_face_load_sfnt_header): Reject face_index + values > 0 if loading non-TTC fonts. + + * src/base/ftmac.c (open_face_from_buffer): Set positive face_index + to zero before calling FT_Open_Face. + + * docs/CHANGES: Updated. + +2004-03-04 Werner Lemberg + + * Jamfile, vms_make.com, builds/win32/visualc/freetype.dsp, + builds/win32/visualc/freetype/vcproj, include/freetype/ftmoderr.h: + Add LZW module. + + * Jamfile.in: Removed. + + * docs/CHANGES: Updated. + + * include/freetype/internal/ftobjs.h: s/MIN/FT_MIN/, s/MAX/FT_MAX/, + s/ABS/FT_ABS/. Updated all callers. + + * src/type1/t1load.c (parse_dict), src/pcf/pcfdrivr.c + (PCF_Face_Init): Use FT_ERROR_BASE. + +2004-03-04 Albert Chin + + Add support for PCF fonts compressed with LZW (extension .pcf.Z, + created with `compress'). + + * include/freetype/config/ftoption.h, devel/ftoption.h + (FT_CONFIG_OPTION_USE_LZW): New macro. + + * include/freetype/ftlzw.h: New file. + * include/freetype/config/ftheader.h (FT_LZW_H): New macro for + ftlzw.h. + + * src/lzw/*: New files. + + * src/pcf/pcfdrivr.c: Include FT_LZW_H. + (PCF_Face_Init): Try LZW also. + + * src/gzip/ftgzip.c: s/0/Gzip_Err_Ok/ where appropriate. + Beautify. + +2004-03-03 Werner Lemberg + + * src/pshinter/pshalgo.c (psh_hint_table_init): Simplify code. + +2004-03-02 Werner Lemberg + + Add embedded bitmap support to CFF driver. + + * src/cff/cffobjs.h (CFF_SizeRec): New structure. + + * src/cff/cffgload.c (cff_builder_init): Updated. + (cff_slot_load): Updated. + [TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: Load sbit. + + * src/cff/cffobjs.c (sbit_size_reset) + [TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: New function. + (cff_size_get_globals_funcs, cff_size_done, cff_size_init): Updated. + (cff_size_reset): Updated. + [TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: Call sbit_size_reset. + + * src/cff/cffdrivr.c (Load_Glyph): Updated. + (cff_driver_class): Use CFF_SizeRec. + + * docs/CHANGES: Updated. + +2004-03-01 Werner Lemberg + + * src/pshinter/pshglob.c (psh_globals_scale_widths): Don't use + FT_RoundFix but FT_PIX_ROUND. + (psh_blues_snap_stem): Don't use blue_shift but blue_threshold. + + * src/pshinter/pshalgo.c (PSH_STRONG_THRESHOLD_MAXIMUM): New macro. + (psh_glyph_find_string_points): Use PSH_STRONG_THRESHOLD_MAXIMUM. + (psh_glyph_find_blue_points): New function. Needed for fonts like + p052003l.pfb (URW Palladio L Roman) which have flex curves at the + base line within blue zones, but the flex curves aren't covered by + hints. + (ps_hints_apply): Use psh_glyph_find_blue_points. + +2004-02-27 Garrick Meeker + + * builds/unix/configure.ac: Fix compiler flags for + `--with-old-mac-fonts'. + * builds/unix/configure: Regenerated. + + * src/base/ftmac.c: s/TARGET_API_MAC_CARBON/!TARGET_API_MAC_OS8/. + (FT_New_Face_From_Resource): New function. + (FT_New_Face): Use FT_New_Face_From_Resource. + (FT_New_Face_From_FSSpec): Use FT_New_Face_From_Resource. + [__MWERKS__]: Don't include FSp_fopen.h. + +2004-02-26 Werner Lemberg + + * src/pshinter/pshglob.c (psh_globals_new): Fix value of + `dim->stdw.count'. + Don't assign default values to blue scale and blue shift. + +2004-02-25 Werner Lemberg + + * docs/CHANGES: Updated. + +2004-02-25 Garrick Meeker + Steve Hartwell + + Improve MacOS fond support. Provide a new API + `FT_New_Face_From_FSSpec' similar to `FT_New_Face'. + + * src/base/ftmac.c [__MWERKS__]: Include FSp_fpopen.h. + STREAM_FILE [__MWERKS__]: New macro. + (ft_FSp_stream_close, ft_FSp_stream_io) [__MWERKS__]: New functions. + (file_spec_from_path) [__MWERKS__]: Updated #if statement. + (get_file_type, make_lwfn_spec): Use `const' for argument. + (is_dfont) [TARGET_API_MAC_CARBON]: Removed. + (count_face_sfnt, count_faces): New functions. + (parse_fond): Do some range checking. + (read_lwfn): Change type of second argument. + No longer call FSpOpenResFile. + (OpenFileAsResource): New function. + (FT_New_Face_From_LWFN): Use `const' for second argument. + Use OpenFileAsResource. + (FT_New_Face_From_Suitcase): Change type of second argument. + No longer call FSpOpenResFile. + Loop over all resource indices. + (FT_New_Face_From_dfont) [TARGET_API_MAC_CARBON]: Removed. + (FT_GetFile_From_Mac_Name): Use `const' for first argument. + (ResourceForkSize): Removed. + (FT_New_Face): Updated to use new functions. + (FT_New_Face_From_FSSpec): New function. + + * include/freetype/ftmac.h: Updated. + +2004-02-24 Malcolm Taylor + + * src/autohint/ahhint.c (ah_hinter_load) : + Handle case where outline->num_vedges is zero while computing hinted + metrics. + +2004-02-24 Gordon Childs + + * src/cff/cffcmap.c (cff_cmap_unicode_init): Provide correct value + for `count'. + +2004-02-24 Werner Lemberg + + * include/freetype/t1tables.h (PS_PrivateRec): Add + `expansion_factor'. + + * src/pshinter/pshglob (psh_blues_scale_zones): Fix computation + of blues->no_overshoots -- `blues_scale' is stored with a + magnification of 1000, and `scale' returns fractional pixels. + + * src/type1/t1load.c (T1_Open_Face): Initialize `blue_shift', + `blue_fuzz', `expansion_factor', and `blue_scale' according to the + Type 1 specification. + + * src/type1/t1tokens.h: Handle `ExpansionFactor'. + + * docs/CHANGES: Updated. + +2004-02-24 Masatake YAMATO + + Provide generic access to MacOS resource forks. + + * src/base/ftrfork.c, include/freetype/internal/ftrfork.h: New + files. + + * src/base/ftobjs.c: Include FT_INTERNAL_RFORK_H. + (Mac_Read_POST_Resource, Mac_Read_sfnt_Resource): Remove arguments + `resource_listoffset' and `resource_data' and adapt code + accordingly. These values are calculated outside of the function + now. + Add new argument `offsets'. + (IsMacResource): Use `FT_Raccess_Get_HeaderInfo' and + `FT_Raccess_Get_DataOffsets'. + (load_face_in_embedded_rfork): New function. + (load_mac_face): Use load_face_in_embedded_rfork. + (ft_input_stream_new): Renamed to... + (FT_Stream_New): This. Use FT_BASE_DEF. Updated all callers. + (ft_input_stream_free): Renamed to... + (FT_Stream_Free): This. Use FT_BASE_DEF. Updated all callers. + + * src/base/ftbase.c: Include ftrfork.c. + + * src/base/rules.mk (BASE_SRC), src/base/Jamfile: Updated. + + * include/freetype/internal/internal.h (FT_INTERNAL_RFORK_H): + New macro. + + * include/freetype/internal/fttrace.h: Added `rfork' as a new + trace definition. + + * include/freetype/internal/ftstream.h: Declare FT_Stream_New and + FT_Stream_Free. + + * include/freetype/config/ftoption.h, devel/ftoption.h + (FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK): New option. + + * include/freetype/config/ftstdlib.h (ft_strrchr): New macro. + +2004-02-23 Werner Lemberg + + * docs/CHANGES: Updated. + + * include/freetype/internal/ftdebug.h: Include FT_FREETYPE_H. + +2004-02-23 Masatake YAMATO + + Provide a simple API to control FreeType's tracing levels. + + * include/freetype/internal/ftdebug.h (FT_Trace_Get_Count, + FT_Trace_Get_Name): New declarations. + + * src/base/ftdebug.c (FT_Trace_Get_Count, FT_Trace_Get_Name): New + functions. + +2004-02-23 David Turner + + * src/autofit/afhints.c, src/autofit/afhints.h, + src/autofit/aflatin.c, src/autofit/afloader.c, src/types.h: Grave + bugs have been fixed. The auto-fitter works, doesn't crash, but + still produces unexpected results... + +2004-02-21 Werner Lemberg + + * src/pshinter/pshalgo.c (PSH_STRONG_THRESHOLD): Changed to hold + the accepted shift for strong points in fractional pixels (which + is a heuristic value). + (psh_glyph_find_strong_points): Compute threshold for + psh_hint_table_find_strong_points. + (psh_hint_table_find_strong_point): Add parameter to pass threshold. + +2004-02-20 Werner Lemberg + + * src/pshinter/pshrec.c (ps_mask_table_set_bits): Don't call + ps_mask_table_alloc but ps_mask_table_last. + (ps_hints_t2mask): Use correct position and number for vertical + and horizontal hinter mask bits. + + * docs/CHANGES: Updated. + +2004-02-19 Werner Lemberg + + * src/base/ftstroke.c (FT_Glyph_StrokeBorder): Fix enum handling. + * src/cff/cffdrivr.c (cff_get_cmap_info): Remove compiler warning. + +2004-02-18 Werner Lemberg + + * include/freetype/freetype.h: Document FT_LOAD_TARGET_XXX properly. + + * src/base/ftglyph.c (ft_bitmap_glyph_class, + ft_outline_glyph_class): Tag with FT_CALLBACK_TABLE_DEF. + + * src/smooth/ftsmooth.c (ft_smooth_render): Handle + FT_RENDER_MODE_LIGHT. + +2004-02-17 Werner Lemberg + + Fix callback functions in cache module. + + * src/cache/ftccback.h: New file for callback declarations. + + * src/cache/ftcbasic.c (ftc_basic_family_compare, + ftc_basic_family_init, ftc_basic_family_get_count, + ftc_basic_family_load_bitmap, ftc_basic_family_load_glyph, + ftc_basic_gnode_compare_faceid): Use FT_CALLBACK_DEF. + (ftc_basic_image_family_class, ftc_basic_image_cache_class, + ftc_basic_sbit_family_class, ftc_basic_sbit_cache_class): + Use FT_CALLBACK_TABLE_DEF and local wrapper functions. + + * src/cache/ftccache.c: Include ftccback.h. + (ftc_cache_init, ftc_cache_done): New wrapper functions which use + FT_LOCAL_DEF. + + * src/cache/ftccmap.c: Include ftccback.h. + (ftc_cmap_cache_class): Use local wrapper functions. + + * src/cache/ftcglyph.c: Include ftccback.h. + (ftc_gnode_compare, ftc_gcache_init, ftc_gcache_done): New wrapper + functions which use FT_LOCAL_DEF. + + * src/cache/ftcimage.c: Include ftccback.h. + (ftc_inode_free, ftc_inode_new, ftc_inode_weight): New wrapper + functions which use FT_LOCAL_DEF. + + * src/cache/ftcmanag.c (ftc_size_list_class, ftc_face_list_class): + Use FT_CALLBACK_TABLE_DEF. + + * src/cache;/ftcsbits.c: Include ftccback.h. + (ftc_snode_free, ftc_snode_new, ftc_snode_weight, + ftc_snode_compare): New wrapper functions which use FT_LOCAL_DEF. + + * src/cache/rules.mk (CACHE_DRV_H): Add ftccback.h. + +2004-02-17 Masatake YAMATO + + * include/freetype/ftmac.h (FT_GetFile_From_Mac_Name): Fix a typo + (FT_EXPORT_DEF -> FT_EXPORT). + + * include/freetype/ftxf86.h (FT_Get_X11_Font_Format): Ditto. + +2004-02-15 Werner Lemberg + + * src/base/ftobjs.c (FT_Set_Char_Size): Fix typo. + +2004-02-14 Masatake YAMATO + + * builds/unix/ftsystem.c: Include errno.h. + (ft_close_stream): Renamed to... + (ft_close_stream_by_munmap): This. + (ft_close_stream_by_free): New function. + (FT_Stream_Open): Use fallback method if mmap fails. + Use proper function for closing the stream. + +2004-02-14 Werner Lemberg + + * src/type1/t1load.c (parse_dict): Initialize `start_binary'. + +2004-02-13 Robert Etheridge + + * src/type42/t42objs.c (T42_Face_Init), src/type1/t1objs.c + (T1_Face_Init), src/cid/cidobjs.c (cid_face_init): Fix computation + of underline_position and underline_thickness. + +2004-02-12 Werner Lemberg + + * src/base/ftobjs.c (FT_Set_Char_Size): Return immediately if + ppem values don't change. Suggested by Graham Asher. + +2004-02-11 Werner Lemberg + + * src/cid/cidload.c (cid_face_open): Always allocate + face->cid_stream so that we can deallocate it safely. + +2004-02-10 Werner Lemberg + + Make the PS parser more tolerant w.r.t. non-standard font data. In + general, an error is only reported in case of a syntax error; a + wrong type is now simply ignored (if possible). To be independent + of the order of various MM-specific keywords, the parse_shared_dict + routine has been removed -- the PS parser is now capable to skip + this data. It no longer fails on parsing e.g. + + dup /WeightVector exch def + + Since the token following /WeightVector isn't `[' (starting an + array) it is simply ignored. + + * include/freetype/fterrdef.h: Define `FT_Err_Ignore' (0xA2) as a + new internal error value. + + * src/type1/t1load.c (parse_blend_axis_types, + parse_blend_design_positions, parse_blend_design_map): Return + T1_Err_Ignore if no proper array is following the keyword. + (parse_weight_vector): Use T1_ToTokenArray, initializing `blend' + structure, if necessary. + Return T1_Err_Ignore if no proper array is following the keyword. + (parse_shared_dict): Removed. + (parse_encoding): Set parser->root.error to return T1_Err_Ignore + if no result can be obtained. + Check for errors before accessing `elements' array. + (t1_keywords): Remove /shareddict. + (parse_dict): Reset error if t1_load_keyword returns T1_Err_Ignore. + Set keyword_flag only in case of success. + Check error code if skipping an unrecognized token. + (T1_Open_Face) [!T1_CONFIG_OPTION_NO_MM_SUPPORT]: Call T1_Done_Blend + if blend commands haven't set up a proper MM font. + + * src/psaux/psobjs.c (ps_parser_load_field_table): Remove special + code for synthetic fonts. + Return PSaux_Err_Ignore if no proper value has been found. + +2004-02-09 Werner Lemberg + + * src/cff/cffgload.c (cff_decoder_parse_charstrings) + : Preserve glyph width before calling + cff_operator_seac. + +2004-02-09 Martin Muskens + + * src/cff/cffgload.c (cff_decoder_parse_charstrings): Handle special + first argument for `hintmask' and `cntrmask' operators also. + +2004-02-08 Werner Lemberg + + * builds/unix/configure.in: Call AC_SUBST for `enable_shared', + `hardcode_libdir_flag_spec', and `wl'. + * builds/unix/configure: Regenerated. + + * builds/unix/freetype-config.in: Make --prefix and --exec-prefix + actually work. + Report a proper --rpath (or -R) value for --libs argument if a + shared library has been built. + + * docs/CHANGES: Updated. + +2004-02-07 Keith Packard + + * src/bdf/bdfdrivr.c (BDF_Face_Init, BDF_Set_Pixel_Size): Fix + computation of various vertical and horizontal metric values. + + * src/pcfdrivr.c (PCF_Set_Pixel_Size), src/pcfread (pcf_load_font): + Ditto. + +2004-02-07 Werner Lemberg + + * builds/win32/visualc/index.html, + builds/win32/visualc/freetype.dsp, + builds/win32/visualc/freetype.dsw, docs/CHANGES: Updated. + +2004-02-07 Vitaliy Pasternak + + * builds/win32/visualc/freetype.sln, + builds/win32/visualc/freetype.vcproj: New files for VS.NET 2003. + +2004-02-03 Werner Lemberg + + * include/freetype/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP): + Initialize `node'. + * src/type1/t1load.c (parse_dict): Initialize `have_integer'. + +2004-02-02 Werner Lemberg + + * src/type1/t1load.c (parse_dict): Handle `RD' and `-|' commands + outside of /Subrs or /CharStrings. This can happen if there is + additional code manipulating those two arrays so that FreeType + doesn't recognize them properly. + (T1_Open_Face): Improve an error message. + +2004-02-01 Werner Lemberg + + * src/type1/t1load.c (parse_charstrings): Exit immediately if + there are no elements in /CharStrings. This is needed for fonts + like Optima-Oblique which not only define /CharStrings but access it + also. + +2004-02-01 David Turner + + * src/sfnt/Jamfile: Removing `ttcmap' from the list of sources. + + * include/freetype/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP) + : Provide macro version which doesn't use inline code. + * include/freetype/cache/ftcglyph.h (FTC_GCACHE_LOOKUP_CMP) + : Ditto. + Use FTC_MRULIST_LOOKUP_CMP. + * include/freetype/cache/ftcmru.h (FTC_MRULIST_LOOKUP_CMP): New + macro. + (FTC_MRULIST_LOOKUP): Use it. + + * src/cache/Jamfile (_sources), src/cache/descrip.mms: Updated. + * src/cache/ftcbasic.c: Fix compiler warnings. + * src/cache/ftcmanag.c (FTC_Manager_LookupSize, + FTC_Manager_LookupFace) : Use FTC_MRULIST_LOOKUP_CMP. + * src/cache/ftcmru.c (FTC_MruList_Find): Fix a bug (found after + heavy testing). + + * Jamfile: Updating `refdoc' target, and adding `autohint' to the + list of modules to build. Both the autohinter and autofitter will + be built by default. But which one will be used is determined by + the content of `ftmodule.h'. + + * src/autofit/*: Many updates, but the code is still buggy... + +2004-01-31 Werner Lemberg + + * src/cff/cffgload.c (cff_operator_seac): Fix magnitude of + accent offset. + Update code similarly to the seac support for Type 1 fonts. + (cff_decoder_parse_charstrings) : Fix magnitude + of accent offset. + Don't hint glyphs twice if seac is emulated. + : Assign correct point tags. + * docs/CHANGES: Updated. + +2004-01-30 Werner Lemberg + + * src/type1/t1parse.c (T1_Get_Private_Dict): Use FT_MEM_MOVE, not + FT_MEM_COPY, for copying the private dict. + + * src/type1/t1load.c (parse_subrs): Assign number of subrs only + in first run. + (parse_charstrings): Parse /CharStrings in second run without + assigning values. + (parse_dict): Skip all /CharStrings arrays but the first. We need + this for non-standard fonts like `Optima' which have different + outlines depending on the resolution. Note that there is no + guarantee that we get fitting /Subrs and /CharStrings arrays; this + can only be done by a real PS interpreter. + +2004-01-29 Antoine Leca + + * builds/win32/visualc/index.html: New file, giving detailed + explanations about forcing CR+LF line endings for the VC++ project + files. + +2004-01-22 Garrick Meeker + + * src/cff/cffload.c (cff_subfont_load): Initialize `dict'. + +2004-01-22 Werner Lemberg + + Add support for the hexadecimal representation of binary data + started with `StartData' in CID-keyed Type 1 fonts. + + * include/freetype/internal/t1types.h (CID_FaceRec): Add new + members `binary_data' and `cid_stream'. + + * src/cid/cidload.c (cid_read_subrs): Use `face->cid_stream'. + (cid_hex_to_binary): New auxiliary function. + (cid_face_open): Add new argument `face_index' to return quickly + if less than zero. Updated all callers. + Call `cid_hex_to_binary', then open and assign memory stream to + `face->cid_stream' if `parser->binary_length' is non-zero. + * src/cid/cidload.h: Updated. + + * src/cid/cidobjs.c (cid_face_done): Free `binary_data' and + `cid_stream'. + + * src/cid/cidparse.c (cid_parser_new): Check arguments to + `StartData' and set parser->binary_length accordingly. + * src/cid/cidparse.h (CID_Parser): New member `binary_length'. + + * src/cid/cidgload.c (cid_load_glyph): Use `face->cid_stream'. + + * docs/CHANGES: Updated. + +2004-01-21 Werner Lemberg + + include/freetype/config/ftstdlib.h (ft_atoi): Replaced with... + (ft_atol): This. + * src/base/ftdbgmem.c: s/atol/ft_atol/. + * src/type42/t42drivr.c: s/ft_atoi/ft_atol/. + +2004-01-20 Masatake YAMATO + + * include/freetype/ftcache.h: Delete duplicated definition of + FTC_FaceID. + + * src/cff/cffdrivr.c (cff_get_cmap_info): Call sfnt module's TT CMap + Info service function if the cmap comes from sfnt. Return 0 if the + cmap is sythesized in cff module. + +2004-01-20 David Turner + + * src/cache/ftcmanag.c (ftc_size_node_compare): Call + FT_Activate_Size. + +2004-01-20 Werner Lemberg + + * src/type1/t1parse.c (T1_Get_Private_Dict): Skip exactly one + CR, LF, or CR/LF after `eexec'. + +2004-01-18 David Turner + + * src/sfnt/ttsbit.c (tt_face_set_sbit_strike): Remove compiler + warning. + + * src/tools/docmaker/*: Updating beautifier tool. + +2004-01-15 David Turner + + * src/base/ftoutln.c (ft_orientation_extremum_compute): Fix + infinite loop bug. + + * include/freetype/ftstroke.h: Include FT_GLYPH_H. + (FT_Stroker_Rewind, FT_Glyph_Stroke, FT_Glyph_StrokeBorder): New + declarations. + + * src/base/ftstroke.c: Include FT_INTERNAL_OBJECTS_H. + (FT_Outline_GetOutsideBorder): Inverse result. + (FT_Stroker_Rewind, FT_Glyph_Stroke, FT_GlyphStrokeBorder): New + functions. + (FT_Stroker_EndSubPath): Close path if needed. + (FT_Stroker_Set, FT_Stroker_ParseOutline): Use FT_Stroker_Rewind. + + * include/freetype/cache/ftcmanag.h (FTC_ScalerRec, + FTC_Manager_LookupSize): Moved to... + * include/freetype/ftcache.h (FTC_ScalerRec, + FTC_Manager_LookupSize): Here. + + * src/tools/docmaker/docbeauty.py: New file to beautify the + documentation comments (e.g., to convert them to single block border + mode). + * src/tools/docmaker/docmaker.py (file_exists, make_file_list): + Moved to... + * src/tools/docmaker/utils.py (file_exists, make_file_list): Here. + +2004-01-14 David Turner + + * include/freetype/internal/ftmemory.h (FT_ARRAY_COPY, + FT_ARRAY_MOVE): New macros to make copying arrays easier. + Updated all relevant code to use them. + +2004-01-14 Werner Lemberg + + * src/cff/cffload.c (cff_font_load): Load charstrings_index earlier. + Use number of charstrings as argument to CFF_Load_FD_Select (as + documented in the CFF specs). + +2004-01-13 Graham Asher + + * src/pshinter/pshalgo.c (psh_glyph_init): Move assignment of + `glyph->memory' up to free arrays properly in case of failure. + +2004-01-10 Masatake YAMATO + + Make `FT_Get_CMap_Language_ID' work with CFF. Bug reported by + Steve Hartwell . + + * src/cff/cffdrivr.c: Include FT_SERVICE_TT_CMAP_H. + (cff_services): Added an entry for FT_SERVICE_ID_TT_CMAP. + (cff_get_cmap_info): New function. + (cff_service_get_cmap_info) New entry for cff_services. + + * src/sfnt/ttcmap0.c: Exit loop after a format match has been found. + Suggested by Steve Hartwell . + +2004-01-03 Masatake YAMATO + + * src/base/ftobjs.c (destroy_charmaps): New function. + (destroy_face, open_face): Use `destroy_charmaps'. + +2004-01-01 Werner Lemberg + + * docs/CHANGES: Updated. + +2004-01-01 Michael Jansson + + * src/winfonts/winfnt.c (FNT_Size_Set_Pixels): Fix sign of + size->metrics.descender. + +2003-12-31 Wolfgang Domröse + + * src/cff/cffgload.c (cff_decoder_parse_charstrings) + [FT_DEBUG_LEVEL_TRACE]: Use `%ld' in FT_TRACE4. + : Change type of dx and dy to FT_Pos and remove + cast for accessing arguments. + +2003-12-31 Werner Lemberg + + * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Revert previous + change. It's not necessary. + +2003-12-29 Smith Charles + + * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Handle `repeated + flags set' correctly. + +2003-12-29 Werner Lemberg + + * src/cff/cffobjs.c (cff_face_init): Fix memory leak by deallocating + `full' and `weight' properly. + * src/cff/cffgload.c (cff_decoder_parse_charstrings) + [FT_DEBUG_LEVEL_TRACE]: Use `0x' as prefix for + tracing output. + +2003-12-26 Werner Lemberg + + * include/freetype/internal/sfnt.h (TT_Set_SBit_Strike_Func): + Use FT_UInt for ppem values. + * src/sfnt/ttsbit.c (tt_face_set_sbit_strike): Use FT_UInt for + ppem values. + * src/sfnt/ttsbit.h: Updated. + + * src/base/ftobjs.c (FT_Set_Pixel_Sizes): Don't allow ppem values + larger than -0FFFF. + +2003-12-25 Werner Lemberg + + * src/base/fttrigon.c, src/base/ftgloadr.c: Inlude + FT_INTERNAL_OBJECTS_H. + + * src/base/ftstroke.c (FT_Outline_GetInsideBorder, + FT_Outline_GetOutsideBorder): s/or/o/ to make it compile with + C++ compilers. + + * src/cache/ftcmru.c, include/freetype/cache/ftcmru.h: + s/select/selection/ to avoid compiler warning. + * src/cff/cffload.h: s/select/ftselect/ to avoid potential + compiler warning. + +2003-12-24 Werner Lemberg + + * src/cache/ftcsbits.c (FTC_SNode_Weight): + s/FTC_SBIT_ITEM_PER_NODE/FTC_SBIT_ITEMS_PER_NODE/. + +2003-12-24 David Turner + + * Fixed compilation problems in the cache sub-system. + + * Partial updates to src/autofit. + + * Jamfile (FT2_COMPONENTS): Add autofit module. + +2003-12-23 Werner Lemberg + + * src/cff/cffgload.c (cff_lookup_glyph_by_stdcharcode): Handle + CID-keyed fonts. + +2003-12-23 David Turner + + * include/freetype/internal/ftobjs.h (FT_PAD_FLOOR, FT_PAD_ROUND, + FT_PAD_CEIL, FT_PIX_FLOOR, FT_PIX_ROUND, FT_CEIL): New macros. They + are used to avoid compiler warnings with very pedantic compilers. + Note that `(x) & -64' causes a warning if (x) is not signed. Use + `(x) & ~63' instead! + Updated all related code. + + Add support for extraction of `inside' and `outside' borders. + + * src/base/ftstroke.c (FT_StrokerBorder): New enumeration. + (FT_Outline_GetInsideBorder, FT_Outline_GetOutsideBorder, + FT_Stroker_GetBorderCounts, FT_Stroker_ExportBorder): New functions. + (FT_StrokeBorderRec): New boolean member `valid'. + (ft_stroke_border_get_counts): Updated. + * include/freetype/ftstroke.h: Updated. + +2003-12-22 Werner Lemberg + + * include/freetype/ftwinfnt.h (FT_WinFNT_ID_*): New definitions + to describe the `charset' field in FT_WinFNT_HeaderRec. + * src/winfonts/winfnt.c (FNT_Face_Init): Set encoding to + FT_ENCODING_NONE except for FT_WinFNT_ID_MAC. + + * include/freetype/freetype.h (FT_Encoding): Improve comment, + based on work by Detlef Würkner . + + * docs/CHANGES: Updated. + +2003-12-22 David Turner + + * include/freetype/ftcache.h, + include/freetype/cache/ftcmanag.h, + include/freetype/cache/ftccache.h, + include/freetype/cache/ftcmanag.h, + include/freetype/cache/ftcmru.h (added), + include/freetype/cache/ftlru.h (removed), + include/freetype/cache/ftcsbits.h, + include/freetype/cache/ftcimage.h, + include/freetype/cache/ftcglyph.h, + src/cache/ftcmru.c, + src/cache/ftcmanag.c, + src/cache/ftccache.c, + src/cache/ftcglyph.c, + src/cache/ftcimage.c, + src/cache/ftcsbits.c, + src/cache/ftccmap.c, + src/cache/ftcbasic.c (added), + src/cache/ftclru.c (removed): + + *Complete* rewrite of the cache sub-system to `solve' the + following points: + + - all public APIs have been moved to FT_CACHE_H, everything + under `include/freetype/cache' is only needed by client + applications that want to implement their own caches + + - a new function named FTC_Manager_RemoveFaceID to deal + with the uninstallation of FaceIDs + + - the image and sbit cache are now abstract classes, that + can be extended much more easily by client applications + + - better performance in certain areas. Further optimizations + to come shortly anyway... + + - the FTC_CMapCache_Lookup function has changed its signature, + charmaps can now only be retrieved by index + + - FTC_Manager_Lookup_Face => FTC_Manager_LookupFace + FTC_Manager_Lookup_Size => FTC_Manager_LookupSize (still in + private header for the moment) + +2003-12-21 Werner Lemberg + + * src/type1/t1load.c (parse_dict): Stop parsing if `eexec' keyword + is encountered. + +2003-12-19 Werner Lemberg + + * src/cff/cfftypes.h (CFF_MAX_CID_FONTS): Increase to 32. For + example, the Japanese Hiragino font already contains 15 subfonts. + + * src/cff/cffload.c (cff_font_load): Deallocate `sids' array for + CID-keyed fonts. + + * devel/ftoption.h: Define FT_DEBUG_MEMORY. + +2003-12-18 Werner Lemberg + + * include/freetype/ttnameid.h (TT_ADOBE_ID_LATIN_1): New macro. + * src/type1/t1objs.c (T1_Face_Init): Use TT_ADOBE_ID* values. + +2003-12-18 Werner Lemberg + + * src/cff/cfftypes.h (CFF_FontRecDictRec): Change type of + `cid_count' to `FT_ULong'. + + * src/cff/cffgload.c (cff_slot_load): Take care of empty `cids' + array. + + * src/cff/cffload.c (cff_charset_done): Free `cids' array. + (cff_font_load): Create cids array only for CID-keyed fonts which + are subsetted. + + * src/cff/cffobjs.c (cff_face_init): Check the availability of + the PSNames modules for non-pure CFFs also. + Set FT_FACE_FLAG_GLYPH_NAMES for a non-pure CFF also if it isn't + CID-keyed. + + * src/cff/rules.mk (CFF_DRV_H): Add cfftypes.h. + +2003-12-17 Werner Lemberg + + * src/sfnt/sfobjs.c (sfnt_init_face): Don't set + FT_FACE_FLAG_GLYPH_NAMES if the font contains a version 3.0 `post' + table. + + * docs/CHANGES: Updated. + +2003-12-17 Masatake YAMATO + + Add new function FT_Get_CMap_Language_ID to extract the language ID + for TrueType/sfnt fonts. + + * include/freetype/internal/services/svttcmap.h: New file. + * include/freetype/internal/ftserv.h (FT_SERVICE_TT_CMAP_H): Add + svttcmap.h. + + * src/sfnt/sfdriver.c: Include ttcmap0.h. + (tt_service_get_cmap_info): New service. + (sfnt_services): Updated. + + * src/sfnt/ttcmap0.c (tt_cmap*_get_info): New functions. + (tt_cmap*_class_rec): Add tt_cmap*_get_info members. + (tt_get_cmap_info): New function. + * src/sfnt/ttcmap0.h: Include FT_SERVICE_TT_CMAP_H. + (TT_CMap_ClassRec): New field `get_cmap_info'. + (tt_get_cmap_info): New declaration. + + * src/base/ftobjs.c: Include FT_SERVICE_TT_CMAP_H. + (FT_Get_CMap_Language_ID): New function implementation. + * include/freetype/tttables.h (FT_Get_CMap_Language_ID): New + function declaration. + +2003-12-16 Werner Lemberg + + * src/sfnt/ttcmap.c, src/sfnt/ttcmap.h: Removed. Obsolete. + + * include/freetype/internal/sfnt.h (SFNT_Interface): Remove + obsolete fields `load_charmap' and `free_charmap'. + (TT_CharMap_Load_Func, TT_CharMap_Free_Func): Removed. + * src/sfnt/sfnt.c: Don't include ttcmap.c. + * src/sfnt/rules.mk (SFNT_DRV_SRC): Don't include ttcmap.c. + * src/sfnt/ttload.c: Don't include ttcmap.h. + * src/sfnt/sfdriver.c: Don't include ttcmap.h. + (sfnt_interface): Updated. + + * include/freetype/internal/tttypes.h (TT_TableDirRec, + TT_CMapDirRec, TT_CMapDirEntryRec, TT_CMap0, TT_CMap2SubHeaderRec, + TT_CMap2Rec, TT_CMap4Segment, TT_CMap4Rec, TT_CMap6, + TT_CMapGroupRec, TT_CMap8_12Rec, TT_CMap10Rec, TT_CharMap_Func, + TT_CharNext_Func, TT_CMapTableRec, TT_CharMapRec): Removed. + Obsolete. + * src/cff/cffobjs.h (CFF_CharMapRec): Removed. Obsolete. + +2003-12-15 Werner Lemberg + + * docs/CHANGES: Updated. + +2003-12-15 Wolfgang Domröse + + * builds/atari/*: New directory for building FreeType 2 on Atari + with the PureC compiler. + +2003-12-12 Wolfgang Domröse + + * src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Add + cast. + * src/cff/cffdrivr.c (cff_ps_has_glyph_names): Assure that return + value is either 0 or 1. + +2003-12-12 Werner Lemberg + + * src/cff/cffdrivr.c (cff_get_glyph_name): Improve error message. + (cff_get_name_index): Return if no PSNames service is available. + (cff_ps_has_glyph_names): Handle CID-keyed fonts correctly. + * src/cff/cfftypes.h (CFF_CharsetRec): New field `cids', used for + CID-keyed fonts. This is the inverse mapping of `sids'. + * src/cff/cffload.c (cff_charset_load): New argument `invert'. + Initialize charset->cids if `invert' is set. + (cff_font_load): In call to cff_charset_load, set `invert' to true + for CID-keyed fonts. + * src/cff/cffgload.c (cff_slot_load): Handle glyph index as CID + and map it to the real glyph index. + + * docs/CHANGES: Updated. + +2003-12-11 Werner Lemberg + + * src/cff/cffobjs.c (cff_face_init): Don't set + FT_FACE_FLAG_GLYPH_NAMES for CID-keyed fonts. + Don't construct a cmap for CID-keyed fonts. + +2003-12-10 Werner Lemberg + + Use implementation specific SID value 0xFFFF to indicate that + a dictionary element is missing. + + * src/cff/cffload.c (cff_subfont_load): Initialize all fields + which hold SIDs to 0xFFFF. + (cff_index_get_sid_string): Handle SID value 0xFFFF. + Handle case where `psnames' is zero. + (cff_font_load): Updated. + Don't load encoding for CID-keyed CFFs. + + * src/cff/cffobjs.c (cff_face_init): Updated. + Don't check for PSNames module if font is CID-keyed. + Compute style name properly (using the same algorithm as in the + CID driver). + Fix computation of style flags. + + * src/cff/cfftoken.h: Comment out handling of base_font_name. + Rename `postscript' field to `embedded_postscript' + * src/cff/cfftypes.h (CFF_FontRecDictRec): Remove `base_font_name' + and `postscript'. + +2003-12-10 Detlef Würkner + + * src/pcf/pcfdrivr.c (pcf_get_charset_id): New function (a clone + of the similar BDF function). + (pcf_service_bdf): Use it. + +2003-12-09 Werner Lemberg + + * src/sfnt/sfobjs.c (sfnt_load_face): Set FT_FACE_FLAG_GLYPH_NAMES + only if a `post' table is present. + +2003-12-09 George Williams + + * src/base/ftobjs.c (load_mac_face): Recent versions of Linux + support Mac's HFS+ file system, thus enable code to read /rsrc on + non-Macintosh platforms also. + +2003-12-08 Werner Lemberg + + * include/freetype/internal/psaux.h (PS_TableRec): Change type + of `lengths' to FT_PtrDist. + (T1_DecoderRec): Change type of `subrs_len' to FT_PtrDist. + * include/freetype/internal/t1types.h (T1_FontRec): Change type + of `subrs_len' and `charstrings_len' to FT_PtrDist. + + * src/base/ftobjs.c (Mac_Read_POST_Resource): Replace `junk' + variable with better solution. + (IsMacResource): Remove unused variable `map_len'. + Replace `junk' variable with better solution. + (FT_Open_Face) [!FT_MACINTOSH]: Add conditional + FT_CONFIG_OPTION_MAC_FONTS. + +2003-12-08 Wolfgang Domröse + + * src/autohint/ahhint.c (ah_hinter_hint_edges, + ah_hinter_align_strong_points): Add some casts. + + * src/base/ftoutln.c (FT_OrientationExtremumRec): Change type + of `pos' to FT_Long. + + * src/base/ftobjs.c (Mac_Read_POST_Resource, + Mac_Read_sfnt_Resource): Change type of `len' to FT_Long. + + * src/type42/t42parse.c (t42_parse_dict): Add cast for `n_keywords'. + +2003-12-07 Werner Lemberg + + * docs/raster.txt: New file, taken from FreeType 1 and completely + revised. + +2003-12-04 Masatake YAMATO + + * src/type1/t1driver.c (Get_Interface): Remove FT_UNUSED for + t1_interface. t1_interface is used. + +2003-11-27 David Turner + + * src/pfr/pfrdrivr.c (pfr_get_metrics): Revert incorrect change of + 2003-11-23: For PFR fonts, metrics->x_scale and metrics->y_scale are + the scaling values for outline units, not for metric units. + +2003-11-25 Werner Lemberg + + * src/base/ftcalc.c, include/freetype/internal/ftcalc.h + (FT_MulDiv_No_Round): Surround code with `#ifdef + TT_CONFIG_OPTION_BYTECODE_INTERPRETER ... #endif'. + +2003-11-23 Werner Lemberg + + * src/base/ftcalc.c (FT_MulDiv_No_Round): New function (32 and + 64 bit version). + * include/freetype/internal/ftcalc.h: Updated. + + * src/truetype/ttinterp.c (TT_MULDIV_NO_ROUND): New macro. + (TT_INT64): Removed. + (DO_DIV): Use TT_MULDIV_NO_ROUND. + + * src/pfr/pfrdrivr.c (pfr_get_metrics): Directly use + metrics->x_scale and metrics->y_scale. + +2003-11-22 Rogier van Dalen + + * src/truetype/ttinterp.c (CUR_Func_move_orig): New macro. + (Direct_Move_Orig, Direct_Move_Orig_X, Direct_Move_Orig_Y): New + functions. Similar to Direct_Move, Direct_Move_X, and + Direct_Move_Y but without touching. + (Compute_Funcs): Use new functions. + + (Round_None, Round_To_Grid, Round_To_Half_Grid, Round_Down_To_Grid, + Round_Up_To_Grid, Round_To_Double_Grid, Round_Super, + Round_Super_45): Fix rounding of value zero. + + (DO_DIV): Don't use TT_MULDIV. + + (Ins_SHC): This instruction actually touches the points. + (Ins_MSIRP): Fix undocumented behaviour. + + * src/truetype/ttinterp.h (TT_ExecContextRec): Updated. + +2003-11-22 Werner Lemberg + + * docs/VERSION.DLL, docs/CHANGES: Updated. + + * src/base/ftobjs.c (FT_Set_Char_Size): Make metrics->x_scale and + metrics->y_scale really precise. + + (FT_Load_Glyph): Update computation of linearHoriAdvance and + linearVertAdvance. + + * src/truetype/ttinterp.c (Update_Max): Use FT_REALLOC. + +2003-11-22 David Turner + + * src/autofit/*: More updates. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 8. + * builds/unix/configure.ac (version_info): Set to 9:6:3. + * README: Updated. + +2003-11-13 John A. Boyd Jr. + + * src/bdf/bdfdrivr.c (bdf_interpret_style), src/pcf/pcfread.c + (pcf_interpret_style): Replace spaces with dashes in properties + SETWIDTH_NAME and ADD_STYLE_NAME to simplify parsing. + +2003-11-11 Werner Lemberg + + * docs/CHANGES: Updated. + +2003-11-11 John A. Boyd Jr. + + Handle SETWIDTH_NAME and ADD_STYLE_NAME properties for BDF and PCF + fonts. + + * src/bdf/bdfdrivr.c (bdf_interpret_style): New auxiliary function. + (BDF_Face_Init): Don't handle style properties but call + bdf_interpret_style. + + * src/pcf/pcfread.c (pcf_interpret_style): New auxiliary function. + (pcf_load_font): Don't handle style properties but call + pcf_interpret_style. + +2003-11-07 Werner Lemberg + + + * Version 2.1.7 released. + ========================= + + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 7. + + * builds/unix/ft2unix.h: Fix comments. + + * builds/unix/ftconfig.in: Synchronized with ANSI version. + Use `#undef' in templates as recommended in the autoconf + documentation. + Since real `#undef' lines don't survive during configuration, use + `/undef' instead; the postprocessing facility of the + AC_CONFIG_HEADERS autoconf macro converts them to `#undef'. + + * builds/unix/install.mk (install): Install Unix version of + `ftconfig.h'. + + * builds/unix/unix-cc.in (CFLAGS): Set FT_CONFIG_CONFIG_H macro + to include the correct `ftconfig.h' file. + + * builds/unix/ft-munmap.m4 (FT_MUNMAP_DECL): Removed. + (FT_MUNMAP_PARAM): Updated syntax to autoconf 2.59. + + * builds/unix/freetype2.m4: Updated syntax to autoconf 2.59. + + * builds/unix/configure.ac: Use AC_CONFIG_HEADERS instead of + AC_CONFIG_HEADER to create ftconfig.h, and use second argument + to replace `/undef' with `#undef'. + Don't use FT_MUNMAP_DECL but AC_CHECK_DECLS to check for munmap. + Use AS_HELP_STRING in AC_ARG_WITH. + Update syntax to autoconf 2.59. + + * builds/unix/ltmain.sh: Regenerated with `libtoolize --force + --copy' from libtool 1.5. + * builds/unix/aclocal.m4: Regenerated with `aclocal -I .' from + automake 1.7.8. + * builds/unix/configure: Regenerated with autoconf 2.59. + * builds/unix/config.guess, builds/unix/config.sub: Updated from + `config' CVS module at subversions.gnu.org + * builds/unix/install-sh, builds/unix/mkinstalldirs: Updated from + `texinfo' CVS module at subversions.gnu.org. + + * builds/vms/ftconfig.h: Synchronized with ANSI version. + + * docs/CUSTOMIZE: Fix documentation error. + * docs/CHANGES, docs/VERSION.DLL, docs/release: Updated. + + * builds/freetype.mk (refdoc): Updated --title. + +2003-11-07 David Turner + + + * Version 2.1.6 released. + ========================= + + + * install: Removed. Obsolete. + +2003-11-04 Werner Lemberg + + * src/sfnt/sfdriver.c: Include FT_SERVICE_SFNT_H. + (sfnt_service_sfnt_table): New service. + (sfnt_services): Updated. + + * docs/license.txt: Reworded. + +2003-11-03 Werner Lemberg + + * include/freetype/*: Add a guard to all public header files which + load FT_FREETYPE_H to reject freetype.h from FreeType 1. + +2003-11-02 Patrick Welche + + * builds/unix/freetype2.m4, builds/unix/ft-munmap.m4: Protect + first argument of AC_DEFUN with brackets to avoid possible + expansion. + +2003-11-02 Werner Lemberg + + * include/freetype/cache/ftcglyph.h: Don't include stddef.h. + + * include/freetype/freetype.h: Fix check for ft2build.h. + +2003-11-01 Werner Lemberg + + * include/freetype/freetype.h: Check that ft2build.h has been + loaded first. + + * src/base/fttype1.c (FT_Get_PS_Font_Info): Fix incorrectly applied + patch. + +2003-10-31 Detlef Würkner + + * src/base/fttype1.c (FT_Get_PS_Font_Info, FT_Has_PS_Glyph_Names): + Fix parameter order in calls to FT_FACE_FIND_SERVICE. + +2003-10-31 Werner Lemberg + + * include/freetype/internal/ftserv.h + (FT_SERVICE_POSTSCRIPT_NAMES_H): Removed. Unused. + + * src/type42/t42drivr.c (t42_services): Updated. + +2003-10-29 David Turner + + * include/freetype/internal/bdftypes.h: Removed. Obsolete. + * src/base/ftbdf.c: Updated. + + * include/freetype/internal/cfftypes.h: Moved to... + * src/cff/cfftypes.h: This place since no other module needs to + know about those types. + + * include/freetype/internal/t42types.h: Moved to... + * src/type42/t42types.h: This place since no other module needs to + know about those types. + + * include/freetype/internal/services/svbdf.h: Include FT_BDF_H. + + * include/freetype/internal/services/svpsname.h: Renamed to... + * include/freetype/internal/services/svpscmap.h: This. + Updated `FT_Service_PsNames' -> `FT_Service_PsCMaps' and + `POSTSCRIPT_NAMES' -> `POSTSCRIPT_CMAPS' everywhere. + + * include/freetype/internal/services/svpsinfo.h: New file, providing + PostScript info service. + + * include/freetype/internal/ftserv.h (FT_SERVICE_POSTSCRIPT_CMAPS_H, + FT_SERVICE_POSTSCRIPT_INFO_H): New macros for svpscmap.h and + svpsinfo.h. + * include/freetype/internal/internal.h (FT_INTERNAL_TYPE42_TYPES_H, + FT_INTERNAL_CFF_TYPES_H, FT_INTERNAL_BDF_TYPES_H): Removed. + + * src/base/fttype1.c: Don't include FT_INTERNAL_TYPE1_TYPES_H and + FT_INTERNAL_TYPE42_TYPES_H but FT_INTERNAL_SERVICE_H and + FT_SERVICE_POSTSCRIPT_INFO_H. + (FT_Get_PS_Font_Info, FT_Has_PS_Glyph_Names): Use new + POSTSCRIPT_INFO service. + + * src/cff/cffdrivr.c: Include FT_SERVICE_POSTSCRIPT_INFO_H. + (cff_ps_has_glyph_names): New function. + (cff_service_ps_info): New service. + (cff_services): Updated. + + * src/cff/cffload.h, src/cff/cffobjs.h, src/cff/cffparse.h: Don't + include FT_INTERNAL_CFF_TYPES_H but cfftypes.h directly. + + * src/cif/cidriver.c: Include FT_SERVICE_POSTSCRIPT_INFO_H. + (cid_ps_get_font_info): New function. + (cid_service_ps_info): New service. + (cid_services): Updated. + + * src/type1/t1driver.c: Include FT_SERVICE_POSTSCRIPT_INFO_H. + (t1_ps_get_font_info, t1_ps_has_glyph_names): New functions. + (t1_service_ps_info): New service. + (t1_services): Updated. + + * src/type42/t42drivr.c: Include FT_SERVICE_POSTSCRIPT_INFO_H. + (t42_ps_get_font_info, t42_ps_has_glyph_names): New functions. + (t42_service_ps_info): New service. + + * src/type42/t42objs.h: Don't include FT_INTERNAL_TYPE42_TYPES_H + but t42types.h directly. + + * src/psnames/psmodule.c (psnames_interface, psnames_services): + Renamed to... + (pscmaps_interface, pscmaps_services): This. + Updated all users. + + + * src/gzip/infblock.c (inflate_blocks): Remove compiler warning. + +2003-10-22 Werner Lemberg + + * src/type1/t1load.c (parse_encoding): Handle `/Encoding [ ... ]'. + + * src/type1/t1parse.c (T1_Get_Private_Dict): Test whether `eexec' + is real. + + * src/type42/t42parse.c (t42_parse_encoding): Improve boundary + checking while parsing. + + * docs/CHANGES: Updated. + +2003-10-21 Josselin Mouette + + * include/freetype/internal/t1types.h (T1_FontRec): `paint_type' + and `stroke_width' aren't pointers. + + * src/type42/t42objs.c (T42_Face_Done), src/type1/t1objs.c + (T1_Face_Done): Don't free `paint_type' and `stroke_width'. + +2003-10-20 Graham Asher + + * src/winfonts/winfnt.c (fnt_cmap_class): Fix position of `const'. + +2003-10-19 Werner Lemberg + + * src/autohint/ahhint.c (ah_hinter_load_glyph): Patch from + 2003-08-18 introduced a severe bug (FT_Render_Glyph was called + twice under some circumstances, causing strange results). This + is fixed now by clearing the FT_LOAD_RENDER bit of `load_flags'. + + * src/base/ftpfr.c (FT_Get_PFR_Metrics): Initialize `error'. + * src/psaux/psobjs.c (ps_tobytes): Initialize `n'. + * src/type42/t42parse.c (t42_parse_sfnts): Initialize `string_size'. + +2003-10-16 Werner Lemberg + + Completely revised Type 42 parser. It now handles both fonts + produced with ttftot42 (tested version 0.3.1) and + TrueTypeToType42.ps (tested version May 2001; it is necessary to + fix the broken header comment to be `%!PS-TrueTypeFont...'). + + * src/type42/t42objs.c (T42_GlyphSlot_Load): Change fourth + parameter to `FT_UInt'. + * src/type42/t42objs.h: Updated. + + * src/type42/t42parse.h (T42_ParserRec): Change type of `in_memory' + to FT_Bool. + (T42_Loader): Change type of `num_chars' and `num_glyphs' to + FT_UInt. + Add `swap_table' element. + * src/type42/t42parse.c (T42_KEYWORD_COUNT, T1_ToFixed, + T1_ToCoordArray, T1_ToTokenArray): Removed. + (T1_ToBytes): New macro. + (t42_is_alpha, t42_hexval): Removed. + (t42_is_space): Handle `\0'. + (t42_parse_encoding): Updated to use new PostScript parser routines + from psaux. + Handle `/Encoding [ ... ]' also. + (T42_Load_Status): New enumeration. + (t42_parse_sfnts): Updated to use new PostScript parser routines + from psaux. + (t42_parse_charstrings): Updated to use new PostScript parser + routines from psaux. + Handle `/CharStrings << ... >>' also. + Don't expect that /.notdef is the first element in dictionary. Copy + code from type1 module to handle this. + (t42_parse_dict): Updated to use new PostScript parser routines + from psaux. + Remove code for synthetic fonts (which can't occur in Type 42 + fonts). + (t42_loader_done): Release `swap_table'. + + * src/psaux/psobjs.c (skip_string): Increase `cur' properly. + + * src/type1/t1load.c (parse_charstrings): Make test for `.notdef' + faster. + +2003-10-15 Graham Asher + + * src/autohint/ahglobal.c (blue_chars), src/winfonts/winfnt.c + (fnt_cmap_class_rec, fnt_cmap_class), src/bdf/bdflib.c (empty, + _num_bdf_properties), src/gzip/infutil.c (inflate_mask), + src/gzip/inffixed.h (fixed_bl, fixed_bd, fixed_tl, fixed_td), + src/gzip/inftrees.h (inflate_trees_fixed), srf/gzip/inftrees.c + (inflate_trees_fixed): Decorate with more `const' to avoid + writable global variables which are disallowed on ARM. + +2003-10-08 Werner Lemberg + + * src/type1/t1load.c (parse_font_matrix, parse_charstrings): Remove + code specially for synthetic fonts; this is handled elsewhere. + (parse_encoding): Remove code specially for synthetic fonts; this is + handled elsewhere. + Improve boundary checking while parsing. + (parse_dict): Improve boundary checking while parsing. + Use ft_memcmp to simplify code. + +2003-10-07 Werner Lemberg + + * src/type1/t1load.c (parse_subrs, parse_dict): Handle synthetic + fonts properly. + (parse_charstrings): Copy correct number of characters into + `name_table'. + +2003-10-06 Werner Lemberg + + Heavy modification of the PS parser to handle comments and strings + correctly. This doesn't slow down the loading of PS fonts + significantly since charstrings aren't affected. + + * include/freetype/config/ftstdlib.h (ft_xdigit): Renamed to... + (ft_isxdigit): This. Updated all callers. + (ft_isdigit): New alias to `isdigit'. + + * include/freetype/internal/psaux.h (PS_Parser_FuncsRec): Renamed + `skip_alpha' to `skip_PS_token'. + Add parameter to `to_bytes' and change some argument types. + + * src/psaux/psauxmod.c (ps_parser_funcs): Updated. + * src/psaux/psobjs.c (ft_char_table): New array to map character + codes (ASCII and EBCDIC) of digits to numbers. + (OP): New auxiliary macro holding either `>=' or `<' depending on + the character encoding. + (skip_comment): New function. + (skip_spaces): Use it. + (skip_alpha): Removed. + (skip_literal_string, skip_string): New functions. + (ps_parser_skip_PS_token): New function. This is a better + replacement of... + (ps_parser_skip_alpha): Removed. + (ps_parser_to_token, ps_parser_to_token_array): Updated. + (T1Radix): Rewritten, using `ft_char_table'. + (t1_toint): Renamed to... + (ps_toint): This. Update all callers. + Use `ft_char_table'. + (ps_tobytes): Add parameter to handle delimiters and change some + argument types. + Use `ft_char_table'. + (t1_tofixed): Renamed to... + (ps_tofixed): This. Update all callers. + Use `ft_char_table'. + (t1_tocoordarray): Renamed and updated to... + (ps_tocoordarray): This. Update all callers. + (t1_tofixedarray): Renamed and updated to... + (ps_tofixedarray): This. Update all callers. + (t1_tobool): Renamed to... + (ps_tobool): This. Update all callers. + (ps_parser_load_field): Updated. + (ps_parser_load_field_table): Use `T1_MAX_TABLE_ELEMENTS' + everywhere. + (ps_parser_to_int, ps_parser_to_fixed, ps_parser_to_coord_array, + ps_parser_to_fixed_array): Skip spaces. Updated. + (ps_parser_to_bytes): Add parameter to handle delimiters and change + some argument types. Updated. + * src/psaux/psobjs.h: Updated. + + * src/cid/cidload.c (cid_parse_dict): Updated. + * src/cid/cidparse.c (cid_parser_new): Check whether the `StartData' + token was really found. + * src/cid/cidparse.h (cid_parser_skip_alpha): Updated and renamed + to... + (cid_parser_skip_PS_token): This. + + * src/type1/t1parse.h (T1_ParserRec): Use `FT_Bool' for boolean + fields. + (T1_Skip_Alpha): Replaced with... + (T1_Skip_PS_Token): This new macro. + * src/type1/t1parse.c (hexa_value): Removed. + (T1_Get_Private_Dict): Use `ft_isxdigit' and + `psaux->ps_parser_funcs_to_bytes' for handling ASCII hexadecimal + encoding. + After decrypting, replace the four random bytes at the beginning + with whitespace. + * src/type1/t1load.c (t1_allocate_blend): Use proper error values. + (parser_blend_design_positions, parse_blend_design_map, + parse_weight_vector): Updated. + (is_space): Handle `\f' also. + (is_name_char): Removed. + (read_binary_data): Updated. + (parse_encoding): Use `ft_isdigit'. + Updated. + (parse_subrs): Updated. + (TABLE_EXTEND): New macro. + (parse_charstrings): Updated. + Provide a workaround for buggy fonts which have more entries in the + /CharStrings dictionary then expected; the function now adds some + slots and skips entries which still exceed the new limit. + (parse_dict): Updated. + Terminate on the token `closefile'. + + * src/type42/t42parse.c (T1_Skip_Alpha): Replaced with... + (T1_Skip_PS_Token): This new macro. Updated all callers. + (t42_parse_encoding): Use `ft_isdigit'. + + + * src/base/ftmm.c (ft_face_get_mm_service): Return FT_Err_OK if + success. + +2003-10-05 Werner Lemberg + + * include/freetype/ftmodule.h: Renamed to... + * include/freetype/ftmodapi.h: This to avoid duplicate file names. + * include/freetype/config/ftheader.h (FT_MODULE_H): Updated. + +2003-10-04 Werner Lemberg + + * src/base/ftoutln.c (FT_OrientationExtremumRec, + FT_Outline_Get_Orientation): Trivial typo fixes to make it compile. + +2003-10-02 Markus F.X.J. Oberhumer + + * src/winfonts/winfnt.c (FT_WinFNT_HeaderRec): `color_table_offset' + has four bytes, not two. + Fix all users. + (fnt_font_load, FNT_Load_Glyph): Add more font validity tests. + +2003-10-01 David Turner + + * src/autofit/*: Adding first source files of the new multi-script + `auto-fitter'. + + * include/freetype/ftoutln.h (FT_Orientation): New enumeration. + (FT_Outline_Get_Orientation): New declaration. + + * src/base/ftoutln.c (FT_OrientationExtremumRec): New structure. + (ft_orientation_extremum_compute): New auxiliary function. + (FT_Outline_Get_Orientation): New function to compute the fill + orientation of a given glyph outline. + + * include/freetype/internal/ftserv.h (FT_FACE_LOOKUP_SERVICE): Fixed + trivial bug which could crash the font engine when a cached service + pointer was retrieved. + +2003-09-30 Werner Lemberg + + * src/cid/cidload.c (cid_parse_dict): Skip token if no keyword is + found. + + * src/type1/t1parse.c (IS_T1_WHITESPACE, IS_T1_LINESPACE, + IS_T1_SPACE): Removed. + (PFB_Tag): Removed. + (read_pfb_tag): Don't use PFB_Tag. + + * src/type42/t42parse.c (t42_is_space): Handle `\f' also. + (t42_parse_encoding): Handle synthetic fonts. + +2003-09-29 Werner Lemberg + + * include/freetype/internal/t1types.h: Don't include + FT_INTERNAL_OBJECTS_H but FT_INTERNAL_SERVICE_H. + * src/truetype/ttobjs.c: Don't include + FT_SERVICE_POSTSCRIPT_NAMES_H. + +2003-09-29 David Turner + + Added new service to handle glyph name dictionaries, replacing the + old internal header named `psnames.h' by `services/svpsname.h'. + Note that this is different from `services/svpostnm.h' which only + handles the retrieval of PostScript font names for a given face. + (Should we merge these two services into a single header?) + + * include/freetype/internal/psnames.h: Removed. Most of its + contents is moved to... + * include/freetype/internal/services/svpsname.h: New file. + + * include/freetype/internal/services/svpostnm.h + (FT_SERVICE_ID_POSTSCRIPT_NAME): Replaced with... + (FT_SERVICE_ID_POSTSCRIPT_FONT_NAME): New macro. + (PsName): Service named changed to... + (PsFontName): This. + Updated `FT_Service_PsName' -> `FT_Service_PsFontName' and + `POSTSCRIPT_NAME' -> `POSTSCRIPT_FONT_NAME' everywhere. + + * include/freetype/internal/internal.h + (FT_INTERNAL_POSTSCRIPT_NAMES_H): Removed. + * include/freetype/internal/psaux.h: Include + FT_SERVICE_POSTSCRIPT_NAMES_H. + (T1_DecoderRec): Updated type of `psnames'. + * include/freetype/internal/t1types.h: Don't include + FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H. + Include FT_INTERNAL_OBJECTS_H. + * include/freetype/internal/t42types.h: Don't include + FT_INTERNAL_POSTSCRIPT_NAMES_H. + * include/freetype/internal/tttypes.h (TT_FaceRec): Updated. + + * include/freetype/internal/ftserv.h (FT_FACE_FIND_SERVICE): Changed + order of parameters. All callers updated. + (FT_FACE_FIND_GLOBAL_SERVICE): New macro to look up a service + globally, checking all modules. + (FT_ServiceCacheRec): Updated. + (FT_SERVICE_POSTSCRIPT_NAMES_H): New macro for accessing + `svpsname.h'. + + * include/freetype/internal/ftobjs.h, src/base/ftobjs.c + (ft_module_get_service): New function. + + * src/cff/cffdrivr.c: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H + but FT_SERVICE_POSTSCRIPT_NAMES_H. + (cff_get_glyph_name, cff_get_name_index): Use new POSTSCRIPT_NAMES + service. + * src/cff/cffcmap.c (cff_cmap_unicode_init): Updated. + * src/cff/cffload.c, src/cff/cffload.h: Don't include + FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H. + (cff_index_get_sid_string): Updated. + * src/cff/cffobjs.c: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H + but FT_SERVICE_POSTSCRIPT_NAMES_H. + (cff_face_init): Use new POSTSCRIPT_NAMES service. + * src/cff/cffobjs.h: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H + but FT_SERVICE_POSTSCRIPT_NAMES_H. + + * src/cid/cidobjs.c: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H + but FT_SERVICE_POSTSCRIPT_NAMES_H. + (cid_face_init): Use new POSTSCRIPT_NAMES service. + * src/cid/cidriver.c: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H. + + * src/psaux/t1cmap.c (t1_cmap_std_init, t1_cmap_unicode_init): Use + new POSTSCRIPT_NAMES service. + * src/psaux/t1decode.h (t1_lookup_glyph_by_stdcharcode, + t1_decode_init): Use new POSTSCRIPT_NAMES service. + * src/psaux/t1cmap.h, src/psaux/t1decode.h: Dont' include + FT_INTERNAL_POSTSCRIPT_NAMES_H. + + * src/psnames/psmodule.c: Don't include + FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H. + (ps_build_unicode_table): Renamed to... + (ps_unicodes_init): This. + (ps_lookup_unicode): Renamed to... + (ps_unicodes_char_index): This. + (ps_next_unicode): Renamed to... + (ps_unicodes_char_next): This. + (psnames_interface): Updated. + (psnames_services): New services list. + (psnames_get_service): New function. + (psnames_module_class): Updated. + + * src/sfnt/sfobjs.c: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H + but FT_SERVICE_POSTSCRIPT_NAMES_H. + (sfnt_init_face): Use new POSTSCRIPT_NAMES service. + * src/sfnt/ttpost.c: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H + but FT_SERVICE_POSTSCRIPT_NAMES_H. + (tt_face_get_ps_name): Updated. + + * src/truetype/ttobjs.c: Don't include + FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H. + + * src/type1/t1driver.c: Don't include + FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H. + * src/type1/t1objs.c: Don't include + FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H. + (T1_Face_Init): Use new POSTSCRIPT_NAMES service. + + * src/type42/t42drivr.c (t42_get_ps_name): Renamed to... + (t42_get_ps_font_name): This. + (t42_service_ps_name): Renamed to... + (t42_service_ps_font_name): This. + (t42_services): Updated. + * src/type42/t42objs.c (T42_Face_Init): Use new POSTSCRIPT_NAMES + service. + * src/type42/t42objs.h: Don't include + FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H. + + + * src/base/ftglyph.c (FT_Get_Glyph): Don't access `slot' before + testing its validity. Reported by Henry Maddocks + . + +2003-09-21 Werner Lemberg + + * include/freetype/internal/ftserv.h (FT_FACE_FIND_SERVICE): + Fix compilation warning (s/pptr/Pptr/). + + * include/freetype/internal/internal.h (FT_INTERNAL_PFR_H, + FT_INTERNAL_FNT_TYPES_H): Removed. + +2003-09-21 David Turner + + Migrating the PFR and WINFNT drivers to the new service-based + internal API. + + * include/freetype/internal/fnttypes.h: Removed. Most of its data + are moved to winfnt.h and... + * include/freetype/internal/services/svwinfnt.h: New file. + + * include/freetype/internal/pfr.h: Removed. Most of its data are + moved to... + * include/freetype/internal/services/svpfr.h: New file. + + * include/freetype/internal/ftserv.h (FT_FACE_FIND_SERVICE, + FT_FACE_LOOKUP_SERVICE): Simplify fix of 2003-09-16 by removing + pointer type argument. + Updated all callers. + Update macro names of services header files. + + * src/base/ftobjs.c (FT_Get_Name_Index): Simplified code. + + * src/base/ftpfr.c: Include FT_SERVICE_PFR_H instead of + FT_INTERNAL_PFR_H. + (ft_pfr_check, FT_Get_PFR_Metrics, FT_Get_PFR_Kerning, + FT_Get_PFR_Advance): Use services provided in `PFR_METRICS'. + + * src/base/ftwinfnt.c: Include FT_SERVICE_WINFNT_H instead of + FT_INTERNAL_FNT_TYPES_H. + (FT_Get_WinFNT_Header): Use service provided in `WINFNT'. + + * src/pfr/pfrdrivr.c: Include FT_SERVICE_PFR_H and + FT_SERVICE_XFREE86_NAME_H instead of FT_INTERNAL_PFR_H. + (pfr_service_bdf): Updated. + (pfr_services): New services list. + (pfr_get_service): New function. + (pfr_driver_class): Updated. + + * src/winfonts/winfnt.c: Include FT_SERVICE_WINFNT_H and + FT_SERVICE_XFREE86_NAME_H instead of FT_INTERNAL_FNT_TYPES_H. + (winfnt_get_header, winfnt_get_service): New functions. + (winfnt_service_rec): New structure providing WINFNT services. + (winfnt_services): New services list. + (winfnt_driver_class): Updated. + * src/winfonts/winfnt.h: Add most of the removed fnttypes.h data. + + * src/sfnt/sfdriver.c (sfnt_service_ps_name): Fix typo. + + * src/type1/t1driver.c (t1_service_ps_name): Fix typo. + + * src/cff/cffobjs.c, src/cid/cidobjs.c, src/pfr/pfrsbit.c, + src/psaux/psobjs.c, src/sfnt/sfobjs.c, src/truetype/ttobjs.c, + src/type1/t1objs.c, src/type42/t42objs.c: Removing various compiler + warnings. + +2003-09-19 David Bevan + + * src/type1/t1parse.c (pfb_tag_fields): Removed. + (read_pfb_tag): Fix code so that it doesn't fail on end-of-file + indicator (0x8003). + * docs/CHANGES: Updated. + +2003-09-16 Werner Lemberg + + * include/freetype/internal/ftserv.h (FT_FACE_FIND_SERVICE, + FT_FACE_LOOKUP_SERVICE): Add parameter to pass pointer type. + Ugly, I know, but this is needed for compilation with C++ -- + maybe someone knows a better solution? + Updated all callers. + + * src/base/ftobjs.c (FT_Get_Name_Index, FT_Get_Glyph_Name): Remove + C++ compiler warnings. + + * src/base/ftbdf.c (FT_Get_BDF_Charset_ID, FT_Get_BDF_Property): + Fix order of arguments passed to FT_FACE_FIND_SERVICE. + +2003-09-15 Werner Lemberg + + Avoid header files with identical names. + + * include/freetype/internal/services/bdf.h: Renamed to... + * include/freetype/internal/services/svbdf.h: This. + Add copyright notice. + * include/freetype/internal/services/glyfdict.h: Renamed to... + * include/freetype/internal/services/svgldict.h: This. + Add copyright notice. + * include/freetype/internal/services/multmast.h: Renamed to... + * include/freetype/internal/services/svmm.h: This. + Add copyright notice. + Add FT_BEGIN_HEADER and FT_END_HEADER. + * include/freetype/internal/services/sfnt.h: Renamed to... + * include/freetype/internal/services/svsfnt.h: This. + Add copyright notice. + * include/freetype/internal/services/postname.h: Renamed to... + * include/freetype/internal/services/svpostnm.h: This. + Add copyright notice. + * include/freetype/internal/services/xf86name.h: Renamed to... + * include/freetype/internal/services/svxf86nm.h: This. + Add copyright notice. + + * include/freetype/internal/ftserv.h: Add FT_BEGIN_HEADER and + FT_END_HEADER. + Add copyright notice. + Update macro names of services header files. + + * builds/freetype.mk (SERVICES_DIR): New variable. + (BASE_H): Add services header files. + +2003-09-11 Werner Lemberg + + * builds/toplevel.mk (distclean): Remove `builds/unix/freetype2.pc'. + + * src/cff/cffdrivr.c: Don't load headers twice. + + * include/freetype/internal/ftserv.h (FT_SERVICE_SFNT_H): New macro. + * src/base/ftobjs.c: Include FT_SERVICE_SFNT_H. + + * src/cff/cffcmap.c: Include `cfferrs.h'. + * src/pfr/pfrdrivr.c: Include `pfrerror.h'. + * src/sfnt/sfdriver.c: Include `sferrors.h'. + * src/psaux/psobjs.h: Add declaration for `ps_parser_to_bytes'. + +2003-09-11 David Turner + + Introducing the concept of `module services'. This is the first + step towards a massive simplification of the engine's internals, in + order to get rid of various numbers of hacks. + + Note that these changes will break source & binary compatibility for + authors of external font drivers. + + * include/freetype/config/ftconfig.h (FT_BEGIN_STMNT, FT_END_STMNT, + FT_DUMMY_STMNT): New macros. + + * include/freetype/internal/ftserv.h: New file, containing the new + structures and macros to provide `services'. + + * include/freetype/internal/internal.h (FT_INTERNAL_EXTENSION_H, + FT_INTERNAL_EXTEND_H, FT_INTERNAL_HASH_H, FT_INTERNAL_OBJECT_H): + Removed, obsolete. + (FT_INTERNAL_SERVICE_H): New macro for `ftserv.h'. + + * include/freetype/internal/services/bdf.h, + include/freetype/internal/services/glyfdict.h, + include/freetype/internal/services/postname.h, + include/freetype/internal/services/xf86name.h: New files. + + * include/freetype/ftmm.h (FT_Get_MM_Func, FT_Set_MM_Design_Func, + FT_Set_MM_Blend_Func): Function pointers moved (in modified form) + to... + * include/freetype/internal/services/multmast.h: New file. + + * include/freetype/internal/sfnt.h (SFNT_Interface): `get_interface' + is now of type `FT_Module_Requester'. + (SFNT_Get_Interface_Func, SFNT_Load_Table_Func): Function pointers + moved (in modified form) to... + * include/freetype/internal/services/sfnt.h: New file. + + * include/freetype/tttables.h (FT_Get_Sfnt_Table_Func): Function + pointer moved (in modified form) to `services/sfnt.h'. + + * include/freetype/ftmodule.h (FT_Module_Interface): Make it a + a typedef to `FT_Pointer'. + + * include/freetype/internal/tttypes.h (TT_FaceRec): Add + `postscript_name'. + * include/freetype/internal/ftobjs.h (FT_Face_InternalRec): Remove + `postscript_name'. + Add `services' element. + (FT_LibraryRec): Remove `meta_class'. + + * src/base/ftbdf.c: Include FT_SERVICE_BDF_H. + (test_font_type): Removed. + (FT_Get_BDF_Charset_ID, FT_Get_BDF_Property): Use services + provided in `FT_SERVICE_ID_BDF'. + + * src/base/ftmm.c: Include FT_SERVICE_MULTIPLE_MASTERS_H. + (ft_face_get_mm_service): New auxiliary function to get services + from `FT_SERVICE_ID_MULTI_MASTERS'. + (FT_Get_Multi_Master, FT_Set_MM_Design_Coordinates, + FT_Set_MM_Blend_Coordinates): Use `ft_face_get_mm_service'. + + * src/base/ftobjs.c: Include FT_SERVICE_POSTSCRIPT_NAME_H and + FT_SERVICE_GLYPH_DICT_H. + (ft_service_list_lookup): New function to get a specific service. + (destroy_face): Updated. + (Mac_Read_POST_Resource): Simplify some code. + (IsMacResource): Fix warnings. + (FT_Get_Name_Index, FT_Get_Glyph_Name): Use services provided in + `FT_SERVICE_ID_GLYPH_DICT'. + (FT_Get_Postscript_Name): Use service provided in + `FT_SERVICE_ID_POSTSCRIPT_NAME'. + (FT_Get_Sfnt_Table, FT_Load_Sfnt_Table): Use services provided in + `FT_SERVICE_ID_SFNT_TABLE'. + + * src/base/ftxf86.c: Include FT_SERVICE_XFREE86_NAME_H. + (FT_Get_X11_Font_Format): Use service provided in + `FT_SERVICE_ID_XF86_NAME'. + + * src/bdf/bdfdrivr.c: Include FT_SERVICE_BDF_H and + FT_SERVICE_XFREE86_NAME_H. + (bdf_get_charset_id): New function. + (bdf_service_bdf): New structure providing BDF services. + (bdf_services): New services list. + (bdf_driver_requester): Use `ft_service_list_lookup'. + + * src/cff/cffdrivr.c: Include FT_SERVICE_XFREE86_NAME_H and + FT_SERVICE_GLYPH_DICT_H. + (cff_service_glyph_dict): New structure providing CFF services. + (cff_services): New services list. + (cff_get_interface): Use `ft_service_list_lookup'. + + * src/cid/cidriver.c: Include FT_SERVICE_POSTSCRIPT_NAME_H and + FT_SERVICE_XFREE86_NAME_H. + (cid_service_ps_name): New structure providing CID services. + (cid_services): New services list. + (cid_get_interface): Use `ft_service_list_lookup'. + + * src/pcf/pcfdrivr.c: Include FT_SERVICE_BDF_H and + FT_SERVICE_XFREE86_NAME_H. + (pcf_service_bdf): New structure providing PCF services. + (pcf_services): New services list. + (pcf_driver_requester): Use `ft_service_list_lookup'. + + * src/sfnt/sfdriver.c: Include FT_SERVICE_GLYPH_DICT_H and + FT_SERVICE_POSTSCRIPT_NAME_H. + (get_sfnt_glyph_name): Renamed to... + (sfnt_get_glyph_name): This. + (get_sfnt_postscript_name): Renamed to... + (sfnt_get_ps_name): This. + Updated. + (sfnt_service_glyph_dict, sfnt_service_ps_name): New structures + providing services. + (sfnt_services): New services list. + (sfnt_get_interface): Use `ft_service_list_lookup'. + + * src/truetype/ttdriver.c: Include FT_SERVICE_XFREE86_NAME_H. + (tt_services): New services list. + (tt_get_interface): Use `ft_service_list_lookup'. + + * src/type1/t1driver.c: Include FT_SERVICE_MULTIPLE_MASTERS_H, + FT_SERVICE_GLYPH_DICT_H, FT_SERVICE_XFREE86_NAME_H, and + FT_SERVICE_POSTSCRIPT_NAME_H. + (t1_service_glyph_dict, t1_service_ps_name, + t1_service_multi_masters): New structures providing Type 1 services. + (t1_services): New services list. + (Get_Interface): Use `ft_service_list_lookup'. + + * src/type42/t42drivr.c: Include FT_SERVICE_XFREE86_NAME_H, + FT_SERVICE_GLYPH_DICT_H, and FT_SERVICE_POSTSCRIPT_NAME_H. + (t42_service_glyph_dict, t42_service_ps_name): New strucures + providing Type 42 services. + (t42_services): New services list. + (T42_Get_Interface): Use `ft_service_list_lookup'. + + + * README, docs/CHANGES: Updating version numbers for 2.1.6, and + removing obsolete warnings in the documentation. + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 6. + * builds/unix/configure.ac (version_info): Set to 9:5:3. + * builds/unix/configure: Regenerated. + + * include/freetype/internal/ftcore.h, + include/freetype/internal/ftexcept.h, + include/freetype/internal/fthash.h, + include/freetype/internal/ftobject.h: Removed. Obsolete. + +2003-09-09 David Turner + + Fixing PFR kerning support. The tables within the font file contain + (charcode,charcode) kerning pairs, we need to convert them to + (gindex,gindex). + + * src/base/ftpfr.c (ft_pfr_check): Fix serious typo. + * src/pfr/prfload.c: Remove dead code. + (pfr_get_gindex, pfr_compare_kern_pairs, pfr_sort_kerning_pairs): + New functions. + (pfr_phy_font_done): Free `kern_pairs'. + (pfr_phy_font_load): Call `pfr_sort_kerning_pairs'. + * src/pfr/pfrobjs.c (pfr_face_get_kerning): Fix kerning extraction. + * src/pfr/pfrtypes.h (PFR_KERN_PAIR_INDEX): New macro. + (PFR_KernPairRec): Make `kerning' an FT_Int. + (PFR_PhyFontRec): New element `kern_pairs'. + (PFR_KernFlags): Values of PFR_KERN_2BYTE_CHAR and + PFR_KERN_2BYTE_ADJ were erroneously reversed. + + * include/freetype/ftoption.h: Commenting out the macro + TT_CONFIG_OPTION_BYTECODE_INTERPRETER. + +2003-09-02 David Turner + + + * Version 2.1.5 released. + ========================= + + +2003-08-31 Manish Singh + + * src/bdf/bdflib.c (_bdf_readstream): Don't use FT_MEM_COPY but + FT_MEM_MOVE. + +2003-08-30 Werner Lemberg + + * include/freetype/freetype.h (FT_ENCODING_SJIS, FT_ENCODING_GB2312, + FT_ENCODING_BIG5, FT_ENCODING_WANSUNG, FT_ENCODING_JOHAB): New + enumerations of FT_Encoding. The FT_ENCODING_MS_* variants except + FT_ENCODING_MS_SYMBOL are now deprecated. + Updated all users. + * docs/CHANGES: Document it. + +2003-08-27 Werner Lemberg + + * src/bdf/bdfdrivr.c (BDF_Face_Init): Accept lowercase characters + for spacing. + +2003-08-27 Mike FABIAN + + * src/pcf/pcfread.c (pcf_load_font), src/bdf/bdfdrivr.c + (BDF_Face_Init): Accept lowercase characters for slant and weight. + +2003-08-18 David Turner + + * include/freetype/config/ftoption.h: Disabling TrueType bytecode + interpreter until the UNPATENTED_HINTING works as advertised. + + * src/autohint/ahhint.c (ah_hinter_load_glyph): Use `|' for + setting `load_flags'. + + * Jamfile: Adding the `refdoc' target to the Jamfile in order to + build the API Reference in `docs/reference' automatically. + + * include/freetype/t1tables.h (PS_FontInfoRec), src/cid/cidtoken.h, + src/type1/t1tokens.h, src/type42/t42parse.c: Resetting the types of + `italic_angle', `underline_position', and `underline_thickness' to + their previous values (i.e., long, short, and ushort) in order to + avoid breaking binary compatibility. + + * include/freetype/ttunpat.h: Fixing documentation comment. + + * include/freetype/config/ftoption.h, devel/ftoption.h + (TT_CONFIG_OPTION_OPTION_COMPILE_UNPATENTED_HINTING): Replaced + with... + (TT_CONFIG_OPTION_UNPATENTED_HINTING): This. Updated all users. + (TT_CONFIG_OPTION_FORCE_UNPATENTED_HINTING): Removed. + + * include/freetype/internal/ftobjs.h (FT_DEBUG_HOOK_TYPE1): Removed. + (FT_DEBUG_HOOK_UNPATENTED_HINTING): New macro. Use this with + `FT_Set_Debug_Hook' to get the same effect as the removed + TT_CONFIG_OPTION_FORCE_UNPATENTED_HINTING. + + * src/truetype/ttobjs.c (tt_face_init): Use + `FT_DEBUG_HOOK_UNPATENTED_HINTING'. + +2003-08-06 Werner Lemberg + + * src/type1/t1gload.c (T1_Load_Glyph), src/cff/cffgload.c + (cff_slot_load), src/cid/cidgload.c (cid_slot_load_glyph): Fix + previous change. + +2003-08-05 Werner Lemberg + + * src/type1/t1gload.c (T1_Load_Glyph), src/cff/cffgload.c + (cff_slot_load), src/cid/cidgload.c (cid_slot_load_glyph): Apply + font matrix to advance width also. + * docs/CHANGES: Updated. + +2003-07-26 Werner Lemberg + + * builds/unix/configure.ac (version_info): Set to 9:4:3. + * builds/unix/configure: Updated. + * docs/CHANGES, docs/VERSION.DLL: Updated. + + * include/freetype/freetype.h (FT_GlyphSlot): Change 2003-06-16 + also breaks binary compatibility. Reintroduce an unsigned integer + at the old position of `flags' called `reserved'. + +2003-07-25 Werner Lemberg + + Make API reference valid HTML 4.01 transitional. + + * src/tools/docmaker/tohtml.py (html_header_1): Add doctype + and charset. + (html_header_2): Fix style elements and add some more. + Fix syntax. + (block_header, block_footer, description_header, description_footer, + marker_header, marker_footer, source_header, source_footer, + chapter_header): Don't use
...
but `align=center' + table attribute. + (chapter_inter, chapter_footer): Add
  • and use special