diff options
Diffstat (limited to 'src')
731 files changed, 38289 insertions, 10514 deletions
diff --git a/src/3rdparty/clucene/src/CLucene/StdHeader.cpp b/src/3rdparty/clucene/src/CLucene/StdHeader.cpp index 9813a58..d64c51f 100644 --- a/src/3rdparty/clucene/src/CLucene/StdHeader.cpp +++ b/src/3rdparty/clucene/src/CLucene/StdHeader.cpp @@ -17,8 +17,10 @@ #if defined(_CLCOMPILER_MSVC) && defined(_DEBUG) # define CRTDBG_MAP_ALLOC # include <stdlib.h> +#ifndef UNDER_CE # include <crtdbg.h> #endif +#endif CL_NS_USE(util) diff --git a/src/3rdparty/clucene/src/CLucene/StdHeader.h b/src/3rdparty/clucene/src/CLucene/StdHeader.h index d267d03..fbb3fd9 100644 --- a/src/3rdparty/clucene/src/CLucene/StdHeader.h +++ b/src/3rdparty/clucene/src/CLucene/StdHeader.h @@ -58,8 +58,10 @@ extern int _lucene_counter_break; //can set a watch on this #if defined(_CL_HAVE_UNISTD_H) #include <unistd.h> #elif defined(_CL_HAVE_IO_H) && defined(_CL_HAVE_DIRECT_H) +#ifndef UNDER_CE #include <io.h> #include <direct.h> +#endif #else #error "Neither unistd.h or (io.h & direct.h) were available" #endif @@ -75,7 +77,11 @@ extern int _lucene_counter_break; //can set a watch on this #if defined(_CL_STAT_MACROS_BROKEN) #error "Haven't implemented STAT_MACROS_BROKEN fix yet" #elif defined(_CL_HAVE_SYS_STAT_H) +#ifdef UNDER_CE + #include <types.h> +#else #include <sys/stat.h> +#endif #else #error "Haven't implemented platforms with no sys/stat.h" #endif @@ -179,13 +185,17 @@ extern int _lucene_counter_break; //can set a watch on this #include "CLucene/config/repl_tchar.h" #if defined(_CL_HAVE_ERRNO_H) +#ifndef UNDER_CE #include <errno.h> +#endif #else #error "Haven't implemented platforms with no errno.h" #endif #if defined(_CL_HAVE_FCNTL_H) +#ifndef UNDER_CE #include <fcntl.h> +#endif #else #error "Haven't implemented platforms with no fcntl.h" #endif diff --git a/src/3rdparty/clucene/src/CLucene/config/define_std.h b/src/3rdparty/clucene/src/CLucene/config/define_std.h index 3f92117..22a0790 100644 --- a/src/3rdparty/clucene/src/CLucene/config/define_std.h +++ b/src/3rdparty/clucene/src/CLucene/config/define_std.h @@ -72,6 +72,9 @@ #else #define _CL_HAVE_UNISTD_H #endif +#ifdef UNDER_CE +#undef _CL_HAVE_SYS_TIMEB_H +#endif //////////////////////////////////////////////// //now for individual functions. some compilers diff --git a/src/3rdparty/clucene/src/CLucene/config/repl_tchar.h b/src/3rdparty/clucene/src/CLucene/config/repl_tchar.h index d562cc8..ba8aef5 100644 --- a/src/3rdparty/clucene/src/CLucene/config/repl_tchar.h +++ b/src/3rdparty/clucene/src/CLucene/config/repl_tchar.h @@ -93,6 +93,26 @@ #endif #else //HAVE_TCHAR_H #include <tchar.h> + +#ifdef UNDER_CE +#include <QString> +#define _i64tot i64tot +inline TCHAR* i64tot(__int64 value, TCHAR* str, int radix) +{ + QT_USE_NAMESPACE + _tcscpy(str, (TCHAR *) QString::number(value, radix).utf16()); + return str; +} + +#define _tcstoi64 tcstoi64 +inline __int64 tcstoi64(const TCHAR *nptr, TCHAR **endptr, int base) +{ + QT_USE_NAMESPACE + bool ok; + return QString::fromUtf16((ushort*) nptr).toInt(&ok, base); +} + +#endif //some tchar headers miss these... #ifndef _tcstoi64 diff --git a/src/3rdparty/clucene/src/CLucene/util/Misc.cpp b/src/3rdparty/clucene/src/CLucene/util/Misc.cpp index cb2efe2..42e3fd0 100644 --- a/src/3rdparty/clucene/src/CLucene/util/Misc.cpp +++ b/src/3rdparty/clucene/src/CLucene/util/Misc.cpp @@ -24,10 +24,15 @@ # include <sys/timeb.h> #endif +#ifdef UNDER_CE +#include <QTime> +#endif + CL_NS_DEF(util) uint64_t Misc::currentTimeMillis() { +#ifndef UNDER_CE #if defined(_CLCOMPILER_MSVC) || defined(__MINGW32__) || defined(__BORLANDC__) struct _timeb tstruct; _ftime(&tstruct); @@ -41,6 +46,11 @@ uint64_t Misc::currentTimeMillis() return (((uint64_t) tstruct.tv_sec) * 1000) + tstruct.tv_usec / 1000; #endif +#else //UNDER_CE + QT_USE_NAMESPACE + QTime t = QTime::currentTime(); + return t.second() * 1000 + t.msec(); +#endif //UNDER_CE } // #pragma mark -- char related utils diff --git a/src/3rdparty/clucene/src/CLucene/util/fileinputstream.cpp b/src/3rdparty/clucene/src/CLucene/util/fileinputstream.cpp index 3803dfd..9125d84 100644 --- a/src/3rdparty/clucene/src/CLucene/util/fileinputstream.cpp +++ b/src/3rdparty/clucene/src/CLucene/util/fileinputstream.cpp @@ -25,7 +25,10 @@ */ #include "jstreamsconfig.h" #include "fileinputstream.h" + +#ifndef UNDER_CE #include <cerrno> +#endif #include <cstring> namespace jstreams { @@ -39,7 +42,9 @@ FileInputStream::FileInputStream(const char *filepath, int32_t buffersize) { error = "Could not read file '"; error += filepath; error += "': "; +#ifndef UNDER_CE error += strerror(errno); +#endif status = Error; return; } diff --git a/src/3rdparty/easing/legal.qdoc b/src/3rdparty/easing/legal.qdoc index 25f67e1..466ff15 100644 --- a/src/3rdparty/easing/legal.qdoc +++ b/src/3rdparty/easing/legal.qdoc @@ -1,7 +1,7 @@ /*! \page legal-easing.html \title Easing Equations by Robert Penner -\ingroup animation +\ingroup licensing \legalese \code diff --git a/src/3rdparty/freetype/ChangeLog b/src/3rdparty/freetype/ChangeLog index 8096136..7de9ecf 100644 --- a/src/3rdparty/freetype/ChangeLog +++ b/src/3rdparty/freetype/ChangeLog @@ -1,3 +1,1590 @@ +2009-03-12 Werner Lemberg <wl@gnu.org> + + * Version 2.3.9 released. + ========================= + + + Tag sources with `VER-2-3-9'. + +2009-03-12 Werner Lemberg <wl@gnu.org> + + * builds/unix/freetype2.in: Move @FT2_EXTRA_LIBS@ to `Libs.private'. + +2009-03-12 Werner Lemberg <wl@gnu.org> + + Fix some FreeType Coverity issues as reported for Ghostscript. + + * src/base/ftobjs.c (FT_New_Face, FT_New_Memory_Face): Initialize + `args.stream' (#3874, #3875). + (open_face_PS_from_sfnt_stream): Improve error management (#3786). + * src/base/ftmm.c (ft_face_get_mm_service): Fix check of `aservice' + (#3870). + * src/base/ftstroke.c (ft_stroke_border_get_counts): Remove dead + code (#3790). + * src/base/ftrfork.c (raccess_guess_apple_generic): Check error + value of `FT_Stream_Skip' (#3784). + + * src/type1/t1gload.c (T1_Load_Glyph): Check `size' before accessing + it (#3872) + + * src/pcf/pcfdrivr.c (PCF_Glyph_Load): Check `face' before accessing + it (#3871). + * src/pcf/pcfread.c (pcf_get_metrics): Handle return value of + `pcf_get_metric' (#3789, #3782). + (pcf_get_properties): Use FT_STREAM_SKIP (#3783). + + * src/cache/ftcmanag.c (FTC_Manager_RegisterCache): Fix check of + `acache' (#3797) + + * src/cff/cffdrivr.c (cff_ps_get_font_info): Fix check of `cff' + (#3796). + * src/cff/cffgload.c (cff_decoder_prepare): Check `size' (#3795). + * src/cff/cffload.c (cff_index_get_pointers): Add comment (#3794). + + * src/bdf/bdflib.c (_bdf_add_property): Check `fp->value.atom' + (#3793). + (_bdf_parse_start): Add comment (#3792). + + * src/raster/ftraster.c (Finalize_Profile_Table): Check + `ras.fProfile' (#3791). + + * src/sfnt/ttsbit.c (Load_SBit_Image): Use FT_STREAM_SKIP (#3785). + + * src/gzip/ftgzip.c (ft_gzip_get_uncompressed_size): Properly ignore + seek error (#3781). + +2009-03-11 Michael Toftdal <toftdal@gmail.com> + + Extend CID service functions to handle CID-keyed CFFs as CID fonts. + + * include/freetype/ftcid.h (FT_Get_CID_Is_Internally_CID_keyed, + FT_Get_CID_From_Glyph_Index): New functions. + + * include/freetype/internal/services/svcid.h + (FT_CID_GetIsInternallyCIDKeyedFunc, + FT_CID_GetCIDFromGlyphIndexFunc): New function typedefs. + (CID Service): Use them. + + * src/base/ftcid.c: Include FT_CID_H. + (FT_Get_CID_Is_Internally_CID_keyed, FT_Get_CID_From_Glyph_Index): + New functions. + + * src/cff/cffdrivr.c (cff_get_is_cid, cff_get_cid_from_glyph_index): + New functions. + (cff_service_cid_info): Add them. + * src/cff/cffload.c (cff_font_load): Don't free `font->charset.sids' + -- it is needed for access as a CID-keyed font. It gets deleted + later on. + + * src/cid/cidriver.c (cid_get_is_cid, cid_get_cid_from_glyph_index): + New functions. + (cid_service_cid_info): Add them. + + * docs/CHANGES: Updated. + +2009-03-11 Bram Tassyns <bramt@enfocus.be> + + Fix Savannah bug #25597. + + * src/cff/cffparse.c (cff_parse_real): Don't allow fraction_length + to become larger than 9. + +2009-03-11 Werner Lemberg <wl@gnu.org> + + Fix Savannah bug #25814. + + * builds/unix/freetype2.in: As suggested in the bug report, move + @LIBZ@ to `Libs.private'. + +2009-03-11 Werner Lemberg <wl@gnu.org> + + Fix Savannah bug #25781. + We now simply check for a valid `offset', no longer handling `delta + = 1' specially. + + * src/sfnt/ttcmap.c (tt_cmap4_validate): Don't check `delta' for + last segment. + (tt_cmap4_set_range, tt_cmap4_char_map_linear, + tt_cmap4_char_map_binary): Check offset. + +2009-03-11 Werner Lemberg <wl@gnu.org> + + * src/base/Jamfile: Fix handling of ftadvanc.c. + Reported by Oran Agra <oran@monfort.co.il>. + +2009-03-10 Vincent Richomme <richom.v@free.fr> + + Restructure Win32 and Wince compiler support. + + * src/builds/win32: Remove files for WinCE. + Move VC 2005 support to a separate directory. + Add directory for VC 2008 support. + + * src/builds/wince: New directory hierarchy for WinCE compilers + (VC 2005 and VC 2008). + +2009-03-09 Werner Lemberg <wl@gnu.org> + + More preparations for 2.3.9 release. + + * docs/CHANGES: Updated. + + * Jamfile, README: s/2.3.8/2.3.9/, s/238/239/. + +2009-03-09 Werner Lemberg <wl@gnu.org> + + * src/sfnt/rules.mk (SFNT_DRV_H): Add ttsbit0.c. + +2009-03-09 Alexey Kryukov <anagnost@yandex.ru> + + Fix handling of EBDT formats 8 and 9 (part 2). + + This patch fixes the following problems in ttsbit0.c: + + . Bitmaps for compound glyphs were never allocated. + + . `SBitDecoder' refused to load metrics if some other metrics have + already been loaded. This condition certainly makes no sense for + recursive calls, so I've just disabled it. Another possibility + would be resetting `decoder->metrics_loaded' to false before + loading each composite component. However, we must restore the + original metrics after finishing the recursion; otherwise we can + get a misaligned glyph. + + . `tt_sbit_decoder_load_bit_aligned' incorrectly handled `x_pos', + causing some glyph components to be shifted too far to the right + (especially noticeable for small sizes). + + Note that support for grayscale bitmaps (not necessarily compound) is + completely broken in ttsbit0.c. + + * src/sfnt/tt_sbit_decoder_load_metrics: Always load metrics. + (tt_sbit_decoder_load_bit_aligned): Handle `x_pos' correctly in case + of `h == height'. + (tt_sbit_decoder_load_compound): Reset metrics after loading + components. + Allocate bitmap. + +2009-03-09 Werner Lemberg <wl@gnu.org> + + * builds/unix/configure.raw (version_info): Set to 9:20:3. + +2009-03-03 David Turner <david@freetype.org> + + Protect SFNT kerning table parser against malformed tables. + + This closes Savannah BUG #25750. + + * src/sfnt/ttkern.c (tt_face_load_kern, tt_face_get_kerning): Fix a + bug where a malformed table would be successfully loaded but later + crash the engine during parsing. + +2009-03-03 David Turner <david@freetype.org> + + Update documentation and bump version number to 2.3.9. + + * include/freetype/freetype.h: Bump patch version to 9. + * docs/CHANGES: Document the ABI break in 2.3.8. + * docs/VERSION.DLL: Update version numbers table for 2.3.9. + +2009-03-03 David Turner <david@freetype.org> + + Remove ABI-breaking field in public PS_InfoFontRec definition. + + Instead, we define a new internal PS_FontExtraRec structure to + hold the additionnal field, then place it in various internal + positions of the corresponding FT_Face derived objects. + + * include/freetype/t1tables.h (PS_FontInfoRec): Remove the + `fs_type' field from the public structure. + * include/freetype/internal/psaux.h (T1_FieldLocation): New + enumeration `T1_FIELD_LOCATION_FONT_EXTRA'. + * include/freetype/internal/t1types.h (PS_FontExtraRec): New + structure. + (T1_FontRec, CID_FaceRec): Add it. + + * src/cid/cidload.c (cid_load_keyword): Handle + T1_FIELD_LOCATION_FONT_EXTRA. + * src/cid/cidtoken.h, src/type1/t1tokens.h, src/type42/t42parse.c: + Adjust FT_STRUCTURE and T1CODE properly to handle `FSType'. + * src/type1/t1load.c (t1_load_keyword): Handle + T1_FIELD_LOCATION_FONT_EXTRA. + + * include/freetype/internal/services/svpsinfo.h (PsInfo service): + Add `PS_GetFontExtraFunc' function typedef. + + * src/base/ftfstype.c: Include FT_INTERNAL_SERVICE_H and + FT_SERVICE_POSTSCRIPT_INFO_H. + (FT_Get_FSType_Flags): Use POSTSCRIPT_INFO service. + + * src/cff/cffdrivr.c (cff_service_ps_info): Updated. + * src/cid/cidriver.c (cid_ps_get_font_extra): New function. + (cid_service_ps_info): Updated. + * src/type1/t1driver.c (t1_ps_get_font_extra): New function. + (t1_service_ps_info): Updated. + * src/type42/t42drivr.c (t42_ps_get_font_extra): New function. + (t42_service_ps_info): Updated. + +2009-03-02 Alexey Kryukov <anagnost@yandex.ru> + + Fix handling of EBDT formats 8 and 9. + + The main cycle in `blit_sbit' makes too many iterations: it actually + needs the count of lines in the source bitmap rather than in the + target image. + + * src/sfnt/ttsbit.c (blit_sbit) [FT_CONFIG_OPTION_OLD_INTERNALS]: + Add parameter `source_height' and use it for main loop. + (Load_SBit_Single) [FT_CONFIG_OPTION_OLD_INTERNALS]: Updated. + +2009-02-23 Werner Lemberg <wl@gnu.org> + + Fix Savannah bug #25669. + + * src/base/ftadvanc.h (FT_Get_Advances): Fix serious typo. + + * src/base/ftobjs.c (FT_Select_Metrics, FT_Request_Metrics): Fix + scaling factor for non-scalable fonts. + + * src/cff/cffdrivr.c (cff_get_advances): Use correct advance width + value to prevent incorrect scaling. + + * docs/CHANGES: Document it. + +2009-02-15 Matt Godbolt <matt@godbolt.org> + + Fix Savannah bug #25588. + + * builds/unix/ftconfig.in (FT_MulFix_arm): Use correct syntax for + `orr' instruction. + +2009-02-11 Werner Lemberg <wl@gnu.org> + + * src/truetype/ttobjs.c (tt_check_trickyness): Add `DFKaiShu'. + Reported by David Bevan <dbevan@emtex.com>. + +2009-02-09 Werner Lemberg <wl@gnu.org> + + Fix Savannah bug #25495. + + * src/sfnt/sfobjs.c (sfnt_load_face): Test for bitmap strikes before + setting metrics and bbox values. This ensures that the check for a + font with neither a `glyf' table nor bitmap strikes can be performed + early enough to set metrics and bbox values too. + +2009-02-04 Werner Lemberg <wl@gnu.org> + + Fix Savannah bug #25480. + + * builds/unix/freetype-config.in: For --ftversion, don't use $prefix + but $includedir. + +2009-01-31 Werner Lemberg <wl@gnu.org> + + Minor docmaker improvements. + + * src/tools/docmaker/content.py (DocBlock::__init__): Ignore empty + code blocks. + +2009-01-25 Werner Lemberg <wl@gnu.org> + + Fix SCANCTRL handling in TTFs. + Problem reported by Alexey Kryukov <anagnost@yandex.ru>. + + * src/truetype/ttinterp.c (Ins_SCANCTRL): Fix threshold handling. + +2009-01-23 Werner Lemberg <wl@gnu.org> + + Move FT_Get_FSType_Flags to a separate file. + Problem reported by Mickey Gabel <mickey@monfort.co.il>. + + * src/base/ftobjs.c (FT_Get_FSType_Flags): Move to... + * src/base/ftfstype.c: This new file. + + * modules.cfg (BASE_EXTENSION): Add ftfstype.c. + + * docs/INSTALL.ANY: Updated. + + * builds/mac/*.txt, builds/amiga/*makefile*, + builds/win32/{visualc,visualce}/freetype.*, builds/symbian/*: + Updated. + +2009-01-22 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> + + * builds/unix/ftsystem.c (FT_Stream_Open): Fix 2 error + messages ending without "\n". + +2009-01-22 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> + + Fix Savannah bug #25347. + + * src/base/ftobjs.c (open_face_PS_from_sfnt_stream): Rewind + the stream to the original position passed to this function, + when ft_lookup_PS_in_sfnt_stream() failed. + (Mac_Read_sfnt_Resource): Rewind the stream to the head of + sfnt resource body, when open_face_PS_from_sfnt_stream() + failed. + +2009-01-19 Michael Lotz <mmlr@mlotz.ch> + + Fix Savannah bug #25355. + + * include/freetype/config/ftconfig.h (FT_MulFix_i386): Make + assembler code work with gcc 2.95.3 (as used by the Haiku project). + Add `cc' register to the clobber list. + +2009-01-18 Werner Lemberg <wl@gnu.org> + + Protect FT_Get_Next_Char. + + * src/sfnt/ttcmap.c (tt_cmap4_set_range): Apply fix similar to + change from 2008-07-22. + + Patch from Ronen Ghoshal <rghoshal@emtex.com>. + +2009-01-18 Werner Lemberg <wl@gnu.org> + + Implement FT_Get_Name_Index for SFNT driver. + + * src/sfnt/sfdriver.c (sfnt_get_name_index): New function. + (sfnt_service_glyph_dict): Use it. + + Problem reported by Truc Truong <tructv@necsv.com>. + +2009-01-18 Werner Lemberg <wl@gnu.org> + + * include/freetype/ftstroke.h (FT_Outline_GetInsideBorder): Fix + documentation. Problem reported by Truc Truong <tructv@necsv.com>. + + * docs/CHANGES: Updated. + +2009-01-14 Werner Lemberg <wl@gnu.org> + + * Version 2.3.8 released. + ========================= + + + Tag sources with `VER-2-3-8'. + + * docs/VERSION.DLL: Update documentation and bump version number to + 2.3.8. + + * README, Jamfile (RefDoc), builds/win32/visualc/index.html, + builds/win32/visualc/freetype.dsp, + builds/win32/visualc/freetype.vcproj, + builds/win32/visualce/index.html, + builds/win32/visualce/freetype.dsp, + builds/win32/visualce/freetype.vcproj: s/2.3.7/2.3.8/, s/237/238/. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 8. + + * builds/unix/configure.raw (version_info): Set to 9:19:3. + + * docs/release: Updated. + +2009-01-14 Werner Lemberg <wl@gnu.org> + + * builds/toplevel.mk (dist): Compress better. + +2009-01-13 Werner Lemberg <wl@gnu.org> + + * src/base/ftobjs.c (FT_Get_FSType_Flags): Cast for compilation + with C++. + +2009-01-13 Werner Lemberg <wl@gnu.org> + + Don't use stdlib.h and friends directly. + Reported by Mickey Gabel <mickey@monfort.co.il>. + + * src/base/ftdbgmem.c: s/<stdlib.h>/FT_CONFIG_STANDARD_LIBRARY_H/. + + * src/gzip/ftgzip.c, src/lzw/ftlzw.c, src/raster/ftmisc.h: + s/<string.h>/FT_CONFIG_STANDARD_LIBRARY_H/. + + * src/autofit/aftypes.h, src/autofit/afhints.c, + src/pshinter/pshalgo.c: s/<stdio.h>/FT_CONFIG_STANDARD_LIBRARY_H/ + + * src/lzw/ftlzw.c, src/base/ftdbgmem.c: Don't include stdio.h. + +2009-01-12 Werner Lemberg <wl@gnu.org> + + Avoid compiler warnings. + + * */*: s/do ; while ( 0 )/do { } while ( 0 )/. + Reported by Sean McBride <sean@rogue-research.com>. + +2009-01-12 Werner Lemberg <wl@gnu.org> + + Fix stdlib dependencies. + + Problem reported by Mickey Gabel <mickey@monfort.co.il>. + + * include/freetype/config/ftstdlib.h (ft_exit): Removed. Unused. + + * src/autofit/afhints.c, src/base/ftlcdfil.c, src/smooth/ftsmooth.c: + s/memcpy/ft_memcpy/. + * src/psaux/t1decode.c: s/memset/ft_memset/, s/memcpy/ft_memcpy/. + +2009-01-11 Werner Lemberg <wl@gnu.org> + + * docs/formats.txt: Add link to PCF specification. + + * include/freetype/ftbdf.h (FT_Get_BDF_Property): Improve + documentation. + +2009-01-09 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> + + * src/base/ftadvanc.c (_ft_face_scale_advances, FT_Get_Advance, + FT_Get_Advances): Change the type of load_flags from FT_UInt32 to + FT_Int32, to match with the flags for FT_Load_Glyph(). + * src/cff/cffdrivr.c (cff_get_advances): Ditto. + * src/truetype/ttdriver.c (tt_get_advances): Ditto. + * include/freetype/ftadvanc.h (FT_Get_Advance, FT_Get_Advances): + Ditto. + * include/freetype/internal/ftdriver.h (FT_Face_GetAdvancesFunc): + Ditto. + +2009-01-09 Daniel Zimmermann <netzimme@aol.com> + + * src/gxvalid/gxvmort.c (gxv_mort_feature_validate): Fix wrong + length check. From Savannah patch #6682. + +2009-01-09 Werner Lemberg <wl@gnu.org> + + Fix problem with T1_FIELD_{NUM,FIXED}_TABLE2. + + * src/psaux/psobjs.c (ps_parser_load_field_table): Don't handle + `count_offset' if it is zero (i.e., unused). Otherwise, the first + element of the structure which holds the data is erroneously + modified. Problem reported by Chi Nguyen <chint@necsv.com>. + +2009-01-09 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> + + * src/base/ftadvanc.c (_ft_face_scale_advances, FT_Get_Advance, + FT_Get_Advances): Extend the type of load_flags from FT_UInt to + FT_UInt32, to pass 32-bit flags on 16bit platforms. + * src/cff/cffdrivr.c (cff_get_advances): Ditto. + * src/truetype/ttdriver.c (tt_get_advances): Ditto. + * include/freetype/ftadvanc.h (FT_Get_Advance, FT_Get_Advances): + Ditto. + * include/freetype/internal/ftdriver.h (FT_Face_GetAdvancesFunc): + Ditto. + +2009-01-09 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> + + * src/base/ftobjs.c (FT_Done_Library): Issue an error message when + FT_Done_Face() cannot free all faces. If the list of the opened + faces includes broken face which FT_Done_Face() cannot free, + FT_Done_Library() retries FT_Done_Face() and it can fall into + an endless loop. See the discussion: + http://lists.gnu.org/archive/html/freetype-devel/2008-09/msg00047.html + http://lists.gnu.org/archive/html/freetype-devel/2008-10/msg00000.html + +2009-01-07 Werner Lemberg <wl@gnu.org> + + * docs/CHANGES: Document new key `a' in ftdiff. + +2009-01-06 Werner Lemberg <wl@gnu.org> + + * autogen.sh: Don't use GNUisms while calling sed. Problem reported + by Sean McBride. + +2009-01-06 Werner Lemberg <wl@gnu.org> + + * src/base/ftbitmap.c (FT_Bitmap_Convert): Handle FT_PIXEL_MODE_LCD + and FT_PIXEL_MODE_LCD_V. Problem reported by Chi Nguyen + <chint@necsv.com>. + +2009-01-06 Diego Pettenò <flameeyes@gmail.com> + + * builds/unix/configure.raw: Don't call AC_CANONICAL_BUILD and + AC_CANONICAL_TARGET and use $host_os only. A nice explanation for + this change can be found at + http://blog.flameeyes.eu/s/canonical-target. + + From Savannah patch #6712. + +2009-01-06 Sean McBride <sean@rogue-research.com> + + * src/base/ftdbgmem.c (_debug_mem_dummy): Make it static. + + * src/base/ftmac.c: Remove some #undefs. + +2008-12-26 Werner Lemberg <wl@gnu.org> + + Set `face_index' field in FT_Face for all font formats. + + * cff/cffobjs.c (cff_face_init), winfonts/winfnt.c (FNT_Face_Init), + sfnt/sfobjs.c (sfnt_init_face): Do it. + + * docs/CHANGES: Document it. + +2008-12-22 Steve Grubb + + * builds/unix/ftsystem.c (FT_Stream_Open): Reject zero-length files. + Patch from Savannah bug #25151. + +2008-12-21 Werner Lemberg <wl@gnu.org> + + * src/pfr/pfrdrivr.c, src/winfonts/winfnt.c, src/cache/ftcmanag.c, + src/smooth/ftgrays.c, src/base/ftobjc.s, src/sfobjs.c: + s/_Err_Bad_Argument/_Err_Invalid_Argument/. The former is for + errors in the bytecode interpreter only. + +2008-12-21 Werner Lemberg <wl@gnu.org> + + * src/base/ftpfr.c (FT_Get_PFR_Metrics): Protect against NULL + arguments. + Fix return value for non-PFR fonts. Both problems reported by Chi + Nguyen <chint@necsv.com>. + +2008-12-21 anonymous + + FT_USE_MODULE declares things as: + + extern const FT_Module_Class + + (or similar for C++). However, the actual types of the variables + being declared are often different, e.g., FT_Driver_ClassRec or + FT_Renderer_Class. (Some are, indeed, FT_Module_Class.) + + This works with most C compilers (since those structs begin with an + FT_Module_Class struct), but technically it's undefined behavior. + + To quote the ISO/IEC 9899:TC2 final committee draft, section 6.2.7 + paragraph 2: + + All declarations that refer to the same object or function shall + have compatible type; otherwise, the behavior is undefined. + + (And they are not compatible types.) + + Most C compilers don't reject (or even detect!) code which has this + issue, but the GCC LTO development branch compiler does. (It + outputs the types of the objects while generating .o files, along + with a bunch of other information, then compares them when doing the + final link-time code generation pass.) + + Patch from Savannah bug #25133. + + * src/base/ftinit.c (FT_USE_MODULE): Include variable type. + + * builds/amiga/include/freetype/config/ftmodule.h, + include/freetype/config/ftmodule.h, */module.mk: Updated to declare + pass correct types to FT_USE_MODULE. + +2008-12-21 Hongbo Ni <hongbo@njstar.com> + + * src/autofit/aflatin.c (af_latin_hint_edges), + src/autofit/aflatin2.c (af_latin2_hint_edges), src/autofit/afcjk.c + (af_cjk_hint_edges): Protect against division by zero. This fixes + Savannah bug #25124. + +2008-12-18 Werner Lemberg <wl@gnu.org> + + * docs/CHANGES: Updated. + +2008-12-18 Bevan, David <dbevan@emtex.com> + + Provide API for accessing embedding and subsetting restriction + information. + + * include/freetype.h (FT_FSTYPE_INSTALLABLE_EMBEDDING, + FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING, + FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING, FT_FSTYPE_EDITABLE_EMBEDDING, + FT_FSTYPE_NO_SUBSETTING, FT_FSTYPE_BITMAP_EMBEDDING_ONLY): New + macros. + (FT_Get_FSType_Flags): New function declaration. + + * src/base/ftobjs.c (FT_Get_FSType_Flags): New function. + + * src/cid/cidtoken.h, src/type1/t1tokens.h, src/type42/t42parse.c + (t42_keywords): Handle `FSType'. + + * include/freetype/t1tables.h (PS_FontInfoRec): Add `fs_type' field. + +2008-12-17 Werner Lemberg <wl@gnu.org> + + * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Don't use internal + macros so that copying the source code into an application works + out of the box. + +2008-12-17 Werner Lemberg <wl@gnu.org> + + * include/freetype/ftsynth.h, src/base/ftsynth.c: Move + FT_GlyphSlot_Own_Bitmap to... + * include/freetype/ftbitmap.h, src/base/ftbitmap.c: These files. + + * docs/CHANGES: Document it. + +2008-12-10 Werner Lemberg <wl@gnu.org> + + Generalize the concept of `tricky' fonts by introducing + FT_FACE_FLAG_TRICKY to indicate that the font format's hinting + engine is necessary for correct rendering. + + At the same time, slightly modify the behaviour of tricky fonts: + FT_LOAD_NO_HINTING is now ignored. To really force raw loading + of tricky fonts (without hinting), both FT_LOAD_NO_HINTING and + FT_LOAD_NO_AUTOHINT must be used. + + Finally, tricky TrueType fonts always use the bytecode interpreter + even if the patented code is used. + + * include/freetype/freetype.h (FT_FACE_FLAG_TRICKY, FT_IS_TRICKY): + New macros. + + * src/truetype/ttdriver.c (Load_Glyph): Handle new load flags + semantics as described above. + + * src/truetype/ttobjs.c (tt_check_trickyness): New function, using + code of ... + (tt_face_init): This function, now simplified and updated to new + semantics. + + * src/base/ftobjs.c (FT_Load_Glyph): Don't use autohinter for tricky + fonts. + + * docs/CHANGES: Document it. + +2008-12-09 Werner Lemberg <wl@gnu.org> + + Really fix Savannah bug #25010: An SFNT font with neither outlines + nor bitmaps can be considered as containing space `glyphs' only. + + * src/truetype/ttpload.c (tt_face_load_loca): Handle the case where + a `glyf' table is missing. + + * src/truetype/ttgload.c (load_truetype_glyph): Abort if we have no + `glyf' table but a non-zero `loca' entry. + (tt_loader_init): Handle missing `glyf' table. + + * src/base/ftobjs.c (FT_Load_Glyph): Undo change 2008-12-05. + + * src/sfnt/sfobjs.c (sfnt_load_face): A font with neither outlines + nor bitmaps is scalable. + +2008-12-05 Werner Lemberg <wl@nu.org> + + * src/autofit/aflatin.c (af_latin_uniranges): Add more ranges. This + fixes Savannah bug #21190 which also provides a basic patch. + +2008-12-05 Werner Lemberg <wl@nu.org> + + * include/freetype/freetype.h (FT_LOAD_ADVANCE_ONLY): Use value + 0x100 instead of 0x10000; the latter value is already occupied by + FT_LOAD_TARGET_LIGHT. Bug reported by James Cloos. + + + Handle SFNT with neither outlines nor bitmaps. This fixes Savannah + bug #25010. + + * src/base/ftobjs.c (FT_Load_Glyph): Reject fonts with neither + outlines nor bitmaps. + + * src/sfnt/sfobjs.c (sfnt_load_face): Don't return an error if there + is no table with glyphs. + + + * src/sfnt/ttload.c (tt_face_lookup_table): Improve debugging + message. + +2008-12-01 Werner Lemberg <wl@gnu.org> + + GDEF tables need `glyph_count' too for validation. Problem reported + by Chi Nguyen <chint@necsv.com>. + + * src/otvalid/otvgdef.c (otv_GDEF_validate), src/otvalid/otvalid.h + (otv_GDEF_validate), src/otvalid/otvmod.c (otv_validate): Pass + `glyph_count'. + +2008-11-29 Werner Lemberg <wl@gnu.org> + + * src/autofit/afcjk.c, src/base/ftoutln.c, src/base/ftrfork.c, + src/bdf/bdfdrivr.c, src/gxvalid/gxvmorx.c, src/otvalid/otvmath.c, + src/pcf/pcfdrivr.c, src/psnames/pstables.h, src/smooth/ftgrays.c, + src/tools/glnames.py, src/truetype/ttinterp.c, src/type1/t1load.c, + src/type42/t42objs.c, src/winfonts/winfnt.c: Fix compiler warnings + (Atari PureC). + +2008-11-29 James Cloos <cloos@jhcloos.com> + + * src/type/t1load.c (mm_axis_unmap): Revert previous patch and fix + it correctly by using FT_INT_TO_FIXED (FreeType expects 16.16 values + in the /BlendDesignMap space). + +2008-11-29 James Cloos <cloos@jhcloos.com> + + * src/type1/t1load.c (mm_axis_unmap): `blend_points' is FT_Fixed*, + whereas `design_points' is FT_Long*. Therefore, return blend rather + than design points. + +2008-11-27 Werner Lemberg <wl@gnu.org> + + * src/cff/cffparse.c (cff_parse_real): Handle more than nine + significant digits correctly. This fixes Savannah bug #24953. + +2008-11-25 Daniel Zimmermann <netzimme@aol.com> + + * src/base/ftstream.c (FT_Stream_ReadFields): Don't access stream + before the NULL check. From Savannah patch #6681. + +2008-11-24 Werner Lemberg <wl@gnu.org> + + Fixes from the gnuwin32 port. + + * src/base/ftlcdfil.c: s/EXPORT/EXPORT_DEF/. + + * src/base/ftotval.c: Include FT_OPENTYPE_VALIDATE_H. + + * src/psaux/psobjs.c (ps_table_add): Check `length'. + +2008-11-15 Werner Lemberg <wl@gnu.org> + + * src/truetype/ttinterp.c (tt_default_graphics_state): The default + value for `scan_type' is zero, as confirmed by Greg Hitchcock from + Microsoft. Problem reported by Michal Nowakowski + <miszka@limes.com.pl>. + +2008-11-12 Tor Andersson <tor.andersson@gmail.com> + + * src/cff/cffdrivr.c (cff_get_cmap_info): Initialize `format' field. + This fixes Savannah bug #24819. + +2008-11-08 Werner Lemberg <wl@gnu.org> + + * src/sfnt/sfobjs.c (sfnt_load_face): Remove #if 0/#endif guards + since OpenType version 1.5 has been released. + + * include/ttnameid.h (TT_NAME_ID_WWS_FAMILY, + TT_NAME_ID_WWS_SUBFAMILY): New macros for OpenType 1.5. + (TT_URC_COPTIC, TT_URC_VAI, TT_URC_NKO, TT_URC_BALINESE, + TT_URC_PHAGSPA, TT_URC_NON_PLANE_0, TT_URC_PHOENICIAN, + TT_URC_TAI_LE, TT_URC_NEW_TAI_LUE, TT_URC_BUGINESE, + TT_URC_GLAGOLITIC, TT_URC_YIJING, TT_URC_SYLOTI_NAGRI, + TT_URC_LINEAR_B, TT_URC_ANCIENT_GREEK_NUMBERS, TT_URC_UGARITIC, + TT_URC_OLD_PERSIAN, TT_URC_SHAVIAN, TT_URC_OSMANYA, + TT_URC_CYPRIOT_SYLLABARY, TT_URC_KHAROSHTHI, TT_URC_TAI_XUAN_JING, + TT_URC_CUNEIFORM, TT_URC_COUNTING_ROD_NUMERALS, TT_URC_SUNDANESE, + TT_URC_LEPCHA, TT_URC_OL_CHIKI, TT_URC_SAURASHTRA, TT_URC_KAYAH_LI, + TT_URC_REJANG, TT_URC_CHAM, TT_URC_ANCIENT_SYMBOLS, + TT_URC_PHAISTOS_DISC, TT_URC_OLD_ANATOLIAN, TT_URC_GAME_TILES): New + macros for OpenType 1.5. + +2008-11-08 Wenlin Institute <wenlin@wenlin.com> + + * src/base/ftobjs.c (ft_glyphslot_free_bitmap): Protect against + slot->internal == NULL. Reported by Graham Asher. + +2008-11-08 Werner Lemberg <wl@gnu.org> + + * src/sfnt/sfobjs.c (tt_face_get_name): Modified to return an error + code so that memory allocation problems can be distinguished from + missing table entries. Reported by Graham Asher. + (GET_NAME): New macro. + (sfnt_load_face): Use it. + +2008-11-05 Werner Lemberg <wl@gnu.org> + + * devel/ftoption.h, include/freetype/config/ftoption.h + [TT_CONFIG_OPTION_BYTECODE_INTERPRETER]: Undefine + TT_CONFIG_OPTION_UNPATENTED_HINTING. This fixes the return value of + `FT_Get_TrueType_Engine_Type' (and makes it work as documented). + Reported in bug #441638 of bugzilla.novell.com. + + * docs/CHANGES: Document it. + +2008-11-03 Werner Lemberg <wl@gnu.org> + + * src/type1/t1load.c (parse_subrs): Use an endless loop. There are + fonts (like HELVI.PFB version 003.001, used on OS/2) which define + some `subrs' elements more than once. Problem reported by Peter + Weilbacher <mozilla@weilbacher.org>. + +2008-10-15 Graham Asher <graham.asher@btinternet.com> + + * src/sfnt/ttpost.c (tt_post_default_names): Add `const'. + +2008-10-15 David Turner <david@freetype.org> + + * src/truetype/ttgxvar.c (TT_Set_MM_Blend): Disambiguate for + meddlesome compilers' warning against `for ( ...; ...; ...) ;'. + +2008-10-14 Werner Lemberg <wl@gnu.org> + + * src/cff/cffobjs.c (cff_face_init): Remove compiler warning. + Suggested by Bram Tassyns in Savannah patch #6651. + +2008-10-12 Graham Asher <graham.asher@btinternet.com> + + * src/sfnt/sfobjs.c (sfnt_load_face): Fix computation of + `underline_position'. + +2008-10-12 Werner Lemberg <wl@gnu.org> + + * docs/CHANGES: Updated. + +2008-10-09 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> + + Fix Savannah bug #24468. + + According to include/freetype/internal/ftobjs.h, the appropriate + type to interchange single character codepoint is FT_UInt32. It + should be distinguished from FT_UInt which can be 16bit integer. + + * src/sfnt/ttcmap.c (tt_cmap4_char_map_linear): Change the type + of the second argument `pcharcode' from FT_UInt* to FT_UInt32*. + (tt_cmap4_char_map_binary): Ditto. + (tt_cmap14_get_nondef_chars): Change the type of return value + from FT_UInt* to FT_UInt32*. + +2008-10-08 John Tytgat <John.Tytgat@esko.com> + + Fix Savannah bug #24485. + + * src/type1/t1load.c (parse_charstrings): Assure that we always have + a .notdef glyph. + +2008-10-05 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> + + * src/base/ftmac.c: Include FT_TRUETYPE_TAGS_H for multi build. + * builds/mac/ftmac.c: Ditto. + +2008-10-05 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> + + * include/freetype/tttags.h (TTAG_TYP1, TTAG_typ1): Fix definitions. + * src/base/ftobjs.c: Include FT_TRUETYPE_TAGS_H. + +2008-10-05 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> + + * src/sfnt/sfobjs.c (sfnt_open_font): Allow `typ1' version tag in + the beginning of sfnt container. + * src/sfnt/ttload.c (check_table_dir): Return + `SFNT_Err_Table_Missing' when sfnt table directory structure is + correct but essential tables for TrueType fonts (`head', `bhed' or + `SING') are missing. Other errors are returned by + SFNT_Err_Unknown_File_Format. + + * src/base/ftobjs.c (FT_Open_Face): When TrueType driver returns + `FT_Err_Table_Missing', try `open_face_PS_from_sfnt_stream'. It is + enabled only when old mac font support is configured. + +2008-10-04 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> + + * include/freetype/tttags.h (TTAG_CID, TTAG_FOND, TTAG_LWFN, + TTAG_POST, TTAG_sfnt, TTAG_TYP1, TTAG_typ1): New tags to simplify + the repeated calculations of these values in ftobjs.c and ftmac.c. + * src/base/ftobjs.c: Replace all FT_MAKE_TAG by new tags. + * src/base/ftmac.c: Ditto. + * builds/mac/ftmac.c: Ditto. + +2008-10-04 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> + + * src/base/ftobjs.c (ft_lookup_PS_in_sfnt_stream): Remove wrong + initialization of *is_sfnt_cid. + +2008-10-04 Werner Lemberg <wl@gnu.org> + + * src/base/ftobjs.c (open_face_PS_from_sfnt_stream): Remove compiler + warnings. + +2008-10-04 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> + + * src/base/ftobjs.c (ft_lookup_PS_in_sfnt): Replaced by... + (ft_lookup_PS_in_sfnt_stream): This. + (open_face_PS_from_sfnt_stream): New function. It checks whether + the stream is sfnt-wrapped Type1 PS font or sfnt-wrapped CID-keyed + font, then try to open a face for given face_index. + (Mac_Read_sfnt_Resource): Replace the combination of + `ft_lookup_PS_in_sfnt' and `open_face_from_buffer' by + `open_face_PS_from_sfnt_stream'. + * src/base/ftmac.c (FT_New_Face_From_SFNT): Ditto. + * builds/mac/ftmac.c (FT_New_Face_From_SFNT): Ditto. + * src/base/ftbase.h: Remove `ft_lookup_PS_in_sfnt' and add + `open_face_PS_from_sfnt_stream'. + +2008-10-03 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> + + * src/base/ftobjs.c (ft_lookup_PS_in_sfnt): Set *is_sfnt_cid to + FALSE if neither `CID ' nor `TYP1' is found in the sfnt container. + +2008-10-03 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> + + * include/freetype/config/ftconfig.h: Define FT_MACINTOSH when SC or + MrC compiler of MPW is used. These compilers do not define the + macro __APPLE__ by themselves. + * builds/unix/ftconfig.in: Ditto. + * builds/vms/ftconfig.h: Ditto. + * src/base/ftbase.c: Use FT_MACINTOSH instead of __APPLE__, to + include ftmac.c if FreeType 2 is built by MPW. + * src/base/ftobjs.c: Use FT_MACINTOSH instead of __APPLE__, to + enable shared functions for ftmac.c if FreeType 2 is built by MPW. + + * builds/mac/ftmac.c: Include ftbase.h. + (memory_stream_close): Removed. + (new_memory_stream): Ditto. + (open_face_from_buffer): Removed. Use the implementation in + ftobjs.c. + (ft_lookup_PS_in_sfnt): Ditto. + + * builds/mac/FreeType.m68k_far.make.txt: Build ftmac.c as an + included part of ftbase.c, to share the functions in ftobjs.c. The + rule compiling ftmac.c separately is removed and the rule copying + ftbase.c from src/base/ftbase.c to builds/mac/ftbase.c is added. + * builds/mac/FreeType.m68k_cfm.make.txt: Ditto. + * builds/mac/FreeType.ppc_classic.make.txt: Ditto. + * builds/mac/FreeType.ppc_carbon.make.txt: Ditto. + +2008-10-02 Bram Tassyns <bramt@enfocus.be> + + * src/cff/cffgload.c (cff_slot_load): Map CID 0 to GID 0. This + fixes Savannah bug #24430. + +2008-10-02 Werner Lemberg <wl@gnu.org> + + * builds/freetype.mk (BASE_H): Rename to... + (INTERNAL_H): This. + (FREETYPE_H): Updated. + * src/base/rules.mk: (BASE_OBJ_S, OBJ_DIR/%.$O): Add BASE_H. + * src/bdf/rules.mk (BDF_DRV_H): Add bdferror.h. + * src/cache/rules.mk (CACHE_DRV_H): Add ftccache.h and ftcsbits.h. + * src/pcf/rules.mk (PCF_DRV_H): Add pcfread.h. + * src/raster/rules.mk (RASTER_DRV_H): Add ftmisc.h. + * src/type42/rules.mk (T42_DRV_H): Add t42types.h. + +2008-10-02 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> + + * src/base/ftbase.h: New file to declare the private utility + functions shared by the sources of base modules. Currently, + `ft_lookup_PS_in_sfnt' and `open_face_from_buffer' are declared to + share between ftobjs.c and ftmac.c. + + * src/base/rule.mk: Add ftbase.h. + + * src/base/ftobjs.c: Include ftbase.h. + (memory_stream_close): Build on any platform when old MacOS font + support is enabled. + (new_memory_stream): Ditto. + (open_face_from_buffer): Build on any platform when old MacOS font + support is enabled. The counting of the face in a font file is + slightly different between Carbon-dependent parser and Carbon-free + parser. They are merged with the platform-specific conditional. + (ft_lookup_PS_in_sfnt): Ditto. + + * src/base/ftmac.c: Include ftbase.h. + (memory_stream_close): Removed. + (new_memory_stream): Ditto. + (open_face_from_buffer): Removed. Use the implementation in + ftobjs.c. + (ft_lookup_PS_in_sfnt): Ditto. + +2008-10-02 Werner Lemberg <wl@gnu.org> + + * src/sfnt/sfobjs.c (sfnt_load_face): `psnames_error' is only needed + if TT_CONFIG_OPTION_POSTSCRIPT_NAMES is defined. + +2008-10-01 Werner Lemberg <wl@gnu.org> + + * src/truetype/ttobjs.c (tt_face_done), src/cff/cffobjs.c + (cff_face_done), src/pfr/pfrobjs.c (pfr_face_done), + src/pcf/pcfdrivr.c (PCF_Face_Done), src/cid/cidobjs.c + (cid_face_done), src/bdf/bdfdrivr. (BDF_Face_Done), + src/sfnt/sfobjs.c (sfnt_face_done): Protect against face == 0. + Reported by Graham Asher. + +2008-09-30 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> + + * src/base/rules.mk: Add conditional source to BASE_SRC, for `make + multi' on Mac OS X. If the macro $(ftmac_c) is defined, + $(BASE_DIR)/$(ftmac_c) is added to BASE_SRC. In a normal build, the + lack of ftmac.c in BASE_SRC is not serious because ftbase.c includes + ftmac.c. + * builds/unix/unix-def.in: Add a macro definition of $(ftmac_c). + * builds/unix/configure.raw: Add procedure to set up appropriate + value of $(ftmac_c) with the consideration of the availability of + Carbon framework. + +2008-09-30 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> + + * src/base/Jamfile: Add target for multi build by jam on Mac OS X. + * src/base/ftobjs.c (FT_New_Face): Fix the condition to include this + function for MPW building. It is synchronized the condition to + include ftmac.c source into ftbase.c. + +2008-09-22 Werner Lemberg <wl@gnu.org> + + * src/cff/cffgload.c (CFF_Operator, cff_argument_counts, + cff_decoder_parse_charstrings): Handle (invalid) + `callothersubr' and `pop' instructions. + +2008-09-22 John Tytgat <John.Tytgat@esko.com> + + Fix Savannah bug #24307. + + * include/freetype/internal/t1types.h (CID_FaceRec), + src/type42/t42types.h (T42_FaceRec): Comment out `afm_data'. + +2008-09-21 Werner Lemberg <wl@gnu.org> + + * src/smooth/ftgrays.c (gray_raster_render): Don't dereference + `target_map' if FT_RASTER_FLAG_DIRECT is set. Problem reported by + Stephan T. Lavavej <stl@nuwen.net>. + +2008-09-21 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> + + * src/otvalid/Jamfile: Add missing target `otvmath' for multi build + by jam. + * src/sfnt/Jamfile: Add missing target `ttmtx' for multi build by + jam. + +2008-09-20 Werner Lemberg <wl@gnu.org> + + * src/smooth/ftgrays.c (gray_find_cell): Fix threshold. The values + passed to this function are already `normalized'. Problem reported + by Stephan T. Lavavej <stl@nuwen.net>. + + * docs/CHANGES: Document it. + +2008-09-20 Werner Lemberg <wl@gnu.org> + + * src/base/ftoutln.c: Include FT_INTERNAL_DEBUG_H. + (FT_Outline_Decompose): Decorate with tracing messages. + + * src/smooth/ftgrays.c [DEBUG_GRAYS]: Replace with + FT_DEBUG_LEVEL_TRACE. + [_STANDALONE_ && FT_DEBUG_LEVEL_TRACE]: Include stdio.h and + stdarg.h. + + (FT_TRACE) [_STANDALONE_]: Remove. + (FT_Message) [_STANDALONE_ && FT_DEBUG_LEVEL_TRACE]: New function. + (FT_TRACE5, FT_TRACE7) [_STANDALONE_]: New macros. + (FT_ERROR) [_STANDALONE_]: Updated. + + (gray_hline) [FT_DEBUG_LEVEL_TRACE]: Fix condition. + Use FT_TRACE7. + (gray_dump_cells): Make it `static void'. + (gray_convert_glyph): Use FT_TRACE7. + + (FT_Outline_Decompose) [_STANDALONE_]: Synchronize with version in + ftoutln.c. + + * src/base/ftadvanc.c (FT_Get_Advance, FT_Get_Advances): Use + FT_ERROR_BASE. + + * docs/formats.txt: Updated. + +2008-09-19 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> + + * src/base/ftmac.c: Import sfnt-wrapped Type1 and sfnt-wrapped + CID-keyed font support. + * builds/mac/ftmac.c: Ditto. + +2008-09-19 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> + + * src/base/ftobjs.c (Mac_Read_sfnt_Resource): Fix double free bug in + sfnt-wrapped Type1 and sfnt-wrapped CID-keyed font support code. + `open_face_from_buffer' frees the passed buffer if it cannot open a + face from the buffer, so the caller must not free it. + +2008-09-19 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> + + * src/base/ftobjs.c (Mac_Read_sfnt_Resource): Add initial support + for sfnt-wrapped Type1 and sfnt-wrapped CID-keyed font. + (ft_lookup_PS_in_sfnt): New function to look up `TYP1' or `CID ' + table in sfnt table directory. It is used before loading TrueType + font driver. + + * docs/CHANGES: Add note about the current status of sfnt-wrapped + Type1 and sfnt-wrapped CID-keyed font support. + +2008-09-18 Werner Lemberg <wl@gnu.org> + + * src/base/ftsystem.c (FT_Done_Memory): Use ft_sfree directly for + orthogonality (ft_free and ft_sfree could belong to different memory + pools). This fixes Savannah bug #24297. + +2008-09-18 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> + + * src/cff/cffobjs.c (cff_face_init): Use TTAG_OTTO defined + in ttags.h instead of numerical value 0x4F54544FL. + +2008-09-16 Werner Lemberg <wl@gnu.org> + + * src/cff/cffgload.h, src/cff/cffgload.c + (cff_decoder_set_width_only): Eliminate function call. + +2008-09-15 George Williams <gww@silcom.com> + + Fix Savannah bug #24179, reported by Bram Tassyns. + + * src/type1/t1load.c (mm_axis_unmap, T1_Get_MM_Var): Fix computation + of default values. + +2008-09-15 Werner Lemberg <wl@gnu.org> + + * src/tools/glnames.py (main): Surround `ft_get_adobe_glyph_index' + and `ft_adobe_glyph_list' with FT_CONFIG_OPTION_ADOBE_GLYPH_LIST to + prevent unconditional definition. This fixes Savannah bug #24241. + + * src/psnames/pstables.h: Regenerated. + +2008-09-13 Werner Lemberg <wl@gnu.org> + + * autogen.sh, builds/unix/configure.raw, + include/freetype/config/ftconfig.h, builds/unix/ftconfig.in: Minor + beautifying. + + * include/freetype/ftadvanc.h, include/freetype/ftgasp.h, + include/freetype/ftlcdfil.h: Protect against FreeType 1. + Some other minor fixes. + + * devel/ftoption.h: Synchronize with + include/freetype/config/ftoption.h. + +2008-09-11 Werner Lemberg <wl@gnu.org> + + * src/base/ftbase.c: Include ftadvanc.c. + +2008-09-11 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> + + * builds/unix/ftconfig.in: Duplicate the cpp computation of + FT_SIZEOF_{INT|LONG} from include/freetype/config/ftconfig.h. + (FT_USE_AUTOCONF_SIZEOF_TYPES): New macro. If defined, the cpp + computation is disabled and the statically configured sizes are + used. This fixes Savannah bug #21250. + + * builds/unix/configure.raw: Add the checks to compare the cpp + computation results of the bit length of int and long versus the + sizes detected by running `configure'. If the results are + different, FT_USE_AUTOCONF_SIZEOF_TYPES is defined to prioritize the + results. + New option --{enable|disable}-biarch-config is added to define or + undefine FT_USE_AUTOCONF_SIZEOF_TYPES manually. + +2008-09-05 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> + + * builds/unix/configure.raw: Clear FT2_EXTRA_LIBS when Carbon or + ApplicationService framework is missing. Although this value is not + used in building of FreeType2, it is written in `freetype2.pc' and + `freetype-config'. + +2008-09-01 david turner <david@freetype.org> + + * src/cache/ftccmap.c (FTC_CMapCache_Lookup): Accept a negative cmap + index to mean `use default cached FT_Face's charmap'. This fixes + Savannah bug #22625. + * include/freetype/ftcache.h: Document it. + + + Make FT_MulFix an inlined function. This is done to speed up + FreeType a little (on x86 3% when loading+hinting, 10% when + rendering, ARM savings are more important though). Disable this by + undefining FT_CONFIG_OPTION_INLINE_MULFIX. + + Use of assembler code can now be controlled with + FT_CONFIG_OPTION_NO_ASSEMBLER. + + * include/freetype/config/ftconfig.h, builds/unix/ftconfig.in + [!FT_CONFIG_OPTION_NO_ASSEMBLER] (FT_MulFix_arm): New assembler + implementation. + [!FT_CONFIG_OPTION_NO_ASSEMBLER] (FT_MulFix_i386): Assembler + implementation taken from `ftcalc.c'. + [!FT_CONFIG_OPTION_NO_ASSEMBLER] (FT_MULFIX_ASSEMBLER): New macro + which is defined to the platform-specific assembler implementation + of FT_MulFix. + [FT_CONFIG_OPTION_INLINE_MULFIX && FT_MULFIX_ASSEMBLER] + (FT_MULFIX_INLINED): New macro. + + * include/freetype/config/ftoption.h (FT_CONFIG_OPTION_NO_ASSEMBLER, + FT_CONFIG_OPTION_INLINE_MULFIX): New macros. + + * include/freetype/freetype.h: Updated to handle FT_MULFIX_INLINED. + + * src/base/ftcalc.c: Updated to use FT_MULFIX_ASSEMBLER and + FT_MULFIX_INLINED. + + + Add a new header named FT_ADVANCES_H declaring some new APIs to + extract the advances of one or more glyphs without necessarily + loading their outlines. Also provide `fast loaders' for the + TrueType, Type1, and CFF font drivers (more to come later). + + * src/base/ftadvanc.c, include/freetype/ftadvanc.h: New files. + + * include/freetype/config/ftheader.h (FT_ADVANCES_H): New macro. + * include/freetype/freetype.h (FT_LOAD_ADVANCE_ONLY): New macro. + + * include/freetype/internal/ftdriver.h (FT_Face_GetAdvancesFunc): + `flags' and `advances' are now of type `FT_UInt' and `FT_Fixed', + respectively. + + * src/base/Jamfile (_sources), src/base/rules.mk (BASE_SRC): Add + ftadvanc.c. + + * src/cff/cffdrivr.c (cff_get_advances): New function. + (cff_driver_class): Register it. + + * src/cff/cffgload.c (cff_decoder_set_width_only): New function. + (cff_decoder_parse_charstrings): Handle `width_only'. + (cff_slot_load): Handle FT_LOAD_ADVANCE_ONLY. + + * src/cff/cffgload.h (cff_decoder): New element `width_only'. + (cff_decoder_set_width_only): New declaration. + + * src/truetype/ttdriver.c (tt_get_advances): New function. + (tt_driver_class): Register it. + + * src/truetype/ttgload.c (Get_HMetrics, Get_VMetrics): Renamed to... + (TT_Get_HMetrics, TT_Get_VMetrics): This. + Update callers. + * src/truetype/ttgload.h: Declare them. + + * src/type1/t1gload.h, src/type1/t1gload.c (T1_Get_Advances): New + function. + * src/type1/t1driver.c (t1_driver_class): Register T1_Get_Advances. + + + Add checks for minimum version of the `autotools' stuff. + + * autogen.sh: Implement it. + (get_major_version, get_minor_version, get_patch_version, + compare_to_minimum_version, check_tool_version): New auxiliary + functions. + + * README.CVS: Document it. + +2008-08-29 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> + + * src/sfnt/sfobjs.c (sfnt_open_font): Use TTAG_OTTO defined in + ttags.h instead of FT_MAKE_TAG( 'O', 'T', 'T', 'O' ). + +2008-08-28 Werner Lemberg <wl@gnu.org> + + * src/type1/t1load.c (parse_encoding): Protect against infinite + loop. This fixes Savannah bug #24150 (where a patch has been posted + too). + +2008-08-23 Werner Lemberg <wl@gnu.org> + + * src/type/t1afm.c (compare_kern_pairs), src/pxaux/afmparse.c + (afm_compare_kern_pairs): Fix comparison. This fixes Savannah bug + #24119. + +2008-08-19 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> + + * src/base/ftobjs.c (FT_Stream_New): Initialize *astream always, + even if passed library or arguments are invalid. This fixes a bug + that an uninitialized stream is freed when an invalid library handle + is passed. Originally proposed by Mike Fabian, 2008/08/18 on + freetype-devel. + (FT_Open_Face): Ditto (stream). + (load_face_in_embedded_rfork): Ditto (stream2). + +2008-08-18 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> + + * src/base/ftmac.c: Add a fallback to guess the availability of the + `ResourceIndex' type. It is used when built without configure + (e.g., a build with Jam). + * builds/mac/ftmac.c: Ditto. + * builds/unix/configure.raw: Set HAVE_TYPE_RESOURCE_INDEX to 1 or 0 + explicitly, even if `ResourceIndex' is unavailable. + +2008-08-18 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> + + * builds/unix/configure.raw: In checking of Mac OS X features, + all-in-one header file `Carbon.h' is replaced by the minimum + header file `CoreServices.h', similar to current src/base/ftmac.c. + +2008-08-18 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> + + * src/sfnt/ttcmap.c (tt_cmap2_validate): Skip the validation of + sub-header when its code_count is 0. Many Japanese Dynalab fonts + include such an empty sub-header (code_count == 0, first_code == 0 + delta == 0, but offset != 0) as the second sub-header in SJIS cmap. + +2008-08-04 Werner Lemberg <wl@gnu.org> + + * src/type1/t1tokens.h: Handle `ForceBold' keyword. This fixes + Savannah bug #23995. + + * src/cid/cidload.c (parse_expansion_factor): New callback function. + (cid_field_records): Use it for `ExpansionFactor'. + * src/cod/cidtoken.h: Handle `ForceBold' keyword. + Don't handle `ExpansionFactor'. + +2008-08-04 Bram Tassyns <bramt@enfocus.be> + + * src/cff/cffparse.c (cff_parse_fixed_scaled): Fix thinko which + resulted in incorrect scaling. This fixes Savannah bug #23973. + +2008-08-04 Werner Lemberg <wl@gnu.org> + + Be more tolerant w.r.t. invalid entries in SFNT table directory. + + * src/sfnt/ttload.c (check_table_dir): Ignore invalid entries and + adjust table count. + Add more trace messages. + (tt_face_load_font_dir): Updated. + +2008-07-30 Werner Lemberg <wl@gnu.org> + + * src/cff/cffgload.c (cff_decoder_parse_charstrings): No longer + assume that the first argument on the stack is the bottom-most + element. Two reasons: + + o According to people from Adobe it is missing in the Type 2 + specification that pushing of additional, superfluous arguments + on the stack is prohibited. + + o Acroread in general handles fonts differently, namely by popping + the number of arguments needed for a particular operand (as a PS + interpreter would do). In case of buggy fonts this causes a + different interpretation which of the elements on the stack are + superfluous and which not. + + Since there are CFF subfonts (embedded in PDFs) which rely on + Acroread's behaviour, FreeType now does the same. + +2008-07-27 Werner Lemberg <wl@gnu.org> + + Add extra mappings for `Tcommaaccent' and `tcommaaccent'. This + fixes Savannah bug #23940. + + * src/psnames/psmodule.c (WGL_EXTRA_LIST_SIZE): Rename to... + (EXTRA_GLYPH_LIST_SIZE): This. + Increase by 2. + (ft_wgl_extra_unicodes): Rename to... + (ft_extra_glyph_unicodes): This. + Add two code values. + (ft_wgl_extra_glyph_names): Rename to... + (ft_extra_glyph_names): This. + Add two glyphs. + (ft_wgl_extra_glyph_name_offsets): Rename to... + (ft_extra_glyph_name_offsets): This. + Add two offsets. + + (ps_check_wgl_name, ps_check_wgl_unicode): Rename to... + (ps_check_extra_glyph_name, ps_check_extra_glyph_unicode): This. + Updated. + (ps_unicodes_init): Updated. + +2008-07-26 Werner Lemberg <wl@gnu.org> + + * src/cff/cffgload.c (cff_decoder_prepare, + cff_decoder_parse_charstrings): Improve debug output. + +2008-07-22 Martin McBride <mmcbride@emtex.com> + + * src/sfnt/ttcmap.c (tt_cmap4_validate, tt_cmap4_char_map_linear, + tt_cmap4_char_map_binary): Handle fonts which treat the last segment + specially. According to the specification, such fonts would be + invalid but acroread accepts them. + +2008-07-16 Jon Foster <Jon.Foster@cabot.co.uk> + + * src/pfr/pfrdrivr.c (pfr_get_advance): Fix off-by-one error. + + * src/base/ftcalc.c (FT_MulFix): Fix portability issue. + + * src/sfnt/ttpost.c (MAC_NAME) [!FT_CONFIG_OPTION_POSTSCRIPT_NAMES]: + Fix compiler warning. + +2008-07-16 Werner Lemberg <wl@gnu.org> + + Handle CID-keyed fonts wrapped in an SFNT (with cmaps) correctly. + + * src/cff/cffload.c (cff_font_load): Pass `pure_cff'. + Invert sids table only if `pure_cff' is set. + * src/cff/cffload.h: Udpated. + + * src/cff/cffobjs.c (cff_face_init): Updated. + Set FT_FACE_FLAG_CID_KEYED only if pure_cff is set. + + * docs/CHANGES: Updated. + +2008-07-09 Werner Lemberg <wl@gnu.org> + + * src/truetype/ttpload.c (tt_face_load_loca): Handle buggy fonts + where num_locations < num_glyphs. Problem reported by Ding Li. + +2008-07-05 Werner Lemberg <wl@gnu.org> + + Since FreeType uses `$(value ...)', we now need GNU make 3.80 or + newer. This fixes Savannah bug #23648. + + * configure: zsh doesn't like ${1+"$@"}. + Update needed GNU make version. + * builds/toplevel.mk: Check for `$(eval ...)'. + * docs/INSTALL.GNU, docs/INSTALL.CROSS, docs/INSTALL.UNIX: Document + it. + +2008-07-04 Werner Lemberg <wl@gnu.org> + + * src/raster/ftraster.c (Draw_Sweep): If span is smaller than one + pixel, only check for dropouts if neither start nor end point lies + on a pixel center. This fixes Savannah bug #23762. + +2008-06-29 Werner Lemberg <wl@gnu.org> + + * Version 2.3.7 released. + ========================= + + + Tag sources with `VER-2-3-7'. + + * docs/CHANGES, docs/VERSION.DLL: Update documentation and bump + version number to 2.3.7. + + * README, Jamfile (RefDoc), builds/win32/visualc/index.html, + builds/win32/visualc/freetype.dsp, + builds/win32/visualc/freetype.vcproj, + builds/win32/visualce/index.html, + builds/win32/visualce/freetype.dsp, + builds/win32/visualce/freetype.vcproj: s/2.3.6/2.3.7/, s/236/237/. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 7. + + * builds/unix/configure.raw (version_info): Set to 9:18:3. + + * docs/release: Updated. + +2008-06-28 Werner Lemberg <wl@gnu.org> + + * src/ftglyph.c (FT_Matrix_Multiply, FT_Matrix_Invert): Move to... + * src/ftcalc.c: Here. This fixes Savannah bug #23729. + +2008-06-27 Werner Lemberg <wl@gnu.org> + + * src/raster/ftraster.c (Vertical_Sweep_Drop, Horizontal_Sweep_Drop, + Horizontal_Gray_Sweep_Drop): Test for intersections which + degenerate to a single point can be ignored; this has been confirmed + by Greg Hitchcock from Microsoft. (This was commented out code.) + +2008-06-26 Werner Lemberg <wl@gnu.org> + + Improve navigation in API reference. + + * src/tools/docmaker/tohtml.py (html_header_3): Renamed to... + (html_header_6): This. + (html_header_3, html_header_3i, html_header_4, html_header_5, + html_header_5t): New strings. + (toc_footer_start, toc_footer_end): New strings. + (HtmlFormatter::html_header): Updated. + (HtmlFormatter::html_index_header, HtmlFormatter::html_toc_header): + New strings. + (HtmlFormatter::index_enter): Use `html_index_header'. + (HtmlFormatter::index_exit): Print `html_footer'. + (HtmlFormatter::toc_enter): Use `html_toc_header'. + (HtmlFormatter::toc_exit): Print proper footer. + + Convert ~ to non-breakable space. + + * src/tools/docmaker/tohtml.py (make_html_para): Implement it. + Update header files accordingly. + +2008-06-24 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> + + * builds/unix/configure.raw: Check type `ResourceIndex' explicitly + and define HAVE_TYPE_RESOURCE_INDEX if it is defined. Mac OS X 10.5 + bundles 10.4u SDK with MAC_OS_X_VERSION_10_5 macro but without + ResourceIndex type definition. The macro does not inform the type + availability. + * src/base/ftmac.c: More parentheses are inserted to clarify the + conditionals to disable legacy APIs in `10.5 and later' cases. If + HAVE_TYPE_RESOURCE_INDEX is not defined, ResourceIndex is defined. + +2008-06-24 Werner Lemberg <wl@gnu.org> + + * src/truetype/ttinterp.c (Ins_SCANTYPE): Don't check rendering + mode. + + * src/raster/ftraster.c (Render_Glyph, Render_Gray_Glyph, + Draw_Sweep): No-dropout mode is value 2, not value 0. + (Draw_Sweep): Really skip dropout handling for no-dropout mode. + +2008-06-24 Werner Lemberg <wl@gnu.org> + + * src/psaux/psobjs.c (t1_builder_close_contour): Don't add contour + if it consists of one point only. Based on a patch from Savannah + bug #23683 (from John Tytgat). + +2008-06-22 Werner Lemberg <wl@gnu.org> + + * src/truetype/ttgload.c (TT_Load_Glyph): Protect bytecode stuff + with IS_HINTED. + + * docs/CHANGES: Updated. + +2008-06-22 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp> + + * builds/unix/configure.raw: If CFLAGS has `-isysroot XXX' option + but LDFLAGS does not, import it to LDFLAGS. The option is used to + specify non-default SDK on Mac OS X (e.g., universal binary SDK for + Mac OS X 10.4 on PowerPC platform). Although Apple TechNote 2137 + recommends to add the option only to CFLAGS, LDFLAGS should include + it because libfreetype.la is built with -no-undefined. This fixes a + bug reported by Ryan Schmidt in MacPorts, + http://trac.macports.org/ticket/15331. + +2008-06-21 Werner Lemberg <wl@gnu.org> + + Enable access to the various dropout rules of the B&W rasterizer. + Pass dropout rules from the TT bytecode interpreter to the + rasterizer. + + * include/freetype/ftimage.h (FT_OUTLINE_SMART_DROPOUTS, + FT_OUTLINE_EXCLUDE_STUBS): New flags for for FT_Outline. + + * src/raster/ftraster.c (Vertical_Sweep_Drop, Horizontal_Sweep_Drop, + Horizontal_Gray_Sweep_Drop): Use same mode numbers as given in the + OpenType specification. + Fix mode 4 computation. + (Render_Glyph, Render_Gray_Glyph): Handle new outline flags. + + * src/truetype/ttgload.c (TT_Load_Glyph) Convert scan conversion + mode to FT_OUTLINE_XXX flags. + + * src/truetype/ttinterp.c (Ins_SCANCTRL): Enable ppem check. + +2008-06-19 Werner Lemberg <wl@gnu.org> + + * src/cff/cffobjs.c (cff_face_init): Compute final + `dict->units_per_em' value before assigning it to + `cffface->units_per_EM'. Otherwise, CFFs without subfonts are + scaled incorrectly if the font matrix is non-standard. This fixes + Savannah bug #23630. + + * docs/CHANGES: Updated. + +2008-06-19 Werner Lemberg <wl@gnu.org> + + * src/type/t1objs.c (T1_Face_Init): Slightly improve algorithm fix + from 2008-06-19. + +2008-06-18 Werner Lemberg <wl@gnu.org> + + * src/type/t1objs.c (T1_Face_Init): Fix change from 2008-03-21. + Reported by Peter Weilbacher <mozilla@weilbacher.org>. + + * docs/CHANGES: Updated. + +2008-06-15 George Williams <gww@silcom.com> + + * src/otvalid/otvgpos.c (otv_MarkBasePos_validate): Set + `valid->extra2' to 1. This is undocumented in the OpenType 1.5 + specification. + +2008-06-15 Werner Lemberg <wl@gnu.org> + + * src/base/ftcalc.c (FT_MulFix) <asm>: Protect registers correctly + from clobbering. Patch from Savannah bug report #23556. + + * docs/CHANGES: Document it. + +2008-06-10 Werner Lemberg <wl@gnu.org> + + * autogen.sh: Add option `--install' to libtoolize. + 2008-06-10 Werner Lemberg <wl@gnu.org> * Version 2.3.6 released. @@ -159,7 +1746,7 @@ * docs/CHANGES: Updated. -2008-05-18 David Turner <david@freetype.org> +2008-05-18 David Turner <david@freetype.org> * src/psnames/psmodule.c (ft_wgl_extra_unicodes, ft_wgl_extra_glyph_names, ft_wgl_extra_glyph_name_offsets, @@ -343,7 +1930,7 @@ 2008-03-13 Derek Clegg <dclegg@apple.com> - * src/truetype/ttgxvar.c (TT_Get_MM_Var): Fix named style loop. + * src/truetype/ttgxvar.c (TT_Get_MM_Var): Fix named style loop. Patch from Savannah bug #22541. 2008-03-03 Masatoshi Kimura <VYV03354@nifty.ne.jp> @@ -599,13 +2186,14 @@ * doc/INSTALL.MAC: Comment on MACOSX_DEPLOYMENT_TARGET. * include/freetype/ftmac.h: Deprecate FT_New_Face_From_FOND and - FT_GetFilePath_From_Mac_ATS_Name. Since Mac OS X 10.5, calling + FT_GetFilePath_From_Mac_ATS_Name. Since Mac OS X 10.5, calling Carbon functions from a forked process is classified as unsafe - by Apple. All Carbon-dependent functions should be deprecated. + by Apple. All Carbon-dependent functions should be deprecated. - * src/base/ftmac.c: Use essential header files <Carbon/Carbon.h> - and <ApplicationServices/ApplicationServices.h> instead of - all-in-one header file <CoreServices/CoreServices.h>. + * src/base/ftmac.c: Use essential header files + <CoreServices/CoreServices.h> and + <ApplicationServices/ApplicationServices.h> instead of + all-in-one header file <Carbon/Carbon.h>. Include <sys/syslimits.h> and replace HFS_MAXPATHLEN by Apple genuine macro PATH_MAX. @@ -645,7 +2233,7 @@ 2007-10-21 Werner Lemberg <wl@gnu.org> * src/sfnt/sfobjs.c (sfnt_load_face): Support bit 9 and prepare - support for bit 8 of the `fsSelection' field in the `OS/2' table. + support for bit 8 of the `fsSelection' field in the `OS/2' table. MS is already using this; hopefully, this becomes part of OpenType 1.5. Prepare also support for `name' IDs 21 (WWS_FAMILY) and 22 @@ -1479,7 +3067,7 @@ * src/base/ftglyph.c (FT_Glyph_Copy): Always set second argument to zero in case of error. This fixes Savannah bug #19689. -2007-04-25 Boris Letocha <b.letocha@cz.gmc.net> +2007-04-25 Boris Letocha <b.letocha@cz.gmc.net> * src/truetype/ttobjs.c: Fix a typo that created a speed regression in the TrueType bytecode loader. @@ -2278,7 +3866,7 @@ * src/base/ftmac.c: Specialized for Mac OS X only. * builds/unix/ftconfig.in: Fixed for ppc64 missing Carbon framework. - * builds/unix/configure.raw: Ditto. When explicit switches for + * builds/unix/configure.raw: Ditto. When explicit switches for FSSpec/FSRef/QuickDraw/ATS availability are given to configure, builds/mac/ftmac.c is used instead of default src/base/ftmac.c. @@ -2898,7 +4486,7 @@ buggy by design. Always return -1. - Improvements to native TrueType hinting. This is a first try, + Improvements to native TrueType hinting. This is a first try, controlled by the FIX_BYTECODE macro in src/truetype/ttinterp.c. * include/freetype/internal/ftgloadr.h (FT_GlyphLoadRec): Add member @@ -2946,7 +4534,7 @@ Jens: http://lists.nongnu.org/archive/html/freetype-devel/2006-08/msg00004.htm. - * src/otvalid/otvmod.c: Replace `ft_validator_run' by `ft_setjmp'. + * src/otvalid/otvmod.c: Replace `ft_validator_run' by `ft_setjmp'. It reverts the change introduced on 2005-08-20. * src/gxvalid/gxvmod.c: Ditto. @@ -2965,7 +4553,7 @@ * src/cid/cidtoken.h: Adjust invocations of T1_FIELD_XXX. - * src/psaux/psobjs.c: Add macro FT_COMPONENT for tracing. + * src/psaux/psobjs.c: Add macro FT_COMPONENT for tracing. (ps_parser_to_token): Report a PostScript key as T1_TOKEN_TYPE_KEY, not T1_TOKEN_TYPE_ANY. (ps_parser_load_field): Make sure a token that should be a string or @@ -3048,8 +4636,8 @@ want to skip the array. * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Add support - for (partially commented out) othersubrs 19-25, 27, and 28. - (t1_decoder_init): Initialize new fields `face' and `buildchar'. + for (partially commented out) othersubrs 19-25, 27, and 28. + (t1_decoder_init): Initialize new fields `face' and `buildchar'. (t1_decoder_done): Release new field `buildchar'. * src/type1/t1load.c (parse_buildchar, parse_private): New @@ -3352,7 +4940,7 @@ ---------------------------------------------------------------------------- -Copyright 2006, 2007, 2008 by +Copyright 2006, 2007, 2008, 2009 by David Turner, Robert Wilhelm, and Werner Lemberg. This file is part of the FreeType project, and may only be used, modified, diff --git a/src/3rdparty/freetype/ChangeLog.21 b/src/3rdparty/freetype/ChangeLog.21 index 3a1bcf0..d6371d1 100644 --- a/src/3rdparty/freetype/ChangeLog.21 +++ b/src/3rdparty/freetype/ChangeLog.21 @@ -922,7 +922,7 @@ (tt_driver_class): Updated. * src/truetype/ttgload.c (TT_Get_Metrics): Renamed to... - (tt_face_get_metrics): This. Provide version for FT_OPTIMIZE_MEMORY. + (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 @@ -1221,7 +1221,7 @@ 2004-11-16 Owen Taylor <otaylor@redhat.com> * builds/unix/freetype-config.in: Suppress -L$libdir for - /usr/lib64 as well as /usr/lib. (Reported by Dan Winship - + /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 <wl@gnu.org> @@ -3554,7 +3554,7 @@ - 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 + - better performance in certain areas. Further optimizations to come shortly anyway... - the FTC_CMapCache_Lookup function has changed its signature, @@ -9423,7 +9423,7 @@ ---------------------------------------------------------------------------- -Copyright 2002, 2003, 2004, 2005, 2007 by +Copyright 2002, 2003, 2004, 2005, 2007, 2008 by David Turner, Robert Wilhelm, and Werner Lemberg. This file is part of the FreeType project, and may only be used, modified, diff --git a/src/3rdparty/freetype/ChangeLog.22 b/src/3rdparty/freetype/ChangeLog.22 index c042f21..4144288 100644 --- a/src/3rdparty/freetype/ChangeLog.22 +++ b/src/3rdparty/freetype/ChangeLog.22 @@ -199,7 +199,7 @@ * src/base/ftmac.c (read_lwfn): Catch integer overflow. * src/base/ftrfork.c (raccess_guess_darwin_hfsplus): Ditto. * src/base/ftutil.c: Remove special code for FT_STRICT_ALIASING. - (ft_mem_alloc. ft_mem_realloc, ft_mem_qrealloc): Rewrite. + (ft_mem_alloc, ft_mem_realloc, ft_mem_qrealloc): Rewrite. * include/freetype/ftstream.h (FT_FRAME_ENTER, FT_FRAME_EXIT, diff --git a/src/3rdparty/freetype/Jamfile b/src/3rdparty/freetype/Jamfile index eeaad3f..e5273d8 100644 --- a/src/3rdparty/freetype/Jamfile +++ b/src/3rdparty/freetype/Jamfile @@ -1,6 +1,6 @@ # FreeType 2 top Jamfile. # -# Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by +# Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, @@ -194,7 +194,7 @@ rule RefDoc actions RefDoc { - python $(FT2_SRC)/tools/docmaker/docmaker.py --prefix=ft2 --title=FreeType-2.3.6 --output=$(DOC_DIR) $(FT2_INCLUDE)/freetype/*.h $(FT2_INCLUDE)/freetype/config/*.h + python $(FT2_SRC)/tools/docmaker/docmaker.py --prefix=ft2 --title=FreeType-2.3.9 --output=$(DOC_DIR) $(FT2_INCLUDE)/freetype/*.h $(FT2_INCLUDE)/freetype/config/*.h } RefDoc refdoc ; diff --git a/src/3rdparty/freetype/README b/src/3rdparty/freetype/README index a6ab092..6e5ad46 100644 --- a/src/3rdparty/freetype/README +++ b/src/3rdparty/freetype/README @@ -9,7 +9,7 @@ is called `libttf'. They are *not* compatible! - FreeType 2.3.6 + FreeType 2.3.9 ============== Please read the docs/CHANGES file, it contains IMPORTANT @@ -26,9 +26,9 @@ and download one of the following files. - freetype-doc-2.3.6.tar.bz2 - freetype-doc-2.3.6.tar.gz - ftdoc236.zip + freetype-doc-2.3.9.tar.bz2 + freetype-doc-2.3.9.tar.gz + ftdoc239.zip Bugs @@ -51,7 +51,7 @@ ---------------------------------------------------------------------- -Copyright 2006, 2007, 2008 by +Copyright 2006, 2007, 2008, 2009 by David Turner, Robert Wilhelm, and Werner Lemberg. This file is part of the FreeType project, and may only be used, diff --git a/src/3rdparty/freetype/README.CVS b/src/3rdparty/freetype/README.CVS index 2764ae9..ff1a2d0 100644 --- a/src/3rdparty/freetype/README.CVS +++ b/src/3rdparty/freetype/README.CVS @@ -13,17 +13,13 @@ The versions given in parentheses are known to work. Newer versions should work too, of course. Note that autogen.sh also sets up proper file permissions for the `configure' and auxiliary scripts. -A very common problem is that this script complains that the `aclocal' -program doesn't accept a `--force' option: +The autogen.sh script now checks the version of above three packages +whether they match the numbers above. Otherwise it will complain and +suggest either upgrading or using an environment variable to point to +a more recent version of the required tool(s). - generating `configure.ac' - running `aclocal -I . --force' - aclocal: unrecognized option -- `--force' - Try `aclocal --help' for more information. - error while running `aclocal -I . --force' - -This means that your version of the automake package is too old. -Please update it before trying to build FreeType. +Note that `aclocal' is provided by the `automake' package on Linux, +and that `libtoolize' is called `glibtoolize' on Darwin (OS X). For static builds which don't use platform specific optimizations, no diff --git a/src/3rdparty/freetype/autogen.sh b/src/3rdparty/freetype/autogen.sh index d8fb5b2..16c335f 100644 --- a/src/3rdparty/freetype/autogen.sh +++ b/src/3rdparty/freetype/autogen.sh @@ -1,6 +1,6 @@ #!/bin/sh -# Copyright 2005, 2006, 2007 by +# Copyright 2005, 2006, 2007, 2008, 2009 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, @@ -20,12 +20,120 @@ run () fi } +get_major_version () +{ + echo $1 | sed -e 's/\([0-9][0-9]*\)\..*/\1/g' +} + +get_minor_version () +{ + echo $1 | sed -e 's/[0-9][0-9]*\.\([0-9][0-9]*\).*/\1/g' +} + +get_patch_version () +{ + # tricky: some version numbers don't include a patch + # separated with a point, but something like 1.4-p6 + patch=`echo $1 | sed -e 's/[0-9][0-9]*\.[0-9][0-9]*\.\([0-9][0-9]*\).*/\1/g'` + if test "$patch" = "$1"; then + patch=`echo $1 | sed -e 's/[0-9][0-9]*\.[0-9][0-9]*\-p\([0-9][0-9]*\).*/\1/g'` + # if there isn't any patch number, default to 0 + if test "$patch" = "$1"; then + patch=0 + fi + fi + echo $patch +} + +# $1: version to check +# $2: minimum version + +compare_to_minimum_version () +{ + MAJOR1=`get_major_version $1` + MAJOR2=`get_major_version $2` + if test $MAJOR1 -lt $MAJOR2; then + echo 0 + return + else + if test $MAJOR1 -gt $MAJOR2; then + echo 1 + return + fi + fi + + MINOR1=`get_minor_version $1` + MINOR2=`get_minor_version $2` + if test $MINOR1 -lt $MINOR2; then + echo 0 + return + else + if test $MINOR1 -gt $MINOR2; then + echo 1 + return + fi + fi + + PATCH1=`get_patch_version $1` + PATCH2=`get_patch_version $2` + if test $PATCH1 -lt $PATCH2; then + echo 0 + else + echo 1 + fi +} + +# check the version of a given tool against a minimum version number +# +# $1: tool path +# $2: tool usual name (e.g. `aclocal') +# $3: tool variable (e.g. `ACLOCAL') +# $4: minimum version to check against +# $5: option field index used to extract the tool version from the +# output of --version + +check_tool_version () +{ + field=$5 + if test "$field"x = x; then + field=4 # default to 4 for all GNU autotools + fi + version=`$1 --version | head -1 | cut -d ' ' -f $field` + version_check=`compare_to_minimum_version $version $4` + if test "$version_check"x = 0x; then + echo "ERROR: Your version of the \`$2' tool is too old." + echo " Minimum version $4 is required (yours is version $version)." + echo " Please upgrade or use the $3 variable to point to a more recent one." + echo "" + exit 1 + fi +} + if test ! -f ./builds/unix/configure.raw; then echo "You must be in the same directory as \`autogen.sh'." echo "Bootstrapping doesn't work if srcdir != builddir." exit 1 fi +# On MacOS X, the GNU libtool is named `glibtool'. +HOSTOS=`uname` +LIBTOOLIZE=libtoolize +if test "$HOSTOS"x = Darwinx; then + LIBTOOLIZE=glibtoolize +fi + +if test "$ACLOCAL"x = x; then + ACLOCAL=aclocal +fi + +if test "$AUTOCONF"x = x; then + AUTOCONF=autoconf +fi + +check_tool_version $ACLOCAL aclocal ACLOCAL 1.10.1 +check_tool_version $LIBTOOLIZE libtoolize LIBTOOLIZE 2.2.4 +check_tool_version $AUTOCONF autoconf AUTOCONF 2.62 + # This sets freetype_major, freetype_minor, and freetype_patch. eval `sed -nf version.sed include/freetype/freetype.h` @@ -38,17 +146,10 @@ cd builds/unix echo "generating \`configure.ac'" sed -e "s;@VERSION@;$freetype_major$freetype_minor$freetype_patch;" \ - < configure.raw > configure.ac - -# On MacOS X, the GNU libtool is named `glibtool'. -HOSTOS=`uname` -LIBTOOLIZE=libtoolize -if test "$HOSTOS"x = Darwinx; then - LIBTOOLIZE=glibtoolize -fi + < configure.raw > configure.ac run aclocal -I . --force -run $LIBTOOLIZE --force --copy +run $LIBTOOLIZE --force --copy --install run autoconf --force chmod +x mkinstalldirs diff --git a/src/3rdparty/freetype/builds/amiga/include/freetype/config/ftmodule.h b/src/3rdparty/freetype/builds/amiga/include/freetype/config/ftmodule.h index c8a5bee..5873bab 100644 --- a/src/3rdparty/freetype/builds/amiga/include/freetype/config/ftmodule.h +++ b/src/3rdparty/freetype/builds/amiga/include/freetype/config/ftmodule.h @@ -80,77 +80,77 @@ /* Now include the modules */ #ifdef FT_USE_AUTOFIT -FT_USE_MODULE(autofit_module_class) +FT_USE_MODULE( FT_Module_Class, autofit_module_class ) #endif #ifdef FT_USE_TT -FT_USE_MODULE(tt_driver_class) +FT_USE_MODULE( FT_Driver_ClassRec, tt_driver_class ) #endif #ifdef FT_USE_T1 -FT_USE_MODULE(t1_driver_class) +FT_USE_MODULE( FT_Driver_ClassRec, t1_driver_class ) #endif #ifdef FT_USE_CFF -FT_USE_MODULE(cff_driver_class) +FT_USE_MODULE( FT_Driver_ClassRec, cff_driver_class ) #endif #ifdef FT_USE_T1CID -FT_USE_MODULE(t1cid_driver_class) +FT_USE_MODULE( FT_Driver_ClassRec, t1cid_driver_class ) #endif #ifdef FT_USE_PFR -FT_USE_MODULE(pfr_driver_class) +FT_USE_MODULE( FT_Driver_ClassRec, pfr_driver_class ) #endif #ifdef FT_USE_T42 -FT_USE_MODULE(t42_driver_class) +FT_USE_MODULE( FT_Driver_ClassRec, t42_driver_class ) #endif #ifdef FT_USE_WINFNT -FT_USE_MODULE(winfnt_driver_class) +FT_USE_MODULE( FT_Driver_ClassRec, winfnt_driver_class ) #endif #ifdef FT_USE_PCF -FT_USE_MODULE(pcf_driver_class) +FT_USE_MODULE( FT_Driver_ClassRec, pcf_driver_class ) #endif #ifdef FT_USE_PSAUX -FT_USE_MODULE(psaux_module_class) +FT_USE_MODULE( FT_Module_Class, psaux_module_class ) #endif #ifdef FT_USE_PSNAMES -FT_USE_MODULE(psnames_module_class) +FT_USE_MODULE( FT_Module_Class, psnames_module_class ) #endif #ifdef FT_USE_PSHINT -FT_USE_MODULE(pshinter_module_class) +FT_USE_MODULE( FT_Module_Class, pshinter_module_class ) #endif #ifdef FT_USE_RASTER -FT_USE_MODULE(ft_raster1_renderer_class) +FT_USE_MODULE( FT_Renderer_Class, ft_raster1_renderer_class ) #endif #ifdef FT_USE_SFNT -FT_USE_MODULE(sfnt_module_class) +FT_USE_MODULE( FT_Module_Class, sfnt_module_class ) #endif #ifdef FT_USE_SMOOTH -FT_USE_MODULE(ft_smooth_renderer_class) -FT_USE_MODULE(ft_smooth_lcd_renderer_class) -FT_USE_MODULE(ft_smooth_lcdv_renderer_class) +FT_USE_MODULE( FT_Renderer_Class, ft_smooth_renderer_class ) +FT_USE_MODULE( FT_Renderer_Class, ft_smooth_lcd_renderer_class ) +FT_USE_MODULE( FT_Renderer_Class, ft_smooth_lcdv_renderer_class ) #endif #ifdef FT_USE_OTV -FT_USE_MODULE(otv_module_class) +FT_USE_MODULE( FT_Module_Class, otv_module_class ) #endif #ifdef FT_USE_BDF -FT_USE_MODULE(bdf_driver_class) +FT_USE_MODULE( FT_Driver_ClassRec, bdf_driver_class ) #endif #ifdef FT_USE_GXV -FT_USE_MODULE(gxv_module_class) +FT_USE_MODULE( FT_Module_Class, gxv_module_class ) #endif /* diff --git a/src/3rdparty/freetype/builds/amiga/makefile b/src/3rdparty/freetype/builds/amiga/makefile index 24e8545..e874a1f 100644 --- a/src/3rdparty/freetype/builds/amiga/makefile +++ b/src/3rdparty/freetype/builds/amiga/makefile @@ -5,7 +5,7 @@ # -# Copyright 2005, 2006, 2007 by +# Copyright 2005, 2006, 2007, 2009 by # Werner Lemberg and Detlef Würkner. # # This file is part of the FreeType project, and may only be used, modified, @@ -93,6 +93,12 @@ ftbdf.ppc.o: $(FTSRC)/base/ftbdf.c ftbitmap.ppc.o: $(FTSRC)/base/ftbitmap.c $(CC) -c $(CFLAGS) -o $@ $< +ftcid.ppc.o: $(FTSRC)/base/ftcid.c + $(CC) -c $(CFLAGS) -o $@ $< + +ftfstype.ppc.o: $(FTSRC)/base/ftfstype.c + $(CC) -c $(CFLAGS) -o $@ $< + ftgasp.ppc.o: $(FTSRC)/base/ftgasp.c $(CC) -c $(CFLAGS) -o $@ $< @@ -111,6 +117,9 @@ ftmm.ppc.o: $(FTSRC)/base/ftmm.c ftotval.ppc.o: $(FTSRC)/base/ftotval.c $(CC) -c $(CFLAGS) -o $@ $< +ftpatent.ppc.o: $(FTSRC)/base/ftpatent.c + $(CC) -c $(CFLAGS) -o $@ $< + ftpfr.ppc.o: $(FTSRC)/base/ftpfr.c $(CC) -c $(CFLAGS) -o $@ $< @@ -255,10 +264,11 @@ gxvalid.ppc.o: $(FTSRC)/gxvalid/gxvalid.c otvalid.ppc.o: $(FTSRC)/otvalid/otvalid.c $(CC) -c $(CFLAGS) -o $@ $< -BASEPPC = ftbase.ppc.o ftbbox.ppc.o ftbdf.ppc.o ftbitmap.ppc.o \ - ftgasp.ppc.o ftglyph.ppc.o ftgxvalid.ppc.o ftlcdfil.ppc.o \ - ftmm.ppc.o ftotval.ppc.o ftpfr.ppc.o ftstroke.ppc.o \ - ftsynth.ppc.o fttype1.ppc.o ftwinfnt.ppc.o ftxf86.ppc.o +BASEPPC = ftbase.ppc.o ftbbox.ppc.o ftbdf.ppc.o ftbitmap.ppc.o ftcid.ppc.o \ + ftfstype.ppc.o ftgasp.ppc.o ftglyph.ppc.o ftgxval.ppc.o \ + ftlcdfil.ppc.o ftmm.ppc.o ftotval.ppc.o ftpatent.ppc.o ftpfr.ppc.o \ + ftstroke.ppc.o ftsynth.ppc.o fttype1.ppc.o ftwinfnt.ppc.o \ + ftxf86.ppc.o DEBUGPPC = ftdebug.ppc.o ftdebugpure.ppc.o diff --git a/src/3rdparty/freetype/builds/amiga/makefile.os4 b/src/3rdparty/freetype/builds/amiga/makefile.os4 index 6853c9f..edd88eb 100644 --- a/src/3rdparty/freetype/builds/amiga/makefile.os4 +++ b/src/3rdparty/freetype/builds/amiga/makefile.os4 @@ -4,7 +4,7 @@ # -# Copyright 2005, 2006, 2007 by +# Copyright 2005, 2006, 2007, 2009 by # Werner Lemberg and Detlef Würkner. # # This file is part of the FreeType project, and may only be used, modified, @@ -89,6 +89,9 @@ ftbdf.ppc.o: FT:src/base/ftbdf.c ftbitmap.ppc.o: FT:src/base/ftbitmap.c $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftbitmap.c +ftcid.ppc.o: FT:src/base/ftcid.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftcid.c + ftdebug.ppc.o: FT:src/base/ftdebug.c $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftdebug.c @@ -96,6 +99,9 @@ ftdebug.ppc.o: FT:src/base/ftdebug.c ftdebugpure.ppc.o: src/base/ftdebug.c $(CC) -c $(CFLAGS) -o $@ src/base/ftdebug.c +ftfstype.ppc.o: FT:src/base/ftfstype.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftfstype.c + ftgasp.ppc.o: FT:src/base/ftgasp.c $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftgasp.c @@ -114,6 +120,9 @@ ftmm.ppc.o: FT:src/base/ftmm.c ftotval.ppc.o: FT:src/base/ftotval.c $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftotval.c +ftpatent.ppc.o: FT:src/base/ftpatent.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftpatent.c + ftpfr.ppc.o: FT:src/base/ftpfr.c $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftpfr.c @@ -258,10 +267,11 @@ gxvalid.ppc.o: FT:src/gxvalid/gxvalid.c otvalid.ppc.o: FT:src/otvalid/otvalid.c $(CC) -c $(CFLAGS) -o $@ /FT/src/otvalid/otvalid.c -BASE = ftbase.ppc.o ftbbox.ppc.o ftbdf.ppc.o ftbitmap.ppc.o \ - ftgasp.ppc.o ftglyph.ppc.o ftgxval.ppc.o ftlcdfil.ppc.o \ - ftmm.ppc.o ftotval.ppc.o ftpfr.ppc.o ftstroke.ppc.o \ - ftsynth.ppc.o fttype1.ppc.o ftwinfnt.ppc.o ftxf86.ppc.o +BASE = ftbase.ppc.o ftbbox.ppc.o ftbdf.ppc.o ftbitmap.ppc.o ftcid.ppc.o \ + ftfstype.ppc.o ftgasp.ppc.o ftglyph.ppc.o ftgxval.ppc.o \ + ftlcdfil.ppc.o ftmm.ppc.o ftotval.ppc.o ftpatent.ppc.o ftpfr.ppc.o \ + ftstroke.ppc.o ftsynth.ppc.o fttype1.ppc.o ftwinfnt.ppc.o \ + ftxf86.ppc.o DEBUG = ftdebug.ppc.o ftdebugpure.ppc.o diff --git a/src/3rdparty/freetype/builds/amiga/smakefile b/src/3rdparty/freetype/builds/amiga/smakefile index c9209f7..2a561a8 100644 --- a/src/3rdparty/freetype/builds/amiga/smakefile +++ b/src/3rdparty/freetype/builds/amiga/smakefile @@ -3,7 +3,7 @@ # -# Copyright 2005,2006, 2007 by +# Copyright 2005,2006, 2007, 2009 by # Werner Lemberg and Detlef Würkner. # # This file is part of the FreeType project, and may only be used, modified, @@ -42,9 +42,9 @@ # (and either ftdebug.o or ftdebugpure.o if you enabled FT_DEBUG_LEVEL_ERROR or # FT_DEBUG_LEVEL_TRACE in include/freetype/config/ftoption.h). -OBJBASE = ftbase.o ftbbox.o ftbdf.o ftbitmap.o ftgasp.o ftglyph.o \ - ftgxval.o ftlcdfil.o ftmm.o ftotval.o ftpfr.o ftstroke.o \ - ftsynth.o fttype1.o ftwinfnt.o ftxf86.o +OBJBASE = ftbase.o ftbbox.o ftbdf.o ftbitmap.o ftcid.o ftfstype.o ftgasp.o \ + ftglyph.o ftgxval.o ftlcdfil.o ftmm.o ftotval.o ftpatent.o ftpfr.o \ + ftstroke.o ftsynth.o fttype1.o ftwinfnt.o ftxf86.o OBJSYSTEM = ftsystem.o ftsystempure.o @@ -131,6 +131,10 @@ ftbdf.o: $(CORE)base/ftbdf.c sc $(SCFLAGS) objname=$@ $< ftbitmap.o: $(CORE)base/ftbitmap.c sc $(SCFLAGS) objname=$@ $< +ftcid.o: $(CORE)base/ftcid.c + sc $(SCFLAGS) objname=$@ $< +ftfstype.o: $(CORE)base/ftfstype.c + sc $(SCFLAGS) objname=$@ $< ftgasp.o: $(CORE)base/ftgasp.c sc $(SCFLAGS) objname=$@ $< ftglyph.o: $(CORE)base/ftglyph.c @@ -143,6 +147,8 @@ ftmm.o: $(CORE)base/ftmm.c sc $(SCFLAGS) objname=$@ $< ftotval.o: $(CORE)base/ftotval.c sc $(SCFLAGS) objname=$@ $< +ftpatent.o: $(CORE)base/ftpatent.c + sc $(SCFLAGS) objname=$@ $< ftpfr.o: $(CORE)base/ftpfr.c sc $(SCFLAGS) objname=$@ $< ftstroke.o: $(CORE)base/ftstroke.c diff --git a/src/3rdparty/freetype/builds/freetype.mk b/src/3rdparty/freetype/builds/freetype.mk index 877bda2..7a89c8e 100644 --- a/src/3rdparty/freetype/builds/freetype.mk +++ b/src/3rdparty/freetype/builds/freetype.mk @@ -168,14 +168,14 @@ OBJECTS_LIST := # Define $(PUBLIC_H) as the list of all public header files located in -# `$(TOP_DIR)/include/freetype'. $(BASE_H), and $(CONFIG_H) are defined +# `$(TOP_DIR)/include/freetype'. $(INTERNAL_H), and $(CONFIG_H) are defined # similarly. # # This is used to simplify the dependency rules -- if one of these files # changes, the whole library is recompiled. # PUBLIC_H := $(wildcard $(PUBLIC_DIR)/*.h) -BASE_H := $(wildcard $(INTERNAL_DIR)/*.h) \ +INTERNAL_H := $(wildcard $(INTERNAL_DIR)/*.h) \ $(wildcard $(SERVICES_DIR)/*.h) CONFIG_H := $(wildcard $(CONFIG_DIR)/*.h) \ $(wildcard $(BUILD_DIR)/freetype/config/*.h) \ @@ -183,7 +183,7 @@ CONFIG_H := $(wildcard $(CONFIG_DIR)/*.h) \ $(FTOPTION_H) DEVEL_H := $(wildcard $(TOP_DIR)/devel/*.h) -FREETYPE_H := $(PUBLIC_H) $(BASE_H) $(CONFIG_H) $(DEVEL_H) +FREETYPE_H := $(PUBLIC_H) $(INTERNAL_H) $(CONFIG_H) $(DEVEL_H) # ftsystem component diff --git a/src/3rdparty/freetype/builds/mac/FreeType.m68k_cfm.make.txt b/src/3rdparty/freetype/builds/mac/FreeType.m68k_cfm.make.txt index 78d65d2..3360d91 100644 --- a/src/3rdparty/freetype/builds/mac/FreeType.m68k_cfm.make.txt +++ b/src/3rdparty/freetype/builds/mac/FreeType.m68k_cfm.make.txt @@ -31,13 +31,13 @@ COptions = \xB6 ### Source Files ### SrcFiles = \xB6 - :builds:mac:ftmac.c \xB6 :src:autofit:autofit.c \xB6 - :src:base:ftbase.c \xB6 + :builds:mac:ftbase.c \xB6 :src:base:ftbbox.c \xB6 :src:base:ftbdf.c \xB6 :src:base:ftbitmap.c \xB6 :src:base:ftdebug.c \xB6 + :src:base:ftfstype.c \xB6 :src:base:ftglyph.c \xB6 :src:base:ftgxval.c \xB6 :src:base:ftinit.c \xB6 @@ -75,13 +75,13 @@ SrcFiles = \xB6 ### Object Files ### ObjFiles-68K = \xB6 - "{ObjDir}ftmac.c.o" \xB6 "{ObjDir}autofit.c.o" \xB6 "{ObjDir}ftbase.c.o" \xB6 "{ObjDir}ftbbox.c.o" \xB6 "{ObjDir}ftbdf.c.o" \xB6 "{ObjDir}ftbitmap.c.o" \xB6 "{ObjDir}ftdebug.c.o" \xB6 + "{ObjDir}ftfstype.c.o" \xB6 "{ObjDir}ftglyph.c.o" \xB6 "{ObjDir}ftgxval.c.o" \xB6 "{ObjDir}ftinit.c.o" \xB6 @@ -129,8 +129,14 @@ LibFiles-68K = ### Build Rules ### -"{ObjDir}ftmac.c.o" \xC4\xC4 :builds:mac:ftmac.c - {C} :builds:mac:ftmac.c -o "{ObjDir}ftmac.c.o" {COptions} +:builds:mac:ftbase.c \xC4\xC4 :src:base:ftbase.c + Duplicate :src:base:ftbase.c :builds:mac:ftbase.c + +"{ObjDir}ftbase.c.o" \xC4\xC4 :builds:mac:ftbase.c + {C} :builds:mac:ftbase.c -o "{ObjDir}ftbase.c.o" \xB6 + -i :builds:mac: \xB6 + -i :src:base: \xB6 + {COptions} FreeType.m68k_cfm \xC4\xC4 FreeType.m68k_cfm.o @@ -147,15 +153,15 @@ FreeType.m68k_cfm.o \xC4\xC4 {ObjFiles-68K} {LibFiles-68K} {\xA5MondoBuild\xA5 ### Required Dependencies ### "{ObjDir}autofit.c.o" \xC4 :src:autofit:autofit.c -"{ObjDir}ftbase.c.o" \xC4 :src:base:ftbase.c +# "{ObjDir}ftbase.c.o" \xC4 :src:base:ftbase.c "{ObjDir}ftbbox.c.o" \xC4 :src:base:ftbbox.c "{ObjDir}ftbdf.c.o" \xC4 :src:base:ftbdf.c "{ObjDir}ftbitmap.c.o" \xC4 :src:base:ftbitmap.c "{ObjDir}ftdebug.c.o" \xC4 :src:base:ftdebug.c +"{ObjDir}ftfstype.c.o" \xC4 :src:base:ftfstype.c "{ObjDir}ftglyph.c.o" \xC4 :src:base:ftglyph.c "{ObjDir}ftgxval.c.o" \xC4 :src:base:ftgxval.c "{ObjDir}ftinit.c.o" \xC4 :src:base:ftinit.c -# "{ObjDir}ftmac.c.o" \xC4 :builds:mac:ftmac.c "{ObjDir}ftmm.c.o" \xC4 :src:base:ftmm.c "{ObjDir}ftotval.c.o" \xC4 :src:base:ftotval.c "{ObjDir}ftpfr.c.o" \xC4 :src:base:ftpfr.c diff --git a/src/3rdparty/freetype/builds/mac/FreeType.m68k_far.make.txt b/src/3rdparty/freetype/builds/mac/FreeType.m68k_far.make.txt index c23dead..224f8e1 100644 --- a/src/3rdparty/freetype/builds/mac/FreeType.m68k_far.make.txt +++ b/src/3rdparty/freetype/builds/mac/FreeType.m68k_far.make.txt @@ -30,13 +30,13 @@ COptions = \xB6 ### Source Files ### SrcFiles = \xB6 - :builds:mac:ftmac.c \xB6 :src:autofit:autofit.c \xB6 - :src:base:ftbase.c \xB6 + :builds:mac:ftbase.c \xB6 :src:base:ftbbox.c \xB6 :src:base:ftbdf.c \xB6 :src:base:ftbitmap.c \xB6 :src:base:ftdebug.c \xB6 + :src:base:ftfstype.c \xB6 :src:base:ftglyph.c \xB6 :src:base:ftgxval.c \xB6 :src:base:ftinit.c \xB6 @@ -80,10 +80,10 @@ ObjFiles-68K = \xB6 "{ObjDir}ftbdf.c.o" \xB6 "{ObjDir}ftbitmap.c.o" \xB6 "{ObjDir}ftdebug.c.o" \xB6 + "{ObjDir}ftfstype.c.o" \xB6 "{ObjDir}ftglyph.c.o" \xB6 "{ObjDir}ftgxval.c.o" \xB6 "{ObjDir}ftinit.c.o" \xB6 - "{ObjDir}ftmac.c.o" \xB6 "{ObjDir}ftmm.c.o" \xB6 "{ObjDir}ftotval.c.o" \xB6 "{ObjDir}ftpfr.c.o" \xB6 @@ -128,8 +128,14 @@ LibFiles-68K = ### Build Rules ### -"{ObjDir}ftmac.c.o" \xC4\xC4 :builds:mac:ftmac.c - {C} :builds:mac:ftmac.c -o "{ObjDir}ftmac.c.o" {COptions} +:builds:mac:ftbase.c \xC4\xC4 :src:base:ftbase.c + Duplicate :src:base:ftbase.c :builds:mac:ftbase.c + +"{ObjDir}ftbase.c.o" \xC4\xC4 :builds:mac:ftbase.c + {C} :builds:mac:ftbase.c -o "{ObjDir}ftbase.c.o" \xB6 + -i :builds:mac: \xB6 + -i :src:base: \xB6 + {COptions} FreeType.m68k_far \xC4\xC4 FreeType.m68k_far.o @@ -146,15 +152,15 @@ FreeType.m68k_far.o \xC4\xC4 {ObjFiles-68K} {LibFiles-68K} {\xA5MondoBuild\xA5 ### Required Dependencies ### "{ObjDir}autofit.c.o" \xC4 :src:autofit:autofit.c -"{ObjDir}ftbase.c.o" \xC4 :src:base:ftbase.c +# "{ObjDir}ftbase.c.o" \xC4 :src:base:ftbase.c "{ObjDir}ftbbox.c.o" \xC4 :src:base:ftbbox.c "{ObjDir}ftbdf.c.o" \xC4 :src:base:ftbdf.c "{ObjDir}ftbitmap.c.o" \xC4 :src:base:ftbitmap.c "{ObjDir}ftdebug.c.o" \xC4 :src:base:ftdebug.c +"{ObjDir}ftfstype.c.o" \xC4 :src:base:ftfstype.c "{ObjDir}ftglyph.c.o" \xC4 :src:base:ftglyph.c "{ObjDir}ftgxval.c.o" \xC4 :src:base:ftgxval.c "{ObjDir}ftinit.c.o" \xC4 :src:base:ftinit.c -# "{ObjDir}ftmac.c.o" \xC4 :src:base:ftmac.c "{ObjDir}ftmm.c.o" \xC4 :src:base:ftmm.c "{ObjDir}ftotval.c.o" \xC4 :src:base:ftotval.c "{ObjDir}ftpfr.c.o" \xC4 :src:base:ftpfr.c diff --git a/src/3rdparty/freetype/builds/mac/FreeType.ppc_carbon.make.txt b/src/3rdparty/freetype/builds/mac/FreeType.ppc_carbon.make.txt index f8e2d66..0b80deb 100644 --- a/src/3rdparty/freetype/builds/mac/FreeType.ppc_carbon.make.txt +++ b/src/3rdparty/freetype/builds/mac/FreeType.ppc_carbon.make.txt @@ -31,13 +31,13 @@ PPCCOptions = \xB6 ### Source Files ### SrcFiles = \xB6 - :builds:mac:ftmac.c \xB6 :src:autofit:autofit.c \xB6 - :src:base:ftbase.c \xB6 + :builds:mac:ftbase.c \xB6 :src:base:ftbbox.c \xB6 :src:base:ftbdf.c \xB6 :src:base:ftbitmap.c \xB6 :src:base:ftdebug.c \xB6 + :src:base:ftfstype.c \xB6 :src:base:ftglyph.c \xB6 :src:base:ftgxval.c \xB6 :src:base:ftinit.c \xB6 @@ -81,10 +81,10 @@ ObjFiles-PPC = \xB6 "{ObjDir}ftbdf.c.x" \xB6 "{ObjDir}ftbitmap.c.x" \xB6 "{ObjDir}ftdebug.c.x" \xB6 + "{ObjDir}ftfstype.c.x" \xB6 "{ObjDir}ftglyph.c.x" \xB6 "{ObjDir}ftgxval.c.x" \xB6 "{ObjDir}ftinit.c.x" \xB6 - "{ObjDir}ftmac.c.x" \xB6 "{ObjDir}ftmm.c.x" \xB6 "{ObjDir}ftotval.c.x" \xB6 "{ObjDir}ftpfr.c.x" \xB6 @@ -129,6 +129,15 @@ LibFiles-PPC = ### Build Rules ### +:builds:mac:ftbase.c \xC4\xC4 :src:base:ftbase.c + Duplicate :src:base:ftbase.c :builds:mac:ftbase.c + +"{ObjDir}ftbase.c.x" \xC4\xC4 :builds:mac:ftbase.c + {PPCC} :builds:mac:ftbase.c -o {ObjDir}ftbase.c.x \xB6 + -i :builds:mac: \xB6 + -i :src:base: \xB6 + {PPCCOptions} + FreeType.ppc_carbon \xC4\xC4 FreeType.ppc_carbon.o FreeType.ppc_carbon.o \xC4\xC4 {ObjFiles-PPC} {LibFiles-PPC} {\xA5MondoBuild\xA5} @@ -146,13 +155,13 @@ FreeType.ppc_carbon.o \xC4\xC4 {ObjFiles-PPC} {LibFiles-PPC} {\xA5MondoBuild\x ### Required Dependencies ### -"{ObjDir}ftmac.c.x" \xC4 :builds:mac:ftmac.c "{ObjDir}autofit.c.x" \xC4 :src:autofit:autofit.c -"{ObjDir}ftbase.c.x" \xC4 :src:base:ftbase.c +# "{ObjDir}ftbase.c.x" \xC4 :builds:mac:ftbase.c "{ObjDir}ftbbox.c.x" \xC4 :src:base:ftbbox.c "{ObjDir}ftbdf.c.x" \xC4 :src:base:ftbdf.c "{ObjDir}ftbitmap.c.x" \xC4 :src:base:ftbitmap.c "{ObjDir}ftdebug.c.x" \xC4 :src:base:ftdebug.c +"{ObjDir}ftfstype.c.x" \xC4 :src:base:ftfstype.c "{ObjDir}ftglyph.c.x" \xC4 :src:base:ftglyph.c "{ObjDir}ftgxval.c.x" \xC4 :src:base:ftgxval.c "{ObjDir}ftinit.c.x" \xC4 :src:base:ftinit.c diff --git a/src/3rdparty/freetype/builds/mac/FreeType.ppc_classic.make.txt b/src/3rdparty/freetype/builds/mac/FreeType.ppc_classic.make.txt index 5c743fd..ffa23b2 100644 --- a/src/3rdparty/freetype/builds/mac/FreeType.ppc_classic.make.txt +++ b/src/3rdparty/freetype/builds/mac/FreeType.ppc_classic.make.txt @@ -31,13 +31,13 @@ PPCCOptions = \xB6 ### Source Files ### SrcFiles = \xB6 - :builds:mac:ftmac.c \xB6 :src:autofit:autofit.c \xB6 - :src:base:ftbase.c \xB6 + :builds:mac:ftbase.c \xB6 :src:base:ftbbox.c \xB6 :src:base:ftbdf.c \xB6 :src:base:ftbitmap.c \xB6 :src:base:ftdebug.c \xB6 + :src:base:ftfstype.c \xB6 :src:base:ftglyph.c \xB6 :src:base:ftgxval.c \xB6 :src:base:ftinit.c \xB6 @@ -81,10 +81,10 @@ ObjFiles-PPC = \xB6 "{ObjDir}ftbdf.c.x" \xB6 "{ObjDir}ftbitmap.c.x" \xB6 "{ObjDir}ftdebug.c.x" \xB6 + "{ObjDir}ftfstype.c.x" \xB6 "{ObjDir}ftglyph.c.x" \xB6 "{ObjDir}ftgxval.c.x" \xB6 "{ObjDir}ftinit.c.x" \xB6 - "{ObjDir}ftmac.c.x" \xB6 "{ObjDir}ftmm.c.x" \xB6 "{ObjDir}ftotval.c.x" \xB6 "{ObjDir}ftpfr.c.x" \xB6 @@ -129,6 +129,15 @@ LibFiles-PPC = ### Build Rules ### +:builds:mac:ftbase.c \xC4\xC4 :src:base:ftbase.c + Duplicate :src:base:ftbase.c :builds:mac:ftbase.c + +"{ObjDir}ftbase.c.x" \xC4\xC4 :builds:mac:ftbase.c + {PPCC} :builds:mac:ftbase.c -o "{ObjDir}ftbase.c.x" \xB6 + -i :builds:mac: \xB6 + -i :src:base: \xB6 + {PPCCOptions} + FreeType.ppc_classic \xC4\xC4 FreeType.ppc_classic.o FreeType.ppc_classic.o \xC4\xC4 {ObjFiles-PPC} {LibFiles-PPC} {\xA5MondoBuild\xA5} @@ -146,13 +155,13 @@ FreeType.ppc_classic.o \xC4\xC4 {ObjFiles-PPC} {LibFiles-PPC} {\xA5MondoBuild\ ### Required Dependencies ### -"{ObjDir}ftmac.c.x" \xC4 :builds:mac:ftmac.c "{ObjDir}autofit.c.x" \xC4 :src:autofit:autofit.c -"{ObjDir}ftbase.c.x" \xC4 :src:base:ftbase.c +# "{ObjDir}ftbase.c.x" \xC4 :builds:mac:ftbase.c "{ObjDir}ftbbox.c.x" \xC4 :src:base:ftbbox.c "{ObjDir}ftbdf.c.x" \xC4 :src:base:ftbdf.c "{ObjDir}ftbitmap.c.x" \xC4 :src:base:ftbitmap.c "{ObjDir}ftdebug.c.x" \xC4 :src:base:ftdebug.c +"{ObjDir}ftfstype.c.x" \xC4 :src:base:ftfstype.c "{ObjDir}ftglyph.c.x" \xC4 :src:base:ftglyph.c "{ObjDir}ftgxval.c.x" \xC4 :src:base:ftgxval.c "{ObjDir}ftinit.c.x" \xC4 :src:base:ftinit.c diff --git a/src/3rdparty/freetype/builds/mac/README b/src/3rdparty/freetype/builds/mac/README index edd57b1..3bedfca 100644 --- a/src/3rdparty/freetype/builds/mac/README +++ b/src/3rdparty/freetype/builds/mac/README @@ -61,11 +61,11 @@ environment by Metrowerks. GCC for MPW and Symantec /Developer/Tools/SetFile of DevTool is useful to manipulate from commandline. - 2-2. Metrowerks CodeWarriror - ---------------------------- + 2-2. Metrowerks CodeWarrior + --------------------------- XML project file is generated and tested by - CodeWarriror 9.0. Older versions are not tested + CodeWarrior 9.0. Older versions are not tested at all. At present, static library for ppc target is available in the project file. diff --git a/src/3rdparty/freetype/builds/mac/ftmac.c b/src/3rdparty/freetype/builds/mac/ftmac.c index 6e91a8f..c974f67 100644 --- a/src/3rdparty/freetype/builds/mac/ftmac.c +++ b/src/3rdparty/freetype/builds/mac/ftmac.c @@ -64,7 +64,9 @@ #include <ft2build.h> #include FT_FREETYPE_H +#include FT_TRUETYPE_TAGS_H #include FT_INTERNAL_STREAM_H +#include "ftbase.h" #if defined( __GNUC__ ) || defined( __IBMC__ ) /* This is for Mac OS X. Without redefinition, OS_INLINE */ @@ -145,9 +147,21 @@ #endif #endif - /* Some portable types are unavailable on legacy SDKs */ -#ifndef MAC_OS_X_VERSION_10_5 -typedef short ResourceIndex; + /* `configure' checks the availability of `ResourceIndex' strictly */ + /* and sets HAVE_TYPE_RESOURCE_INDEX to 1 or 0 always. If it is */ + /* not set (e.g., a build without `configure'), the availability */ + /* is guessed from the SDK version. */ +#ifndef HAVE_TYPE_RESOURCE_INDEX +#if !defined( MAC_OS_X_VERSION_10_5 ) || \ + ( MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_5 ) +#define HAVE_TYPE_RESOURCE_INDEX 0 +#else +#define HAVE_TYPE_RESOURCE_INDEX 1 +#endif +#endif /* !HAVE_TYPE_RESOURCE_INDEX */ + +#if ( HAVE_TYPE_RESOURCE_INDEX == 0 ) +typedef short ResourceIndex; #endif /* Set PREFER_LWFN to 1 if LWFN (Type 1) is preferred over @@ -968,8 +982,7 @@ typedef short ResourceIndex; for (;;) { - post_data = Get1Resource( FT_MAKE_TAG( 'P', 'O', 'S', 'T' ), - res_id++ ); + post_data = Get1Resource( TTAG_POST, res_id++ ); if ( post_data == NULL ) break; /* we are done */ @@ -1008,8 +1021,7 @@ typedef short ResourceIndex; for (;;) { - post_data = Get1Resource( FT_MAKE_TAG( 'P', 'O', 'S', 'T' ), - res_id++ ); + post_data = Get1Resource( TTAG_POST, res_id++ ); if ( post_data == NULL ) break; /* we are done */ @@ -1061,109 +1073,6 @@ typedef short ResourceIndex; } - /* Finalizer for a memory stream; gets called by FT_Done_Face(). - It frees the memory it uses. */ - static void - memory_stream_close( FT_Stream stream ) - { - FT_Memory memory = stream->memory; - - - FT_FREE( stream->base ); - - stream->size = 0; - stream->base = 0; - stream->close = 0; - } - - - /* Create a new memory stream from a buffer and a size. */ - static FT_Error - new_memory_stream( FT_Library library, - FT_Byte* base, - FT_ULong size, - FT_Stream_CloseFunc close, - FT_Stream* astream ) - { - FT_Error error; - FT_Memory memory; - FT_Stream stream; - - - if ( !library ) - return FT_Err_Invalid_Library_Handle; - - if ( !base ) - return FT_Err_Invalid_Argument; - - *astream = 0; - memory = library->memory; - if ( FT_NEW( stream ) ) - goto Exit; - - FT_Stream_OpenMemory( stream, base, size ); - - stream->close = close; - - *astream = stream; - - Exit: - return error; - } - - - /* Create a new FT_Face given a buffer and a driver name. */ - static FT_Error - open_face_from_buffer( FT_Library library, - FT_Byte* base, - FT_ULong size, - FT_Long face_index, - char* driver_name, - FT_Face* aface ) - { - FT_Open_Args args; - FT_Error error; - FT_Stream stream; - FT_Memory memory = library->memory; - - - error = new_memory_stream( library, - base, - size, - memory_stream_close, - &stream ); - if ( error ) - { - FT_FREE( base ); - return error; - } - - args.flags = FT_OPEN_STREAM; - args.stream = stream; - if ( driver_name ) - { - args.flags = args.flags | FT_OPEN_DRIVER; - args.driver = FT_Get_Module( library, driver_name ); - } - - /* At this point, face_index has served its purpose; */ - /* whoever calls this function has already used it to */ - /* locate the correct font data. We should not propagate */ - /* this index to FT_Open_Face() (unless it is negative). */ - - if ( face_index > 0 ) - face_index = 0; - - error = FT_Open_Face( library, &args, face_index, aface ); - if ( error == FT_Err_Ok ) - (*aface)->face_flags &= ~FT_FACE_FLAG_EXTERNAL_STREAM; - else - FT_Stream_Free( stream, 0 ); - - return error; - } - - /* Create a new FT_Face from a file spec to an LWFN file. */ static FT_Error FT_New_Face_From_LWFN( FT_Library library, @@ -1208,10 +1117,10 @@ typedef short ResourceIndex; size_t sfnt_size; FT_Error error = FT_Err_Ok; FT_Memory memory = library->memory; - int is_cff; + int is_cff, is_sfnt_ps; - sfnt = GetResource( FT_MAKE_TAG( 's', 'f', 'n', 't' ), sfnt_id ); + sfnt = GetResource( TTAG_sfnt, sfnt_id ); if ( sfnt == NULL ) return FT_Err_Invalid_Handle; @@ -1227,17 +1136,41 @@ typedef short ResourceIndex; HUnlock( sfnt ); ReleaseResource( sfnt ); - is_cff = sfnt_size > 4 && sfnt_data[0] == 'O' && - sfnt_data[1] == 'T' && - sfnt_data[2] == 'T' && - sfnt_data[3] == 'O'; + is_cff = sfnt_size > 4 && !ft_memcmp( sfnt_data, "OTTO", 4 ); + is_sfnt_ps = sfnt_size > 4 && !ft_memcmp( sfnt_data, "typ1", 4 ); - return open_face_from_buffer( library, - sfnt_data, - sfnt_size, - face_index, - is_cff ? "cff" : "truetype", - aface ); + if ( is_sfnt_ps ) + { + FT_Stream stream; + + + if ( FT_NEW( stream ) ) + goto Try_OpenType; + + FT_Stream_OpenMemory( stream, sfnt_data, sfnt_size ); + if ( !open_face_PS_from_sfnt_stream( library, + stream, + face_index, + 0, NULL, + aface ) ) + { + FT_Stream_Close( stream ); + FT_FREE( stream ); + FT_FREE( sfnt_data ); + goto Exit; + } + + FT_FREE( stream ); + } + Try_OpenType: + error = open_face_from_buffer( library, + sfnt_data, + sfnt_size, + face_index, + is_cff ? "cff" : "truetype", + aface ); + Exit: + return error; } @@ -1265,8 +1198,7 @@ typedef short ResourceIndex; num_faces_in_res = 0; for ( res_index = 1; ; ++res_index ) { - fond = Get1IndResource( FT_MAKE_TAG( 'F', 'O', 'N', 'D' ), - res_index ); + fond = Get1IndResource( TTAG_FOND, res_index ); if ( ResError() ) break; @@ -1305,8 +1237,7 @@ typedef short ResourceIndex; GetResInfo( fond, &fond_id, &fond_type, fond_name ); - if ( ResError() != noErr || - fond_type != FT_MAKE_TAG( 'F', 'O', 'N', 'D' ) ) + if ( ResError() != noErr || fond_type != TTAG_FOND ) return FT_Err_Invalid_File_Format; HLock( fond ); @@ -1416,7 +1347,7 @@ typedef short ResourceIndex; /* LWFN is a (very) specific file format, check for it explicitly */ file_type = get_file_type_from_path( pathname ); - if ( file_type == FT_MAKE_TAG( 'L', 'W', 'F', 'N' ) ) + if ( file_type == TTAG_LWFN ) return FT_New_Face_From_LWFN( library, pathname, face_index, aface ); /* Otherwise the file type doesn't matter (there are more than */ diff --git a/src/3rdparty/freetype/builds/symbian/bld.inf b/src/3rdparty/freetype/builds/symbian/bld.inf index e34b03c..7932dcb 100644 --- a/src/3rdparty/freetype/builds/symbian/bld.inf +++ b/src/3rdparty/freetype/builds/symbian/bld.inf @@ -2,7 +2,7 @@ // FreeType 2 project for the symbian platform // -// Copyright 2008 by +// Copyright 2008, 2009 by // David Turner, Robert Wilhelm, and Werner Lemberg. // // This file is part of the FreeType project, and may only be used, modified, @@ -29,7 +29,7 @@ PRJ_EXPORTS ../../include/freetype/ftbdf.h freetype/ftbdf.h ../../include/freetype/ftbitmap.h freetype/ftbitmap.h ../../include/freetype/ftcache.h freetype/ftcache.h -../../include/freetype/ftchapters.h freetype/ftchapters.h +../../include/freetype/ftcid.h freetype/ftcid.h ../../include/freetype/fterrdef.h freetype/fterrdef.h ../../include/freetype/fterrors.h freetype/fterrors.h ../../include/freetype/ftgasp.h freetype/ftgasp.h @@ -63,4 +63,3 @@ PRJ_EXPORTS ../../include/freetype/tttables.h freetype/tttables.h ../../include/freetype/tttags.h freetype/tttags.h ../../include/freetype/ttunpat.h freetype/ttunpat.h - diff --git a/src/3rdparty/freetype/builds/symbian/freetype.mmp b/src/3rdparty/freetype/builds/symbian/freetype.mmp index 259ac87..c10f357 100644 --- a/src/3rdparty/freetype/builds/symbian/freetype.mmp +++ b/src/3rdparty/freetype/builds/symbian/freetype.mmp @@ -2,7 +2,7 @@ // FreeType 2 makefile for the symbian platform // -// Copyright 2008 by +// Copyright 2008, 2009 by // David Turner, Robert Wilhelm, and Werner Lemberg. // // This file is part of the FreeType project, and may only be used, modified, @@ -27,10 +27,16 @@ source ftbase.c source ftbbox.c source ftbdf.c source ftbitmap.c +source ftcid.c +source ftfstype.c source ftgasp.c source ftglyph.c +source ftgxval.c source ftinit.c +source ftlcdfil.c source ftmm.c +source ftotval.c +source ftpatent.c source ftpfr.c source ftstroke.c source ftsynth.c diff --git a/src/3rdparty/freetype/builds/toplevel.mk b/src/3rdparty/freetype/builds/toplevel.mk index 57b5ca5..e6a8e93 100644 --- a/src/3rdparty/freetype/builds/toplevel.mk +++ b/src/3rdparty/freetype/builds/toplevel.mk @@ -3,7 +3,7 @@ # -# Copyright 1996-2000, 2001, 2003, 2006, 2008 by +# Copyright 1996-2000, 2001, 2003, 2006, 2008, 2009 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, @@ -34,6 +34,16 @@ # details on host platform detection and library builds. +# First of all, check whether we have `$(value ...)'. We do this by testing +# for `$(eval ...)' which has been introduced in the same GNU make version. + +eval_available := +$(eval eval_available := T) +ifneq ($(eval_available),T) + $(error FreeType's build system needs a Make program which supports $$(value)) +endif + + .PHONY: all dist distclean modules setup @@ -209,12 +219,12 @@ dist: mv tmp freetype-$(version) tar cfh - freetype-$(version) \ - | gzip -c > freetype-$(version).tar.gz + | gzip -9 -c > freetype-$(version).tar.gz tar cfh - freetype-$(version) \ | bzip2 -c > freetype-$(version).tar.bz2 @# Use CR/LF for zip files. - zip -lr ft$(winversion).zip freetype-$(version) + zip -lr9 ft$(winversion).zip freetype-$(version) rm -fr freetype-$(version) diff --git a/src/3rdparty/freetype/builds/unix/aclocal.m4 b/src/3rdparty/freetype/builds/unix/aclocal.m4 index f68c66c..36a5242 100644 --- a/src/3rdparty/freetype/builds/unix/aclocal.m4 +++ b/src/3rdparty/freetype/builds/unix/aclocal.m4 @@ -387,12 +387,12 @@ m4_define([lt_decl_dquote_varnames], # lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_varnames_tagged], -[_$0(m4_quote(m4_default([$1], [[, ]])), - m4_quote(m4_if([$2], [], - m4_quote(lt_decl_tag_varnames), - m4_quote(m4_shift($@)))), - m4_split(m4_normalize(m4_quote(_LT_TAGS))))]) -m4_define([_lt_decl_varnames_tagged], [lt_combine([$1], [$2], [_], $3)]) +[m4_assert([$# <= 2])dnl +_$0(m4_quote(m4_default([$1], [[, ]])), + m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), + m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) +m4_define([_lt_decl_varnames_tagged], +[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) # lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) @@ -952,10 +952,10 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on + darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? + # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; @@ -997,7 +997,11 @@ m4_defun([_LT_DARWIN_LINKER_FEATURES], _LT_TAGVAR(whole_archive_flag_spec, $1)='' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" - if test "$GCC" = "yes"; then + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=echo _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" @@ -1519,7 +1523,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl lt_cv_sys_max_cmd_len=-1; ;; - cygwin* | mingw*) + cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, @@ -1687,10 +1691,6 @@ else # endif #endif -#ifdef __cplusplus -extern "C" void exit (int); -#endif - void fnord() { int i=42;} int main () { @@ -1706,7 +1706,7 @@ int main () else puts (dlerror ()); - exit (status); + return status; }] _LT_EOF if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then @@ -1745,7 +1745,7 @@ else lt_cv_dlopen_self=yes ;; - mingw* | pw32*) + mingw* | pw32* | cegcc*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; @@ -2042,6 +2042,7 @@ m4_defun([_LT_SYS_DYNAMIC_LINKER], [AC_REQUIRE([AC_CANONICAL_HOST])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_OBJDUMP])dnl m4_require([_LT_DECL_SED])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], @@ -2206,14 +2207,14 @@ bsdi[[45]]*) # libtool to hard-code these into programs ;; -cygwin* | mingw* | pw32*) +cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in - yes,cygwin* | yes,mingw* | yes,pw32*) + yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ @@ -2236,7 +2237,7 @@ cygwin* | mingw* | pw32*) soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; - mingw*) + mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` @@ -2662,7 +2663,7 @@ tpf*) version_type=linux need_lib_prefix=no need_version=no - library_name_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes @@ -2686,7 +2687,7 @@ variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi - + if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi @@ -2963,6 +2964,7 @@ _LT_DECL([], [reload_cmds], [2])dnl # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_MAGIC_METHOD], [m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) AC_CACHE_CHECK([how to recognize dependent libraries], lt_cv_deplibs_check_method, [lt_cv_file_magic_cmd='$MAGIC_CMD' @@ -3013,6 +3015,12 @@ mingw* | pw32*) fi ;; +cegcc) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; @@ -3324,7 +3332,7 @@ case $host_os in aix*) symcode='[[BCDT]]' ;; -cygwin* | mingw* | pw32*) +cygwin* | mingw* | pw32* | cegcc*) symcode='[[ABCDGISTW]]' ;; hpux*) @@ -3570,7 +3578,7 @@ m4_if([$1], [CXX], [ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; - mingw* | cygwin* | os2* | pw32*) + mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style @@ -3597,10 +3605,11 @@ m4_if([$1], [CXX], [ fi ;; hpux*) - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. case $host_cpu in - hppa*64*|ia64*) + hppa*64*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' @@ -3698,12 +3707,19 @@ m4_if([$1], [CXX], [ _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; - icpc* | ecpc* ) - # Intel C++ + ecpc* ) + # old Intel C++ for x86_64 which still supported -KPIC. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; pgCC* | pgcpp*) # Portland Group C++ compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' @@ -3869,7 +3885,7 @@ m4_if([$1], [CXX], [ # PIC is the default for these OSes. ;; - mingw* | cygwin* | pw32* | os2*) + mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style @@ -3885,10 +3901,11 @@ m4_if([$1], [CXX], [ ;; hpux*) - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. case $host_cpu in - hppa*64*|ia64*) + hppa*64*) # +Z the default ;; *) @@ -3938,7 +3955,7 @@ m4_if([$1], [CXX], [ fi ;; - mingw* | cygwin* | pw32* | os2*) + mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], @@ -3969,11 +3986,25 @@ m4_if([$1], [CXX], [ linux* | k*bsd*-gnu) case $cc_basename in - icc* | ecc* | ifort*) + # old Intel for x86_64 which still supported -KPIC. + ecc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' + _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' + ;; pgcc* | pgf77* | pgf90* | pgf95*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) @@ -4155,7 +4186,7 @@ m4_if([$1], [CXX], [ pw32*) _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" ;; - cygwin* | mingw*) + cygwin* | mingw* | cegcc*) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' ;; *) @@ -4207,7 +4238,7 @@ dnl Note also adjust exclude_expsyms for C++ above. extract_expsyms_cmds= case $host_os in - cygwin* | mingw* | pw32*) + cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. @@ -4294,7 +4325,7 @@ _LT_EOF fi ;; - cygwin* | mingw* | pw32*) + cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' @@ -4360,6 +4391,9 @@ _LT_EOF tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + _LT_TAGVAR(whole_archive_flag_spec, $1)= + tmp_sharedflag='--shared' ;; xl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; @@ -4591,6 +4625,7 @@ _LT_EOF fi fi + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_TAGVAR(always_export_symbols, $1)=yes @@ -4645,7 +4680,7 @@ _LT_EOF _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; - cygwin* | mingw* | pw32*) + cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is @@ -4749,7 +4784,7 @@ _LT_EOF _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' @@ -5530,6 +5565,7 @@ if test "$_lt_caught_CXX_error" != yes; then fi fi + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. @@ -5588,7 +5624,7 @@ if test "$_lt_caught_CXX_error" != yes; then esac ;; - cygwin* | mingw* | pw32*) + cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' @@ -6969,6 +7005,18 @@ AC_SUBST([GREP]) ]) +# _LT_DECL_OBJDUMP +# -------------- +# If we don't have a new enough Autoconf to choose the best objdump +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_OBJDUMP], +[AC_CHECK_TOOL(OBJDUMP, objdump, false) +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) +AC_SUBST([OBJDUMP]) +]) + + # _LT_DECL_SED # ------------ # Check for a fully-functional sed program, that truncates @@ -7429,7 +7477,7 @@ LT_OPTION_DEFINE([LT_INIT], [win32-dll], [enable_win32_dll=yes case $host in -*-*-cygwin* | *-*-mingw* | *-*-pw32*) +*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) @@ -7670,14 +7718,14 @@ LT_OPTION_DEFINE([LTDL_INIT], [convenience], # ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # -# Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc. -# Written by Gary V. Vaughan, 2004 +# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. +# Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. -# serial 5 ltsugar.m4 +# serial 6 ltsugar.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) @@ -7733,14 +7781,14 @@ m4_define([lt_append], # Produce a SEP delimited list of all paired combinations of elements of # PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list # has the form PREFIXmINFIXSUFFIXn. +# Needed until we can rely on m4_combine added in Autoconf 2.62. m4_define([lt_combine], -[m4_if([$2], [], [], - [m4_if([$4], [], [], - [lt_join(m4_quote(m4_default([$1], [[, ]])), - lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_prefix, [$2], - [m4_foreach(_Lt_suffix, lt_car([m4_shiftn(3, $@)]), - [_Lt_prefix[]$3[]_Lt_suffix ])])))))])])dnl -]) +[m4_if(m4_eval([$# > 3]), [1], + [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl +[[m4_foreach([_Lt_prefix], [$2], + [m4_foreach([_Lt_suffix], + ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, + [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) # lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) @@ -7803,15 +7851,15 @@ m4_define([lt_dict_filter], # Generated from ltversion.in. -# serial 2976 ltversion.m4 +# serial 3012 ltversion.m4 # This file is part of GNU Libtool -m4_define([LT_PACKAGE_VERSION], [2.2.4]) -m4_define([LT_PACKAGE_REVISION], [1.2976]) +m4_define([LT_PACKAGE_VERSION], [2.2.6]) +m4_define([LT_PACKAGE_REVISION], [1.3012]) AC_DEFUN([LTVERSION_VERSION], -[macro_version='2.2.4' -macro_revision='1.2976' +[macro_version='2.2.6' +macro_revision='1.3012' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) diff --git a/src/3rdparty/freetype/builds/unix/config.guess b/src/3rdparty/freetype/builds/unix/config.guess index c7607c7..e5716ee 100755 --- a/src/3rdparty/freetype/builds/unix/config.guess +++ b/src/3rdparty/freetype/builds/unix/config.guess @@ -4,7 +4,7 @@ # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 # Free Software Foundation, Inc. -timestamp='2008-04-14' +timestamp='2009-02-03' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -331,7 +331,20 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) - echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + eval $set_cc_for_build + SUN_ARCH="i386" + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH="x86_64" + fi + fi + echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize @@ -796,7 +809,7 @@ EOF x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; - EM64T | authenticamd) + EM64T | authenticamd | genuineintel) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) @@ -935,6 +948,9 @@ EOF if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit ;; + padre:Linux:*:*) + echo sparc-unknown-linux-gnu + exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in @@ -1138,6 +1154,16 @@ EOF 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; @@ -1324,6 +1350,9 @@ EOF i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; + i*86:AROS:*:*) + echo ${UNAME_MACHINE}-pc-aros + exit ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 diff --git a/src/3rdparty/freetype/builds/unix/config.sub b/src/3rdparty/freetype/builds/unix/config.sub index 63bfff0..d546a94 100755 --- a/src/3rdparty/freetype/builds/unix/config.sub +++ b/src/3rdparty/freetype/builds/unix/config.sub @@ -4,7 +4,7 @@ # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 # Free Software Foundation, Inc. -timestamp='2008-04-14' +timestamp='2009-02-03' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software @@ -122,6 +122,7 @@ maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ + kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` @@ -249,6 +250,7 @@ case $basic_machine in | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ + | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ @@ -279,7 +281,7 @@ case $basic_machine in | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ | score \ - | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ @@ -288,7 +290,7 @@ case $basic_machine in | v850 | v850e \ | we32k \ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ - | z8k) + | z8k | z80) basic_machine=$basic_machine-unknown ;; m6811 | m68hc11 | m6812 | m68hc12) @@ -331,6 +333,7 @@ case $basic_machine in | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ + | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ @@ -362,7 +365,7 @@ case $basic_machine in | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* \ - | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ @@ -375,7 +378,7 @@ case $basic_machine in | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ - | z8k-*) + | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) @@ -443,6 +446,10 @@ case $basic_machine in basic_machine=m68k-apollo os=-bsd ;; + aros) + basic_machine=i386-pc + os=-aros + ;; aux) basic_machine=m68k-apple os=-aux @@ -463,6 +470,10 @@ case $basic_machine in basic_machine=c90-cray os=-unicos ;; + cegcc) + basic_machine=arm-unknown + os=-cegcc + ;; convex-c1) basic_machine=c1-convex os=-bsd @@ -1136,6 +1147,10 @@ case $basic_machine in basic_machine=z8k-unknown os=-sim ;; + z80-*-coff) + basic_machine=z80-unknown + os=-sim + ;; none) basic_machine=none-none os=-none @@ -1174,7 +1189,7 @@ case $basic_machine in we32k) basic_machine=we32k-att ;; - sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) + sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) @@ -1246,8 +1261,9 @@ case $os in -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -kopensolaris* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* \ + | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ @@ -1256,7 +1272,7 @@ case $os in | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* \ + | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ diff --git a/src/3rdparty/freetype/builds/unix/configure b/src/3rdparty/freetype/builds/unix/configure index a7efaf5..97849a4 100755 --- a/src/3rdparty/freetype/builds/unix/configure +++ b/src/3rdparty/freetype/builds/unix/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.62 for FreeType 2.3.6. +# Generated by GNU Autoconf 2.63 for FreeType 2.3.9. # # Report bugs to <freetype@nongnu.org>. # @@ -745,8 +745,8 @@ SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME='FreeType' PACKAGE_TARNAME='freetype' -PACKAGE_VERSION='2.3.6' -PACKAGE_STRING='FreeType 2.3.6' +PACKAGE_VERSION='2.3.9' +PACKAGE_STRING='FreeType 2.3.9' PACKAGE_BUGREPORT='freetype@nongnu.org' ac_unique_file="ftconfig.in" @@ -786,108 +786,106 @@ ac_includes_default="\ # include <unistd.h> #endif" -ac_subst_vars='SHELL -PATH_SEPARATOR -PACKAGE_NAME -PACKAGE_TARNAME -PACKAGE_VERSION -PACKAGE_STRING -PACKAGE_BUGREPORT -exec_prefix -prefix -program_transform_name -bindir -sbindir -libexecdir -datarootdir -datadir -sysconfdir -sharedstatedir -localstatedir -includedir -oldincludedir -docdir -infodir -htmldir -dvidir -pdfdir -psdir -libdir -localedir -mandir -DEFS -ECHO_C -ECHO_N -ECHO_T -LIBS -build_alias -host_alias -target_alias -version_info -ft_version -build -build_cpu -build_vendor -build_os -host -host_cpu -host_vendor -host_os -target -target_cpu -target_vendor -target_os -CC -CFLAGS -LDFLAGS -CPPFLAGS -ac_ct_CC -EXEEXT -OBJEXT -CPP -CC_BUILD -EXEEXT_BUILD -XX_CFLAGS -XX_ANSIFLAGS -RMF -RMDIR -INSTALL_PROGRAM -INSTALL_SCRIPT -INSTALL_DATA -GREP -EGREP -FTSYS_SRC -LIBZ -FT2_EXTRA_LIBS -SYSTEM_ZLIB -AS -DLLTOOL -OBJDUMP -LIBTOOL -SED -FGREP -LD -DUMPBIN -ac_ct_DUMPBIN -NM -LN_S -AR -STRIP -RANLIB -lt_ECHO -DSYMUTIL -NMEDIT -LIPO -OTOOL -OTOOL64 -hardcode_libdir_flag_spec -wl -build_libtool_libs +ac_subst_vars='LTLIBOBJS LIBOBJS -LTLIBOBJS' +build_libtool_libs +wl +hardcode_libdir_flag_spec +OTOOL64 +OTOOL +LIPO +NMEDIT +DSYMUTIL +lt_ECHO +RANLIB +STRIP +AR +LN_S +NM +ac_ct_DUMPBIN +DUMPBIN +LD +FGREP +SED +LIBTOOL +OBJDUMP +DLLTOOL +AS +SYSTEM_ZLIB +FT2_EXTRA_LIBS +LIBZ +ftmac_c +FTSYS_SRC +EGREP +GREP +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +RMDIR +RMF +XX_ANSIFLAGS +XX_CFLAGS +EXEEXT_BUILD +CC_BUILD +CPP +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +ft_version +version_info +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking +enable_biarch_config with_zlib with_old_mac_fonts with_fsspec @@ -1333,9 +1331,9 @@ fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; - fatal) { $as_echo "$as_me: error: Unrecognized options: $ac_unrecognized_opts" >&2 + fatal) { $as_echo "$as_me: error: unrecognized options: $ac_unrecognized_opts" >&2 { (exit 1); exit 1; }; } ;; - *) $as_echo "$as_me: WARNING: Unrecognized options: $ac_unrecognized_opts" >&2 ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi @@ -1388,7 +1386,7 @@ test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - { $as_echo "$as_me: error: Working directory cannot be determined" >&2 + { $as_echo "$as_me: error: working directory cannot be determined" >&2 { (exit 1); exit 1; }; } test "X$ac_ls_di" = "X$ac_pwd_ls_di" || { $as_echo "$as_me: error: pwd does not report name of working directory" >&2 @@ -1463,7 +1461,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures FreeType 2.3.6 to adapt to many kinds of systems. +\`configure' configures FreeType 2.3.9 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1523,13 +1521,12 @@ _ACEOF System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] - --target=TARGET configure for building compilers for TARGET [HOST] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of FreeType 2.3.6:";; + short | recursive ) echo "Configuration of FreeType 2.3.9:";; esac cat <<\_ACEOF @@ -1537,6 +1534,8 @@ Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-biarch-config install biarch ftconfig.h to support multiple + architectures by single file --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] @@ -1638,8 +1637,8 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -FreeType configure 2.3.6 -generated by GNU Autoconf 2.62 +FreeType configure 2.3.9 +generated by GNU Autoconf 2.63 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. @@ -1652,8 +1651,8 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by FreeType $as_me 2.3.6, which was -generated by GNU Autoconf 2.62. Invocation command line was +It was created by FreeType $as_me 2.3.9, which was +generated by GNU Autoconf 2.63. Invocation command line was $ $0 $@ @@ -1776,8 +1775,8 @@ _ASBOX case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 -$as_echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( @@ -1980,6 +1979,8 @@ $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi done if $ac_cache_corrupted; then + { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} { { $as_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 @@ -2023,7 +2024,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu # Don't forget to update docs/VERSION.DLL! -version_info='9:17:3' +version_info='9:20:3' ft_version=`echo $version_info | tr : .` @@ -2145,49 +2146,6 @@ IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac -{ $as_echo "$as_me:$LINENO: checking target system type" >&5 -$as_echo_n "checking target system type... " >&6; } -if test "${ac_cv_target+set}" = set; then - $as_echo_n "(cached) " >&6 -else - if test "x$target_alias" = x; then - ac_cv_target=$ac_cv_host -else - ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || - { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&5 -$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&2;} - { (exit 1); exit 1; }; } -fi - -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_target" >&5 -$as_echo "$ac_cv_target" >&6; } -case $ac_cv_target in -*-*-*) ;; -*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical target" >&5 -$as_echo "$as_me: error: invalid value of canonical target" >&2;} - { (exit 1); exit 1; }; };; -esac -target=$ac_cv_target -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_target -shift -target_cpu=$1 -target_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -target_os=$* -IFS=$ac_save_IFS -case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac - - -# The aliases save the names the user supplied, while $host etc. -# will get canonicalized. -test -n "$target_alias" && - test "$program_prefix$program_suffix$program_transform_name" = \ - NONENONEs,x,x, && - program_prefix=${target_alias}- # checks for programs @@ -2279,12 +2237,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC @@ -2483,12 +2437,8 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC @@ -2498,11 +2448,13 @@ fi fi -test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 $as_echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } + { (exit 1); exit 1; }; }; } # Provide some information about the compiler. $as_echo "$as_me:$LINENO: checking for C compiler version" >&5 @@ -2632,11 +2584,13 @@ if test -z "$ac_file"; then $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 +{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: C compiler cannot create executables See \`config.log' for more details." >&5 $as_echo "$as_me: error: C compiler cannot create executables See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } + { (exit 77); exit 77; }; }; } fi ac_exeext=$ac_cv_exeext @@ -2664,13 +2618,15 @@ $as_echo "$ac_try_echo") >&5 if test "$cross_compiling" = maybe; then cross_compiling=yes else - { { $as_echo "$as_me:$LINENO: error: cannot run C compiled programs. + { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:$LINENO: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } + { (exit 1); exit 1; }; }; } fi fi fi @@ -2713,11 +2669,13 @@ for ac_file in conftest.exe conftest conftest.*; do esac done else - { { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link + { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } + { (exit 1); exit 1; }; }; } fi rm -f conftest$ac_cv_exeext @@ -2771,11 +2729,13 @@ else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 +{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } + { (exit 1); exit 1; }; }; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext @@ -3344,11 +3304,13 @@ rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else - { { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check + { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&5 $as_echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } + { (exit 1); exit 1; }; }; } fi ac_ext=c @@ -4108,8 +4070,9 @@ ac_res=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } -if test `eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` = yes; then +as_val=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF @@ -4260,8 +4223,9 @@ ac_res=`eval 'as_val=${'$as_ac_Header'} $as_echo "$ac_res" >&6; } fi -if test `eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` = yes; then +as_val=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF @@ -4632,11 +4596,13 @@ done case $ac_lo in ?*) ac_cv_sizeof_int=$ac_lo;; '') if test "$ac_cv_type_int" = yes; then - { { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (int) + { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (int) See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot compute sizeof (int) See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } + { (exit 77); exit 77; }; }; } else ac_cv_sizeof_int=0 fi ;; @@ -4712,11 +4678,13 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) if test "$ac_cv_type_int" = yes; then - { { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (int) + { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (int) See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot compute sizeof (int) See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } + { (exit 77); exit 77; }; }; } else ac_cv_sizeof_int=0 fi @@ -4987,11 +4955,13 @@ done case $ac_lo in ?*) ac_cv_sizeof_long=$ac_lo;; '') if test "$ac_cv_type_long" = yes; then - { { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (long) + { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (long) See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot compute sizeof (long) See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } + { (exit 77); exit 77; }; }; } else ac_cv_sizeof_long=0 fi ;; @@ -5067,11 +5037,13 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) if test "$ac_cv_type_long" = yes; then - { { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (long) + { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:$LINENO: error: cannot compute sizeof (long) See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot compute sizeof (long) See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } + { (exit 77); exit 77; }; }; } else ac_cv_sizeof_long=0 fi @@ -5093,6 +5065,80 @@ _ACEOF +# check whether cpp computation of size of int and long in ftconfig.in works + +{ $as_echo "$as_me:$LINENO: checking cpp computation of bit length in ftconfig.in works" >&5 +$as_echo_n "checking cpp computation of bit length in ftconfig.in works... " >&6; } +orig_CPPFLAGS="${CPPFLAGS}" +CPPFLAGS="-I${srcdir} -I. ${CPPFLAGS}" +ac_clean_files="ft2build.h ftoption.h ftstdlib.h" +touch ft2build.h ftoption.h ftstdlib.h + +cat > conftest.c <<\_ACEOF +#include <limits.h> +#define FT_CONFIG_OPTIONS_H "ftoption.h" +#define FT_CONFIG_STANDARD_LIBRARY_H "ftstdlib.h" +#define FT_UINT_MAX UINT_MAX +#define FT_ULONG_MAX ULONG_MAX +#include "ftconfig.in" +_ACEOF +echo >> conftest.c "#if FT_SIZEOF_INT == "${ac_cv_sizeof_int} +echo >> conftest.c "ac_cpp_ft_sizeof_int="${ac_cv_sizeof_int} +echo >> conftest.c "#endif" +echo >> conftest.c "#if FT_SIZEOF_LONG == "${ac_cv_sizeof_long} +echo >> conftest.c "ac_cpp_ft_sizeof_long="${ac_cv_sizeof_long} +echo >> conftest.c "#endif" + +${CPP} ${CPPFLAGS} conftest.c | ${GREP} ac_cpp_ft > conftest.sh +eval `cat conftest.sh` +${RMF} conftest.c conftest.sh confft2build.h ftoption.h ftstdlib.h + +if test x != "x${ac_cpp_ft_sizeof_int}" \ + -a x != x"${ac_cpp_ft_sizeof_long}"; then + unset ft_use_autoconf_sizeof_types +else + ft_use_autoconf_sizeof_types=yes +fi + +# Check whether --enable-biarch-config was given. +if test "${enable_biarch_config+set}" = set; then + enableval=$enable_biarch_config; +fi + + +case :${ft_use_autoconf_sizeof_types}:${enable_biarch_config}: in + :yes:yes:) + { $as_echo "$as_me:$LINENO: result: broken but use it" >&5 +$as_echo "broken but use it" >&6; } + unset ft_use_autoconf_sizeof_types + ;; + ::no:) + { $as_echo "$as_me:$LINENO: result: works but ignore it" >&5 +$as_echo "works but ignore it" >&6; } + ft_use_autoconf_sizeof_types=yes + ;; + ::yes: | :::) + { $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } + unset ft_use_autoconf_sizeof_types + ;; + *) + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } + ft_use_autoconf_sizeof_types=yes + ;; +esac + +if test x"${ft_use_autoconf_sizeof_types}" = xyes; then + cat >>confdefs.h <<\_ACEOF +#define FT_USE_AUTOCONF_SIZEOF_TYPES 1 +_ACEOF + +fi + +CPPFLAGS="${orig_CPPFLAGS}" + + # checks for library functions # Here we check whether we can use our mmap file component. @@ -5238,8 +5284,9 @@ ac_res=`eval 'as_val=${'$as_ac_Header'} $as_echo "$ac_res" >&6; } fi -if test `eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` = yes; then +as_val=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF @@ -5339,8 +5386,9 @@ ac_res=`eval 'as_val=${'$as_ac_var'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } -if test `eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` = yes; then +as_val=`eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF @@ -5603,7 +5651,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_munmap" >&5 $as_echo "$ac_cv_have_decl_munmap" >&6; } -if test $ac_cv_have_decl_munmap = yes; then +if test "x$ac_cv_have_decl_munmap" = x""yes; then cat >>confdefs.h <<_ACEOF #define HAVE_DECL_MUNMAP 1 @@ -5768,8 +5816,9 @@ ac_res=`eval 'as_val=${'$as_ac_var'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } -if test `eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` = yes; then +as_val=`eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF @@ -5779,7 +5828,7 @@ done -# Check for system zlib +# check for system zlib # don't quote AS_HELP_STRING! @@ -5854,7 +5903,7 @@ LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_z_gzsetparams" >&5 $as_echo "$ac_cv_lib_z_gzsetparams" >&6; } -if test $ac_cv_lib_z_gzsetparams = yes; then +if test "x$ac_cv_lib_z_gzsetparams" = x""yes; then if test "${ac_cv_header_zlib_h+set}" = set; then { $as_echo "$as_me:$LINENO: checking for zlib.h" >&5 $as_echo_n "checking for zlib.h... " >&6; } @@ -5987,7 +6036,7 @@ fi $as_echo "$ac_cv_header_zlib_h" >&6; } fi -if test $ac_cv_header_zlib_h = yes; then +if test "x$ac_cv_header_zlib_h" = x""yes; then LIBZ='-lz' fi @@ -6002,8 +6051,43 @@ if test x$with_zlib != xno && test -n "$LIBZ"; then fi +# check Apple's `-isysroot' option and duplicate it to LDFLAGS if required -- +# Apple TechNote 2137 recommends to include it in CFLAGS but not in LDFLAGS + +{ $as_echo "$as_me:$LINENO: checking whether CFLAGS includes -isysroot option" >&5 +$as_echo_n "checking whether CFLAGS includes -isysroot option... " >&6; } +case "$CFLAGS" in +*sysroot* ) + { $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } + { $as_echo "$as_me:$LINENO: checking whether LDFLAGS includes -isysroot option" >&5 +$as_echo_n "checking whether LDFLAGS includes -isysroot option... " >&6; } + case "$LDFLAGS" in + *sysroot* ) + { $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } + ;; + *) + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } + isysroot_dir=`echo ${CFLAGS} | tr '\t' ' ' | sed 's/^.*-isysroot *//;s/ .*//'` + { $as_echo "$as_me:$LINENO: WARNING: -isysroot ${isysroot_dir} is added to LDFLAGS" >&5 +$as_echo "$as_me: WARNING: -isysroot ${isysroot_dir} is added to LDFLAGS" >&2;} + LDFLAGS="-isysroot ${isysroot_dir} ${LDFLAGS}" + ;; + esac + ;; +*) + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } + ;; +esac + + # Whether to use Mac OS resource-based fonts. +ftmac_c="" # src/base/ftmac.c should not be included in makefiles by default + # don't quote AS_HELP_STRING! # Check whether --with-old-mac-fonts was given. @@ -6027,7 +6111,7 @@ cat >>conftest.$ac_ext <<_ACEOF #if defined(__GNUC__) && defined(__APPLE_CC__) -# include <Carbon/Carbon.h> +# include <CoreServices/CoreServices.h> # include <ApplicationServices/ApplicationServices.h> #else # include <ConditionalMacros.h> @@ -6073,6 +6157,7 @@ $as_echo "$ac_try_echo") >&5 }; then { $as_echo "$as_me:$LINENO: result: ok" >&5 $as_echo "ok" >&6; } + ftmac_c='ftmac.c' { $as_echo "$as_me:$LINENO: checking OS_INLINE macro is ANSI compatible" >&5 $as_echo_n "checking OS_INLINE macro is ANSI compatible... " >&6; } orig_CFLAGS="$CFLAGS" @@ -6087,7 +6172,7 @@ cat >>conftest.$ac_ext <<_ACEOF #if defined(__GNUC__) && defined(__APPLE_CC__) -# include <Carbon/Carbon.h> +# include <CoreServices/CoreServices.h> # include <ApplicationServices/ApplicationServices.h> #else # include <ConditionalMacros.h> @@ -6146,12 +6231,84 @@ $as_echo "no, ANSI incompatible" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + { $as_echo "$as_me:$LINENO: checking type ResourceIndex" >&5 +$as_echo_n "checking type ResourceIndex... " >&6; } + orig_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $XX_CFLAGS $XX_ANSIFLAGS" + cat >conftest.$ac_ext <<_ACEOF + + /* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include <CoreServices/CoreServices.h> +# include <ApplicationServices/ApplicationServices.h> +#else +# include <ConditionalMacros.h> +# include <Files.h> +# include <Resources.h> +#endif + + +int +main () +{ + + + ResourceIndex i = 0; + return i; + + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + { $as_echo "$as_me:$LINENO: result: ok" >&5 +$as_echo "ok" >&6; } + CFLAGS="$orig_CFLAGS" + CFLAGS="$CFLAGS -DHAVE_TYPE_RESOURCE_INDEX=1" + +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } + CFLAGS="$orig_CFLAGS" + CFLAGS="$CFLAGS -DHAVE_TYPE_RESOURCE_INDEX=0" + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { $as_echo "$as_me:$LINENO: result: not found" >&5 $as_echo "not found" >&6; } + FT2_EXTRA_LIBS="" LDFLAGS="${orig_LDFLAGS}" CFLAGS="$CFLAGS -DDARWIN_NO_CARBON" fi @@ -6160,7 +6317,7 @@ rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext else - case x$target_os in + case x$host_os in xdarwin*) CFLAGS="$CFLAGS -DDARWIN_NO_CARBON" ;; @@ -6192,7 +6349,7 @@ cat >>conftest.$ac_ext <<_ACEOF #if defined(__GNUC__) && defined(__APPLE_CC__) -# include <Carbon/Carbon.h> +# include <CoreServices/CoreServices.h> # include <ApplicationServices/ApplicationServices.h> #else # include <ConditionalMacros.h> @@ -6293,7 +6450,7 @@ cat >>conftest.$ac_ext <<_ACEOF #if defined(__GNUC__) && defined(__APPLE_CC__) -# include <Carbon/Carbon.h> +# include <CoreServices/CoreServices.h> # include <ApplicationServices/ApplicationServices.h> #else # include <ConditionalMacros.h> @@ -6405,7 +6562,7 @@ cat >>conftest.$ac_ext <<_ACEOF #if defined(__GNUC__) && defined(__APPLE_CC__) -# include <Carbon/Carbon.h> +# include <CoreServices/CoreServices.h> # include <ApplicationServices/ApplicationServices.h> #else # include <ConditionalMacros.h> @@ -6496,7 +6653,7 @@ cat >>conftest.$ac_ext <<_ACEOF #if defined(__GNUC__) && defined(__APPLE_CC__) -# include <Carbon/Carbon.h> +# include <CoreServices/CoreServices.h> # include <ApplicationServices/ApplicationServices.h> #else # include <ConditionalMacros.h> @@ -6596,7 +6753,13 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -#include <Carbon/Carbon.h> +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include <CoreServices/CoreServices.h> +# include <ApplicationServices/ApplicationServices.h> +#else +# include <ConditionalMacros.h> +# include <Files.h> +#endif int @@ -6681,6 +6844,7 @@ esac + case `pwd` in *\ * | *\ *) { $as_echo "$as_me:$LINENO: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 @@ -6689,8 +6853,8 @@ esac -macro_version='2.2.4' -macro_revision='1.2976' +macro_version='2.2.6' +macro_revision='1.3012' @@ -7139,12 +7303,8 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN @@ -7170,13 +7330,13 @@ if test "${lt_cv_nm_interface+set}" = set; then else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:7173: $ac_compile\"" >&5) + (eval echo "\"\$as_me:7333: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 - (eval echo "\"\$as_me:7176: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval echo "\"\$as_me:7336: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 - (eval echo "\"\$as_me:7179: output\"" >&5) + (eval echo "\"\$as_me:7339: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" @@ -7222,7 +7382,7 @@ else lt_cv_sys_max_cmd_len=-1; ;; - cygwin* | mingw*) + cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, @@ -7423,6 +7583,104 @@ esac +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_OBJDUMP+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { $as_echo "$as_me:$LINENO: result: $OBJDUMP" >&5 +$as_echo "$OBJDUMP" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { $as_echo "$as_me:$LINENO: result: $ac_ct_OBJDUMP" >&5 +$as_echo "$ac_ct_OBJDUMP" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + +test -z "$OBJDUMP" && OBJDUMP=objdump + + + + + { $as_echo "$as_me:$LINENO: checking how to recognize dependent libraries" >&5 $as_echo_n "checking how to recognize dependent libraries... " >&6; } @@ -7477,6 +7735,12 @@ mingw* | pw32*) fi ;; +cegcc) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; @@ -7713,12 +7977,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR @@ -7822,12 +8082,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP @@ -7925,12 +8181,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB @@ -8027,7 +8279,7 @@ case $host_os in aix*) symcode='[BCDT]' ;; -cygwin* | mingw* | pw32*) +cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) @@ -8286,7 +8538,7 @@ ia64-*-hpux*) ;; *-*-irix6*) # Find out which ABI we are using. - echo '#line 8289 "configure"' > conftest.$ac_ext + echo '#line 8541 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -8562,12 +8814,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL @@ -8658,12 +8906,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT @@ -8754,12 +8998,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LIPO=$ac_ct_LIPO @@ -8850,12 +9090,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL=$ac_ct_OTOOL @@ -8946,12 +9182,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 @@ -9162,8 +9394,9 @@ ac_res=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } -if test `eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` = yes; then +as_val=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF @@ -9178,7 +9411,7 @@ done enable_win32_dll=yes case $host in -*-*-cygwin* | *-*-mingw* | *-*-pw32*) +*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. set dummy ${ac_tool_prefix}as; ac_word=$2 @@ -9261,12 +9494,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AS=$ac_ct_AS @@ -9357,12 +9586,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL @@ -9453,12 +9678,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP @@ -9980,11 +10201,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:9983: $lt_compile\"" >&5) + (eval echo "\"\$as_me:10204: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:9987: \$? = $ac_status" >&5 + echo "$as_me:10208: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -10052,7 +10273,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; } # PIC is the default for these OSes. ;; - mingw* | cygwin* | pw32* | os2*) + mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style @@ -10067,10 +10288,11 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; } ;; hpux*) - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. case $host_cpu in - hppa*64*|ia64*) + hppa*64*) # +Z the default ;; *) @@ -10120,7 +10342,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; } fi ;; - mingw* | cygwin* | pw32* | os2*) + mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' @@ -10150,11 +10372,25 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; } linux* | k*bsd*-gnu) case $cc_basename in - icc* | ecc* | ifort*) + # old Intel for x86_64 which still supported -KPIC. + ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='--shared' + lt_prog_compiler_static='--static' + ;; pgcc* | pgf77* | pgf90* | pgf95*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) @@ -10304,11 +10540,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:10307: $lt_compile\"" >&5) + (eval echo "\"\$as_me:10543: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:10311: \$? = $ac_status" >&5 + echo "$as_me:10547: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -10409,11 +10645,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:10412: $lt_compile\"" >&5) + (eval echo "\"\$as_me:10648: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:10416: \$? = $ac_status" >&5 + echo "$as_me:10652: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -10464,11 +10700,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:10467: $lt_compile\"" >&5) + (eval echo "\"\$as_me:10703: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:10471: \$? = $ac_status" >&5 + echo "$as_me:10707: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -10568,7 +10804,7 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie extract_expsyms_cmds= case $host_os in - cygwin* | mingw* | pw32*) + cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. @@ -10655,7 +10891,7 @@ _LT_EOF fi ;; - cygwin* | mingw* | pw32*) + cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' @@ -10721,6 +10957,9 @@ _LT_EOF tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + whole_archive_flag_spec= + tmp_sharedflag='--shared' ;; xl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; @@ -10952,6 +11191,7 @@ _LT_EOF fi fi + export_dynamic_flag_spec='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes @@ -11126,7 +11366,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi export_dynamic_flag_spec=-rdynamic ;; - cygwin* | mingw* | pw32*) + cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is @@ -11157,7 +11397,11 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi whole_archive_flag_spec='' link_all_deplibs=yes allow_undefined_flag="$_lt_dar_allow_undefined" - if test "$GCC" = "yes"; then + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=echo archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" @@ -11249,7 +11493,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) - archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' @@ -11991,14 +12235,14 @@ bsdi[45]*) # libtool to hard-code these into programs ;; -cygwin* | mingw* | pw32*) +cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in - yes,cygwin* | yes,mingw* | yes,pw32*) + yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ @@ -12021,7 +12265,7 @@ cygwin* | mingw* | pw32*) soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; - mingw*) + mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` @@ -12494,7 +12738,7 @@ tpf*) version_type=linux need_lib_prefix=no need_version=no - library_name_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes @@ -12671,7 +12915,7 @@ else lt_cv_dlopen_self=yes ;; - mingw* | pw32*) + mingw* | pw32* | cegcc*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; @@ -12748,7 +12992,7 @@ LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test $ac_cv_lib_dl_dlopen = yes; then +if test "x$ac_cv_lib_dl_dlopen" = x""yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else @@ -12846,7 +13090,7 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ fi { $as_echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 $as_echo "$ac_cv_func_shl_load" >&6; } -if test $ac_cv_func_shl_load = yes; then +if test "x$ac_cv_func_shl_load" = x""yes; then lt_cv_dlopen="shl_load" else { $as_echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 @@ -12914,7 +13158,7 @@ LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 $as_echo "$ac_cv_lib_dld_shl_load" >&6; } -if test $ac_cv_lib_dld_shl_load = yes; then +if test "x$ac_cv_lib_dld_shl_load" = x""yes; then lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" else { $as_echo "$as_me:$LINENO: checking for dlopen" >&5 @@ -13002,7 +13246,7 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ fi { $as_echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 $as_echo "$ac_cv_func_dlopen" >&6; } -if test $ac_cv_func_dlopen = yes; then +if test "x$ac_cv_func_dlopen" = x""yes; then lt_cv_dlopen="dlopen" else { $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 @@ -13070,7 +13314,7 @@ LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test $ac_cv_lib_dl_dlopen = yes; then +if test "x$ac_cv_lib_dl_dlopen" = x""yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else { $as_echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 @@ -13138,7 +13382,7 @@ LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 $as_echo "$ac_cv_lib_svld_dlopen" >&6; } -if test $ac_cv_lib_svld_dlopen = yes; then +if test "x$ac_cv_lib_svld_dlopen" = x""yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else { $as_echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 @@ -13206,7 +13450,7 @@ LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 $as_echo "$ac_cv_lib_dld_dld_link" >&6; } -if test $ac_cv_lib_dld_dld_link = yes; then +if test "x$ac_cv_lib_dld_dld_link" = x""yes; then lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" fi @@ -13256,7 +13500,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 13259 "configure" +#line 13503 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -13297,10 +13541,6 @@ else # endif #endif -#ifdef __cplusplus -extern "C" void exit (int); -#endif - void fnord() { int i=42;} int main () { @@ -13316,7 +13556,7 @@ int main () else puts (dlerror ()); - exit (status); + return status; } _LT_EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 @@ -13356,7 +13596,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 13359 "configure" +#line 13599 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -13397,10 +13637,6 @@ else # endif #endif -#ifdef __cplusplus -extern "C" void exit (int); -#endif - void fnord() { int i=42;} int main () { @@ -13416,7 +13652,7 @@ int main () else puts (dlerror ()); - exit (status); + return status; } _LT_EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 @@ -13638,8 +13874,8 @@ _ACEOF case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 -$as_echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( @@ -14030,8 +14266,8 @@ exec 6>&1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by FreeType $as_me 2.3.6, which was -generated by GNU Autoconf 2.62. Invocation command line was +This file was extended by FreeType $as_me 2.3.9, which was +generated by GNU Autoconf 2.63. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -14044,6 +14280,15 @@ on `(hostname || uname -n) 2>/dev/null | sed 1q` _ACEOF +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" @@ -14057,16 +14302,17 @@ ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. -Usage: $0 [OPTIONS] [FILE]... +Usage: $0 [OPTION]... [FILE]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit - -q, --quiet do not print progress messages + -q, --quiet, --silent + do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] + --file=FILE[:TEMPLATE] instantiate the configuration file FILE - --header=FILE[:TEMPLATE] + --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: @@ -14083,8 +14329,8 @@ Report bugs to <bug-autoconf@gnu.org>." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_version="\\ -FreeType config.status 2.3.6 -configured by $0, generated by GNU Autoconf 2.62, +FreeType config.status 2.3.9 +configured by $0, generated by GNU Autoconf 2.63, with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" Copyright (C) 2008 Free Software Foundation, Inc. @@ -14546,7 +14792,8 @@ for ac_last_try in false false false false false :; do $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` = $ac_delim_num; then + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 @@ -14751,9 +14998,9 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 } split(mac1, mac2, "(") #) macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". - prefix = substr(line, 1, index(line, defundef) - 1) print prefix "define", macro P[macro] D[macro] next } else { @@ -14761,7 +15008,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { - print "/*", line, "*/" + print "/*", prefix defundef, macro, "*/" next } } @@ -14785,8 +15032,8 @@ do esac case $ac_mode$ac_tag in :[FHL]*:*);; - :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 -$as_echo "$as_me: error: Invalid tag $ac_tag." >&2;} + :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: invalid tag $ac_tag" >&5 +$as_echo "$as_me: error: invalid tag $ac_tag" >&2;} { (exit 1); exit 1; }; };; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; @@ -15759,8 +16006,8 @@ if test "$no_create" != yes; then $ac_cs_success || { (exit 1); exit 1; } fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:$LINENO: WARNING: Unrecognized options: $ac_unrecognized_opts" >&5 -$as_echo "$as_me: WARNING: Unrecognized options: $ac_unrecognized_opts" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi diff --git a/src/3rdparty/freetype/builds/unix/configure.ac b/src/3rdparty/freetype/builds/unix/configure.ac index ca8f92d..26f40dd 100644 --- a/src/3rdparty/freetype/builds/unix/configure.ac +++ b/src/3rdparty/freetype/builds/unix/configure.ac @@ -2,7 +2,7 @@ # # Process this file with autoconf to produce a configure script. # -# Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by +# Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, @@ -11,13 +11,13 @@ # indicate that you have read the license and understand and accept it # fully. -AC_INIT([FreeType], [2.3.6], [freetype@nongnu.org], [freetype]) +AC_INIT([FreeType], [2.3.9], [freetype@nongnu.org], [freetype]) AC_CONFIG_SRCDIR([ftconfig.in]) # Don't forget to update docs/VERSION.DLL! -version_info='9:17:3' +version_info='9:20:3' AC_SUBST([version_info]) ft_version=`echo $version_info | tr : .` AC_SUBST([ft_version]) @@ -25,9 +25,7 @@ AC_SUBST([ft_version]) # checks for system type -AC_CANONICAL_BUILD AC_CANONICAL_HOST -AC_CANONICAL_TARGET # checks for programs @@ -126,6 +124,70 @@ AC_CHECK_SIZEOF([int]) AC_CHECK_SIZEOF([long]) +# check whether cpp computation of size of int and long in ftconfig.in works + +AC_MSG_CHECKING([cpp computation of bit length in ftconfig.in works]) +orig_CPPFLAGS="${CPPFLAGS}" +CPPFLAGS="-I${srcdir} -I. ${CPPFLAGS}" +ac_clean_files="ft2build.h ftoption.h ftstdlib.h" +touch ft2build.h ftoption.h ftstdlib.h + +cat > conftest.c <<\_ACEOF +#include <limits.h> +#define FT_CONFIG_OPTIONS_H "ftoption.h" +#define FT_CONFIG_STANDARD_LIBRARY_H "ftstdlib.h" +#define FT_UINT_MAX UINT_MAX +#define FT_ULONG_MAX ULONG_MAX +#include "ftconfig.in" +_ACEOF +echo >> conftest.c "#if FT_SIZEOF_INT == "${ac_cv_sizeof_int} +echo >> conftest.c "ac_cpp_ft_sizeof_int="${ac_cv_sizeof_int} +echo >> conftest.c "#endif" +echo >> conftest.c "#if FT_SIZEOF_LONG == "${ac_cv_sizeof_long} +echo >> conftest.c "ac_cpp_ft_sizeof_long="${ac_cv_sizeof_long} +echo >> conftest.c "#endif" + +${CPP} ${CPPFLAGS} conftest.c | ${GREP} ac_cpp_ft > conftest.sh +eval `cat conftest.sh` +${RMF} conftest.c conftest.sh confft2build.h ftoption.h ftstdlib.h + +if test x != "x${ac_cpp_ft_sizeof_int}" \ + -a x != x"${ac_cpp_ft_sizeof_long}"; then + unset ft_use_autoconf_sizeof_types +else + ft_use_autoconf_sizeof_types=yes +fi + +AC_ARG_ENABLE(biarch-config, +[ --enable-biarch-config install biarch ftconfig.h to support multiple + architectures by single file], [], []) + +case :${ft_use_autoconf_sizeof_types}:${enable_biarch_config}: in + :yes:yes:) + AC_MSG_RESULT([broken but use it]) + unset ft_use_autoconf_sizeof_types + ;; + ::no:) + AC_MSG_RESULT([works but ignore it]) + ft_use_autoconf_sizeof_types=yes + ;; + ::yes: | :::) + AC_MSG_RESULT([yes]) + unset ft_use_autoconf_sizeof_types + ;; + *) + AC_MSG_RESULT([no]) + ft_use_autoconf_sizeof_types=yes + ;; +esac + +if test x"${ft_use_autoconf_sizeof_types}" = xyes; then + AC_DEFINE([FT_USE_AUTOCONF_SIZEOF_TYPES]) +fi + +CPPFLAGS="${orig_CPPFLAGS}" + + # checks for library functions # Here we check whether we can use our mmap file component. @@ -155,7 +217,7 @@ AC_SUBST([FTSYS_SRC]) AC_CHECK_FUNCS([memcpy memmove]) -# Check for system zlib +# check for system zlib # don't quote AS_HELP_STRING! AC_ARG_WITH([zlib], @@ -171,8 +233,36 @@ if test x$with_zlib != xno && test -n "$LIBZ"; then fi +# check Apple's `-isysroot' option and duplicate it to LDFLAGS if required -- +# Apple TechNote 2137 recommends to include it in CFLAGS but not in LDFLAGS + +AC_MSG_CHECKING([whether CFLAGS includes -isysroot option]) +case "$CFLAGS" in +*sysroot* ) + AC_MSG_RESULT([yes]) + AC_MSG_CHECKING([whether LDFLAGS includes -isysroot option]) + case "$LDFLAGS" in + *sysroot* ) + AC_MSG_RESULT([yes]) + ;; + *) + AC_MSG_RESULT([no]) + isysroot_dir=`echo ${CFLAGS} | tr '\t' ' ' | sed 's/^.*-isysroot *//;s/ .*//'` + AC_MSG_WARN(-isysroot ${isysroot_dir} is added to LDFLAGS) + LDFLAGS="-isysroot ${isysroot_dir} ${LDFLAGS}" + ;; + esac + ;; +*) + AC_MSG_RESULT([no]) + ;; +esac + + # Whether to use Mac OS resource-based fonts. +ftmac_c="" # src/base/ftmac.c should not be included in makefiles by default + # don't quote AS_HELP_STRING! AC_ARG_WITH([old-mac-fonts], AS_HELP_STRING([--with-old-mac-fonts], @@ -186,7 +276,7 @@ if test x$with_old_mac_fonts = xyes; then AC_LANG_PROGRAM([ #if defined(__GNUC__) && defined(__APPLE_CC__) -# include <Carbon/Carbon.h> +# include <CoreServices/CoreServices.h> # include <ApplicationServices/ApplicationServices.h> #else # include <ConditionalMacros.h> @@ -203,6 +293,7 @@ if test x$with_old_mac_fonts = xyes; then ])], [AC_MSG_RESULT([ok]) + ftmac_c='ftmac.c' AC_MSG_CHECKING([OS_INLINE macro is ANSI compatible]) orig_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $XX_CFLAGS $XX_ANSIFLAGS" @@ -210,7 +301,7 @@ if test x$with_old_mac_fonts = xyes; then AC_LANG_PROGRAM([ #if defined(__GNUC__) && defined(__APPLE_CC__) -# include <Carbon/Carbon.h> +# include <CoreServices/CoreServices.h> # include <ApplicationServices/ApplicationServices.h> #else # include <ConditionalMacros.h> @@ -234,14 +325,45 @@ if test x$with_old_mac_fonts = xyes; then ], [AC_MSG_RESULT([no, ANSI incompatible]) CFLAGS="$orig_CFLAGS" + ]) + AC_MSG_CHECKING([type ResourceIndex]) + orig_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $XX_CFLAGS $XX_ANSIFLAGS" + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([ + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include <CoreServices/CoreServices.h> +# include <ApplicationServices/ApplicationServices.h> +#else +# include <ConditionalMacros.h> +# include <Files.h> +# include <Resources.h> +#endif + + ], + [ + + ResourceIndex i = 0; + return i; + + ])], + [AC_MSG_RESULT([ok]) + CFLAGS="$orig_CFLAGS" + CFLAGS="$CFLAGS -DHAVE_TYPE_RESOURCE_INDEX=1" + ], + [AC_MSG_RESULT([no]) + CFLAGS="$orig_CFLAGS" + CFLAGS="$CFLAGS -DHAVE_TYPE_RESOURCE_INDEX=0" ])], [AC_MSG_RESULT([not found]) + FT2_EXTRA_LIBS="" LDFLAGS="${orig_LDFLAGS}" CFLAGS="$CFLAGS -DDARWIN_NO_CARBON"]) else - case x$target_os in + case x$host_os in xdarwin*) - dnl AC_MSG_WARN([target system is MacOS but configured to build without Carbon]) + dnl AC_MSG_WARN([host system is MacOS but configured to build without Carbon]) CFLAGS="$CFLAGS -DDARWIN_NO_CARBON" ;; *) ;; @@ -262,7 +384,7 @@ elif test x$with_old_mac_fonts = xyes -a x$with_fsspec != x; then AC_LANG_PROGRAM([ #if defined(__GNUC__) && defined(__APPLE_CC__) -# include <Carbon/Carbon.h> +# include <CoreServices/CoreServices.h> # include <ApplicationServices/ApplicationServices.h> #else # include <ConditionalMacros.h> @@ -309,7 +431,7 @@ elif test x$with_old_mac_fonts = xyes -a x$with_fsref != x; then AC_LANG_PROGRAM([ #if defined(__GNUC__) && defined(__APPLE_CC__) -# include <Carbon/Carbon.h> +# include <CoreServices/CoreServices.h> # include <ApplicationServices/ApplicationServices.h> #else # include <ConditionalMacros.h> @@ -372,7 +494,7 @@ elif test x$with_old_mac_fonts = xyes -a x$with_quickdraw_toolbox != x; then AC_LANG_PROGRAM([ #if defined(__GNUC__) && defined(__APPLE_CC__) -# include <Carbon/Carbon.h> +# include <CoreServices/CoreServices.h> # include <ApplicationServices/ApplicationServices.h> #else # include <ConditionalMacros.h> @@ -414,7 +536,7 @@ elif test x$with_old_mac_fonts = xyes -a x$with_quickdraw_carbon != x; then AC_LANG_PROGRAM([ #if defined(__GNUC__) && defined(__APPLE_CC__) -# include <Carbon/Carbon.h> +# include <CoreServices/CoreServices.h> # include <ApplicationServices/ApplicationServices.h> #else # include <ConditionalMacros.h> @@ -465,7 +587,13 @@ elif test x$with_old_mac_fonts = xyes -a x$with_ats != x ; then AC_LINK_IFELSE([ AC_LANG_PROGRAM([ -#include <Carbon/Carbon.h> +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include <CoreServices/CoreServices.h> +# include <ApplicationServices/ApplicationServices.h> +#else +# include <ConditionalMacros.h> +# include <Files.h> +#endif ], [ @@ -499,6 +627,7 @@ case "$CFLAGS" in esac +AC_SUBST([ftmac_c]) AC_SUBST([LIBZ]) AC_SUBST([CFLAGS]) AC_SUBST([LDFLAGS]) diff --git a/src/3rdparty/freetype/builds/unix/configure.raw b/src/3rdparty/freetype/builds/unix/configure.raw index 26a63c7..38c5241 100644 --- a/src/3rdparty/freetype/builds/unix/configure.raw +++ b/src/3rdparty/freetype/builds/unix/configure.raw @@ -2,7 +2,7 @@ # # Process this file with autoconf to produce a configure script. # -# Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by +# Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, @@ -17,7 +17,7 @@ AC_CONFIG_SRCDIR([ftconfig.in]) # Don't forget to update docs/VERSION.DLL! -version_info='9:17:3' +version_info='9:20:3' AC_SUBST([version_info]) ft_version=`echo $version_info | tr : .` AC_SUBST([ft_version]) @@ -25,9 +25,7 @@ AC_SUBST([ft_version]) # checks for system type -AC_CANONICAL_BUILD AC_CANONICAL_HOST -AC_CANONICAL_TARGET # checks for programs @@ -126,6 +124,70 @@ AC_CHECK_SIZEOF([int]) AC_CHECK_SIZEOF([long]) +# check whether cpp computation of size of int and long in ftconfig.in works + +AC_MSG_CHECKING([cpp computation of bit length in ftconfig.in works]) +orig_CPPFLAGS="${CPPFLAGS}" +CPPFLAGS="-I${srcdir} -I. ${CPPFLAGS}" +ac_clean_files="ft2build.h ftoption.h ftstdlib.h" +touch ft2build.h ftoption.h ftstdlib.h + +cat > conftest.c <<\_ACEOF +#include <limits.h> +#define FT_CONFIG_OPTIONS_H "ftoption.h" +#define FT_CONFIG_STANDARD_LIBRARY_H "ftstdlib.h" +#define FT_UINT_MAX UINT_MAX +#define FT_ULONG_MAX ULONG_MAX +#include "ftconfig.in" +_ACEOF +echo >> conftest.c "#if FT_SIZEOF_INT == "${ac_cv_sizeof_int} +echo >> conftest.c "ac_cpp_ft_sizeof_int="${ac_cv_sizeof_int} +echo >> conftest.c "#endif" +echo >> conftest.c "#if FT_SIZEOF_LONG == "${ac_cv_sizeof_long} +echo >> conftest.c "ac_cpp_ft_sizeof_long="${ac_cv_sizeof_long} +echo >> conftest.c "#endif" + +${CPP} ${CPPFLAGS} conftest.c | ${GREP} ac_cpp_ft > conftest.sh +eval `cat conftest.sh` +${RMF} conftest.c conftest.sh confft2build.h ftoption.h ftstdlib.h + +if test x != "x${ac_cpp_ft_sizeof_int}" \ + -a x != x"${ac_cpp_ft_sizeof_long}"; then + unset ft_use_autoconf_sizeof_types +else + ft_use_autoconf_sizeof_types=yes +fi + +AC_ARG_ENABLE(biarch-config, +[ --enable-biarch-config install biarch ftconfig.h to support multiple + architectures by single file], [], []) + +case :${ft_use_autoconf_sizeof_types}:${enable_biarch_config}: in + :yes:yes:) + AC_MSG_RESULT([broken but use it]) + unset ft_use_autoconf_sizeof_types + ;; + ::no:) + AC_MSG_RESULT([works but ignore it]) + ft_use_autoconf_sizeof_types=yes + ;; + ::yes: | :::) + AC_MSG_RESULT([yes]) + unset ft_use_autoconf_sizeof_types + ;; + *) + AC_MSG_RESULT([no]) + ft_use_autoconf_sizeof_types=yes + ;; +esac + +if test x"${ft_use_autoconf_sizeof_types}" = xyes; then + AC_DEFINE([FT_USE_AUTOCONF_SIZEOF_TYPES]) +fi + +CPPFLAGS="${orig_CPPFLAGS}" + + # checks for library functions # Here we check whether we can use our mmap file component. @@ -155,7 +217,7 @@ AC_SUBST([FTSYS_SRC]) AC_CHECK_FUNCS([memcpy memmove]) -# Check for system zlib +# check for system zlib # don't quote AS_HELP_STRING! AC_ARG_WITH([zlib], @@ -171,8 +233,36 @@ if test x$with_zlib != xno && test -n "$LIBZ"; then fi +# check Apple's `-isysroot' option and duplicate it to LDFLAGS if required -- +# Apple TechNote 2137 recommends to include it in CFLAGS but not in LDFLAGS + +AC_MSG_CHECKING([whether CFLAGS includes -isysroot option]) +case "$CFLAGS" in +*sysroot* ) + AC_MSG_RESULT([yes]) + AC_MSG_CHECKING([whether LDFLAGS includes -isysroot option]) + case "$LDFLAGS" in + *sysroot* ) + AC_MSG_RESULT([yes]) + ;; + *) + AC_MSG_RESULT([no]) + isysroot_dir=`echo ${CFLAGS} | tr '\t' ' ' | sed 's/^.*-isysroot *//;s/ .*//'` + AC_MSG_WARN(-isysroot ${isysroot_dir} is added to LDFLAGS) + LDFLAGS="-isysroot ${isysroot_dir} ${LDFLAGS}" + ;; + esac + ;; +*) + AC_MSG_RESULT([no]) + ;; +esac + + # Whether to use Mac OS resource-based fonts. +ftmac_c="" # src/base/ftmac.c should not be included in makefiles by default + # don't quote AS_HELP_STRING! AC_ARG_WITH([old-mac-fonts], AS_HELP_STRING([--with-old-mac-fonts], @@ -186,7 +276,7 @@ if test x$with_old_mac_fonts = xyes; then AC_LANG_PROGRAM([ #if defined(__GNUC__) && defined(__APPLE_CC__) -# include <Carbon/Carbon.h> +# include <CoreServices/CoreServices.h> # include <ApplicationServices/ApplicationServices.h> #else # include <ConditionalMacros.h> @@ -203,6 +293,7 @@ if test x$with_old_mac_fonts = xyes; then ])], [AC_MSG_RESULT([ok]) + ftmac_c='ftmac.c' AC_MSG_CHECKING([OS_INLINE macro is ANSI compatible]) orig_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $XX_CFLAGS $XX_ANSIFLAGS" @@ -210,7 +301,7 @@ if test x$with_old_mac_fonts = xyes; then AC_LANG_PROGRAM([ #if defined(__GNUC__) && defined(__APPLE_CC__) -# include <Carbon/Carbon.h> +# include <CoreServices/CoreServices.h> # include <ApplicationServices/ApplicationServices.h> #else # include <ConditionalMacros.h> @@ -234,14 +325,45 @@ if test x$with_old_mac_fonts = xyes; then ], [AC_MSG_RESULT([no, ANSI incompatible]) CFLAGS="$orig_CFLAGS" + ]) + AC_MSG_CHECKING([type ResourceIndex]) + orig_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $XX_CFLAGS $XX_ANSIFLAGS" + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([ + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include <CoreServices/CoreServices.h> +# include <ApplicationServices/ApplicationServices.h> +#else +# include <ConditionalMacros.h> +# include <Files.h> +# include <Resources.h> +#endif + + ], + [ + + ResourceIndex i = 0; + return i; + + ])], + [AC_MSG_RESULT([ok]) + CFLAGS="$orig_CFLAGS" + CFLAGS="$CFLAGS -DHAVE_TYPE_RESOURCE_INDEX=1" + ], + [AC_MSG_RESULT([no]) + CFLAGS="$orig_CFLAGS" + CFLAGS="$CFLAGS -DHAVE_TYPE_RESOURCE_INDEX=0" ])], [AC_MSG_RESULT([not found]) + FT2_EXTRA_LIBS="" LDFLAGS="${orig_LDFLAGS}" CFLAGS="$CFLAGS -DDARWIN_NO_CARBON"]) else - case x$target_os in + case x$host_os in xdarwin*) - dnl AC_MSG_WARN([target system is MacOS but configured to build without Carbon]) + dnl AC_MSG_WARN([host system is MacOS but configured to build without Carbon]) CFLAGS="$CFLAGS -DDARWIN_NO_CARBON" ;; *) ;; @@ -262,7 +384,7 @@ elif test x$with_old_mac_fonts = xyes -a x$with_fsspec != x; then AC_LANG_PROGRAM([ #if defined(__GNUC__) && defined(__APPLE_CC__) -# include <Carbon/Carbon.h> +# include <CoreServices/CoreServices.h> # include <ApplicationServices/ApplicationServices.h> #else # include <ConditionalMacros.h> @@ -309,7 +431,7 @@ elif test x$with_old_mac_fonts = xyes -a x$with_fsref != x; then AC_LANG_PROGRAM([ #if defined(__GNUC__) && defined(__APPLE_CC__) -# include <Carbon/Carbon.h> +# include <CoreServices/CoreServices.h> # include <ApplicationServices/ApplicationServices.h> #else # include <ConditionalMacros.h> @@ -372,7 +494,7 @@ elif test x$with_old_mac_fonts = xyes -a x$with_quickdraw_toolbox != x; then AC_LANG_PROGRAM([ #if defined(__GNUC__) && defined(__APPLE_CC__) -# include <Carbon/Carbon.h> +# include <CoreServices/CoreServices.h> # include <ApplicationServices/ApplicationServices.h> #else # include <ConditionalMacros.h> @@ -414,7 +536,7 @@ elif test x$with_old_mac_fonts = xyes -a x$with_quickdraw_carbon != x; then AC_LANG_PROGRAM([ #if defined(__GNUC__) && defined(__APPLE_CC__) -# include <Carbon/Carbon.h> +# include <CoreServices/CoreServices.h> # include <ApplicationServices/ApplicationServices.h> #else # include <ConditionalMacros.h> @@ -465,7 +587,13 @@ elif test x$with_old_mac_fonts = xyes -a x$with_ats != x ; then AC_LINK_IFELSE([ AC_LANG_PROGRAM([ -#include <Carbon/Carbon.h> +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include <CoreServices/CoreServices.h> +# include <ApplicationServices/ApplicationServices.h> +#else +# include <ConditionalMacros.h> +# include <Files.h> +#endif ], [ @@ -499,6 +627,7 @@ case "$CFLAGS" in esac +AC_SUBST([ftmac_c]) AC_SUBST([LIBZ]) AC_SUBST([CFLAGS]) AC_SUBST([LDFLAGS]) diff --git a/src/3rdparty/freetype/builds/unix/freetype-config.in b/src/3rdparty/freetype/builds/unix/freetype-config.in index a343522..9606d31 100644 --- a/src/3rdparty/freetype/builds/unix/freetype-config.in +++ b/src/3rdparty/freetype/builds/unix/freetype-config.in @@ -1,6 +1,6 @@ #! /bin/sh # -# Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2008 by +# Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2008, 2009 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, @@ -76,17 +76,7 @@ while test $# -gt 0 ; do exit 0 ;; --ftversion) - major=`grep define @prefix@/include/freetype2/freetype/freetype.h \ - | grep FREETYPE_MAJOR \ - | sed 's/.*[ ]\([0-9][0-9]*\).*/\1/'` - minor=`grep define @prefix@/include/freetype2/freetype/freetype.h \ - | grep FREETYPE_MINOR \ - | sed 's/.*[ ]\([0-9][0-9]*\).*/\1/'` - patch=`grep define @prefix@/include/freetype2/freetype/freetype.h \ - | grep FREETYPE_PATCH \ - | sed 's/.*[ ]\([0-9][0-9]*\).*/\1/'` - echo $major.$minor.$patch - exit 0 + echo_ft_version=yes ;; --cflags) echo_cflags=yes @@ -127,6 +117,19 @@ else fi fi +if test "$echo_ft_version" = "yes" ; then + major=`grep define $includedir/freetype2/freetype/freetype.h \ + | grep FREETYPE_MAJOR \ + | sed 's/.*[ ]\([0-9][0-9]*\).*/\1/'` + minor=`grep define $includedir/freetype2/freetype/freetype.h \ + | grep FREETYPE_MINOR \ + | sed 's/.*[ ]\([0-9][0-9]*\).*/\1/'` + patch=`grep define $includedir/freetype2/freetype/freetype.h \ + | grep FREETYPE_PATCH \ + | sed 's/.*[ ]\([0-9][0-9]*\).*/\1/'` + echo $major.$minor.$patch +fi + if test "$echo_cflags" = "yes" ; then cflags="-I$includedir/freetype2" if test "$includedir" != "/usr/include" ; then diff --git a/src/3rdparty/freetype/builds/unix/freetype2.in b/src/3rdparty/freetype/builds/unix/freetype2.in index 0d7aefa..7e948f4 100644 --- a/src/3rdparty/freetype/builds/unix/freetype2.in +++ b/src/3rdparty/freetype/builds/unix/freetype2.in @@ -7,5 +7,6 @@ Name: FreeType 2 Description: A free, high-quality, and portable font engine. Version: @ft_version@ Requires: -Libs: -L${libdir} -lfreetype @LIBZ@ @FT2_EXTRA_LIBS@ +Libs: -L${libdir} -lfreetype +Libs.private: @LIBZ@ @FT2_EXTRA_LIBS@ Cflags: -I${includedir}/freetype2 -I${includedir} diff --git a/src/3rdparty/freetype/builds/unix/ftconfig.in b/src/3rdparty/freetype/builds/unix/ftconfig.in index 1a96264..0adfdcf 100644 --- a/src/3rdparty/freetype/builds/unix/ftconfig.in +++ b/src/3rdparty/freetype/builds/unix/ftconfig.in @@ -4,7 +4,7 @@ /* */ /* UNIX-specific configuration file (specification only). */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2007 by */ +/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -59,15 +59,63 @@ FT_BEGIN_HEADER #undef HAVE_UNISTD_H #undef HAVE_FCNTL_H +#undef HAVE_STDINT_H + + + /* There are systems (like the Texas Instruments 'C54x) where a `char' */ + /* has 16 bits. ANSI C says that sizeof(char) is always 1. Since an */ + /* `int' has 16 bits also for this system, sizeof(int) gives 1 which */ + /* is probably unexpected. */ + /* */ + /* `CHAR_BIT' (defined in limits.h) gives the number of bits in a */ + /* `char' type. */ + +#ifndef FT_CHAR_BIT +#define FT_CHAR_BIT CHAR_BIT +#endif + + +#undef FT_USE_AUTOCONF_SIZEOF_TYPES +#ifdef FT_USE_AUTOCONF_SIZEOF_TYPES #undef SIZEOF_INT #undef SIZEOF_LONG +#define FT_SIZEOF_INT SIZEOF_INT +#define FT_SIZEOF_LONG SIZEOF_LONG + +#else /* !FT_USE_AUTOCONF_SIZEOF_TYPES */ + + /* Following cpp computation of the bit length of int and long */ + /* is copied from default include/freetype/config/ftconfig.h. */ + /* If any improvement is required for this file, it should be */ + /* applied to the original header file for the builders that */ + /* does not use configure script. */ + + /* The size of an `int' type. */ +#if FT_UINT_MAX == 0xFFFFUL +#define FT_SIZEOF_INT (16 / FT_CHAR_BIT) +#elif FT_UINT_MAX == 0xFFFFFFFFUL +#define FT_SIZEOF_INT (32 / FT_CHAR_BIT) +#elif FT_UINT_MAX > 0xFFFFFFFFUL && FT_UINT_MAX == 0xFFFFFFFFFFFFFFFFUL +#define FT_SIZEOF_INT (64 / FT_CHAR_BIT) +#else +#error "Unsupported size of `int' type!" +#endif + /* The size of a `long' type. A five-byte `long' (as used e.g. on the */ + /* DM642) is recognized but avoided. */ +#if FT_ULONG_MAX == 0xFFFFFFFFUL +#define FT_SIZEOF_LONG (32 / FT_CHAR_BIT) +#elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFUL +#define FT_SIZEOF_LONG (32 / FT_CHAR_BIT) +#elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFFFFFFFUL +#define FT_SIZEOF_LONG (64 / FT_CHAR_BIT) +#else +#error "Unsupported size of `long' type!" +#endif -#define FT_SIZEOF_INT SIZEOF_INT -#define FT_SIZEOF_LONG SIZEOF_LONG +#endif /* !FT_USE_AUTOCONF_SIZEOF_TYPES */ -#define FT_CHAR_BIT CHAR_BIT /* Preferred alignment of data */ #define FT_ALIGNMENT 8 @@ -108,6 +156,14 @@ FT_BEGIN_HEADER #else #define FT_MACINTOSH 1 #endif + +#elif defined( __SC__ ) || defined( __MRC__ ) + /* Classic MacOS compilers */ +#include "ConditionalMacros.h" +#if TARGET_OS_MAC +#define FT_MACINTOSH 1 +#endif + #endif @@ -198,17 +254,12 @@ FT_BEGIN_HEADER #endif /* FT_SIZEOF_LONG == 8 */ -#define FT_BEGIN_STMNT do { -#define FT_END_STMNT } while ( 0 ) -#define FT_DUMMY_STMNT FT_BEGIN_STMNT FT_END_STMNT - - /*************************************************************************/ /* */ /* A 64-bit data type will create compilation problems if you compile */ - /* in strict ANSI mode. To avoid them, we disable their use if */ - /* __STDC__ is defined. You can however ignore this rule by */ - /* defining the FT_CONFIG_OPTION_FORCE_INT64 configuration macro. */ + /* in strict ANSI mode. To avoid them, we disable its use if __STDC__ */ + /* is defined. You can however ignore this rule by defining the */ + /* FT_CONFIG_OPTION_FORCE_INT64 configuration macro. */ /* */ #if defined( FT_LONG64 ) && !defined( FT_CONFIG_OPTION_FORCE_INT64 ) @@ -226,6 +277,82 @@ FT_BEGIN_HEADER #endif /* FT_LONG64 && !FT_CONFIG_OPTION_FORCE_INT64 */ +#define FT_BEGIN_STMNT do { +#define FT_END_STMNT } while ( 0 ) +#define FT_DUMMY_STMNT FT_BEGIN_STMNT FT_END_STMNT + + +#ifndef FT_CONFIG_OPTION_NO_ASSEMBLER + /* Provide assembler fragments for performance-critical functions. */ + /* These must be defined `static __inline__' with GCC. */ + +#ifdef __GNUC__ + +#if defined( __arm__ ) && !defined( __thumb__ ) +#define FT_MULFIX_ASSEMBLER FT_MulFix_arm + + static __inline__ FT_Int32 + FT_MulFix_arm( FT_Int32 a, + FT_Int32 b ) + { + register FT_Int32 t, t2; + + + asm __volatile__ ( + "smull %1, %2, %4, %3\n\t" /* (lo=%1,hi=%2) = a*b */ + "mov %0, %2, asr #31\n\t" /* %0 = (hi >> 31) */ + "add %0, %0, #0x8000\n\t" /* %0 += 0x8000 */ + "adds %1, %1, %0\n\t" /* %1 += %0 */ + "adc %2, %2, #0\n\t" /* %2 += carry */ + "mov %0, %1, lsr #16\n\t" /* %0 = %1 >> 16 */ + "orr %0, %0, %2, lsl #16\n\t" /* %0 |= %2 << 16 */ + : "=r"(a), "=&r"(t2), "=&r"(t) + : "r"(a), "r"(b) ); + return a; + } + +#endif /* __arm__ && !__thumb__ */ + +#if defined( i386 ) +#define FT_MULFIX_ASSEMBLER FT_MulFix_i386 + + static __inline__ FT_Int32 + FT_MulFix_i386( FT_Int32 a, + FT_Int32 b ) + { + register FT_Int32 result; + + + __asm__ __volatile__ ( + "imul %%edx\n" + "movl %%edx, %%ecx\n" + "sarl $31, %%ecx\n" + "addl $0x8000, %%ecx\n" + "addl %%ecx, %%eax\n" + "adcl $0, %%edx\n" + "shrl $16, %%eax\n" + "shll $16, %%edx\n" + "addl %%edx, %%eax\n" + : "=a"(result), "+d"(b) + : "a"(a) + : "%ecx" ); + return result; + } + +#endif /* i386 */ + +#endif /* __GNUC__ */ + +#endif /* !FT_CONFIG_OPTION_NO_ASSEMBLER */ + + +#ifdef FT_CONFIG_OPTION_INLINE_MULFIX +#ifdef FT_MULFIX_ASSEMBLER +#define FT_MULFIX_INLINED FT_MULFIX_ASSEMBLER +#endif +#endif + + #ifdef FT_MAKE_OPTION_SINGLE_OBJECT #define FT_LOCAL( x ) static x diff --git a/src/3rdparty/freetype/builds/unix/ftsystem.c b/src/3rdparty/freetype/builds/unix/ftsystem.c index 40fa8d0..5c38090 100644 --- a/src/3rdparty/freetype/builds/unix/ftsystem.c +++ b/src/3rdparty/freetype/builds/unix/ftsystem.c @@ -4,7 +4,7 @@ /* */ /* Unix-specific FreeType low-level system interface (body). */ /* */ -/* Copyright 1996-2001, 2002, 2004, 2005, 2006, 2007 by */ +/* Copyright 1996-2001, 2002, 2004, 2005, 2006, 2007, 2008 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -280,7 +280,12 @@ /* */ if ( stat_buf.st_size > LONG_MAX ) { - FT_ERROR(( "FT_Stream_Open: file is too big" )); + FT_ERROR(( "FT_Stream_Open: file is too big\n" )); + goto Fail_Map; + } + else if ( stat_buf.st_size == 0 ) + { + FT_ERROR(( "FT_Stream_Open: zero-length file\n" )); goto Fail_Map; } diff --git a/src/3rdparty/freetype/builds/unix/ltmain.sh b/src/3rdparty/freetype/builds/unix/ltmain.sh index 174e492..b36c4ad 100755 --- a/src/3rdparty/freetype/builds/unix/ltmain.sh +++ b/src/3rdparty/freetype/builds/unix/ltmain.sh @@ -1,6 +1,6 @@ # Generated from ltmain.m4sh. -# ltmain.sh (GNU libtool) 2.2.4 +# ltmain.sh (GNU libtool) 2.2.6 # Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc. @@ -65,7 +65,7 @@ # compiler: $LTCC # compiler flags: $LTCFLAGS # linker: $LD (gnu? $with_gnu_ld) -# $progname: (GNU libtool) 2.2.4 +# $progname: (GNU libtool) 2.2.6 # automake: $automake_version # autoconf: $autoconf_version # @@ -73,9 +73,9 @@ PROGRAM=ltmain.sh PACKAGE=libtool -VERSION=2.2.4 +VERSION=2.2.6 TIMESTAMP="" -package_revision=1.2976 +package_revision=1.3012 # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then @@ -805,7 +805,7 @@ func_enable_tag () case $host in - *cygwin* | *mingw* | *pw32*) + *cygwin* | *mingw* | *pw32* | *cegcc*) # don't eliminate duplications in $postdeps and $predeps opt_duplicate_compiler_generated_deps=: ;; @@ -893,8 +893,9 @@ $opt_help || { # determined imposters. func_lalib_p () { - $SED -e 4q "$1" 2>/dev/null \ - | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 + test -f "$1" && + $SED -e 4q "$1" 2>/dev/null \ + | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 } # func_lalib_unsafe_p file @@ -907,7 +908,7 @@ func_lalib_p () func_lalib_unsafe_p () { lalib_p=no - if test -r "$1" && exec 5<&0 <"$1"; then + if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then for lalib_p_l in 1 2 3 4 do read lalib_p_line @@ -1275,7 +1276,7 @@ func_mode_compile () # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in - cygwin* | mingw* | pw32* | os2*) + cygwin* | mingw* | pw32* | os2* | cegcc*) pic_mode=default ;; esac @@ -2046,7 +2047,7 @@ func_mode_install () 'exit $?' tstripme="$stripme" case $host_os in - cygwin* | mingw* | pw32*) + cygwin* | mingw* | pw32* | cegcc*) case $realname in *.dll.a) tstripme="" @@ -2152,7 +2153,7 @@ func_mode_install () # Do a test to see if this is really a libtool program. case $host in - *cygwin*|*mingw*) + *cygwin* | *mingw*) if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" wrapper=$func_ltwrapper_scriptname_result @@ -2358,7 +2359,7 @@ extern \"C\" { $RM $export_symbols eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in - *cygwin* | *mingw* ) + *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; @@ -2370,7 +2371,7 @@ extern \"C\" { eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in - *cygwin | *mingw* ) + *cygwin | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; @@ -2426,7 +2427,7 @@ typedef struct { } lt_dlsymlist; " case $host in - *cygwin* | *mingw* ) + *cygwin* | *mingw* | *cegcc* ) $ECHO >> "$output_objdir/$my_dlsyms" "\ /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation @@ -2512,7 +2513,7 @@ static const void *lt_preloaded_setup() { # Transform the symbol file into the correct name. symfileobj="$output_objdir/${my_outputname}S.$objext" case $host in - *cygwin* | *mingw* ) + *cygwin* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` @@ -2691,25 +2692,16 @@ func_extract_archives () -# func_emit_wrapper arg +# func_emit_wrapper_part1 [arg=no] # -# emit a libtool wrapper script on stdout -# don't directly open a file because we may want to -# incorporate the script contents within a cygwin/mingw -# wrapper executable. Must ONLY be called from within -# func_mode_link because it depends on a number of variable -# set therein. -# -# arg is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR -# variable will take. If 'yes', then the emitted script -# will assume that the directory in which it is stored is -# the '.lib' directory. This is a cygwin/mingw-specific -# behavior. -func_emit_wrapper () +# Emit the first part of a libtool wrapper script on stdout. +# For more information, see the description associated with +# func_emit_wrapper(), below. +func_emit_wrapper_part1 () { - func_emit_wrapper_arg1=no + func_emit_wrapper_part1_arg1=no if test -n "$1" ; then - func_emit_wrapper_arg1=$1 + func_emit_wrapper_part1_arg1=$1 fi $ECHO "\ @@ -2794,10 +2786,27 @@ else file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` done +" +} +# end: func_emit_wrapper_part1 + +# func_emit_wrapper_part2 [arg=no] +# +# Emit the second part of a libtool wrapper script on stdout. +# For more information, see the description associated with +# func_emit_wrapper(), below. +func_emit_wrapper_part2 () +{ + func_emit_wrapper_part2_arg1=no + if test -n "$1" ; then + func_emit_wrapper_part2_arg1=$1 + fi + + $ECHO "\ # Usually 'no', except on cygwin/mingw when embedded into # the cwrapper. - WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then # special case for '.' if test \"\$thisdir\" = \".\"; then @@ -2888,7 +2897,7 @@ else " case $host in # Backslashes separate directories on plain windows - *-*-mingw | *-*-os2*) + *-*-mingw | *-*-os2* | *-cegcc*) $ECHO "\ exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} " @@ -2914,7 +2923,207 @@ else fi\ " } -# end: func_emit_wrapper +# end: func_emit_wrapper_part2 + + +# func_emit_wrapper [arg=no] +# +# Emit a libtool wrapper script on stdout. +# Don't directly open a file because we may want to +# incorporate the script contents within a cygwin/mingw +# wrapper executable. Must ONLY be called from within +# func_mode_link because it depends on a number of variables +# set therein. +# +# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR +# variable will take. If 'yes', then the emitted script +# will assume that the directory in which it is stored is +# the $objdir directory. This is a cygwin/mingw-specific +# behavior. +func_emit_wrapper () +{ + func_emit_wrapper_arg1=no + if test -n "$1" ; then + func_emit_wrapper_arg1=$1 + fi + + # split this up so that func_emit_cwrapperexe_src + # can call each part independently. + func_emit_wrapper_part1 "${func_emit_wrapper_arg1}" + func_emit_wrapper_part2 "${func_emit_wrapper_arg1}" +} + + +# func_to_host_path arg +# +# Convert paths to host format when used with build tools. +# Intended for use with "native" mingw (where libtool itself +# is running under the msys shell), or in the following cross- +# build environments: +# $build $host +# mingw (msys) mingw [e.g. native] +# cygwin mingw +# *nix + wine mingw +# where wine is equipped with the `winepath' executable. +# In the native mingw case, the (msys) shell automatically +# converts paths for any non-msys applications it launches, +# but that facility isn't available from inside the cwrapper. +# Similar accommodations are necessary for $host mingw and +# $build cygwin. Calling this function does no harm for other +# $host/$build combinations not listed above. +# +# ARG is the path (on $build) that should be converted to +# the proper representation for $host. The result is stored +# in $func_to_host_path_result. +func_to_host_path () +{ + func_to_host_path_result="$1" + if test -n "$1" ; then + case $host in + *mingw* ) + lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + case $build in + *mingw* ) # actually, msys + # awkward: cmd appends spaces to result + lt_sed_strip_trailing_spaces="s/[ ]*\$//" + func_to_host_path_tmp1=`( cmd //c echo "$1" |\ + $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` + func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ + $SED -e "$lt_sed_naive_backslashify"` + ;; + *cygwin* ) + func_to_host_path_tmp1=`cygpath -w "$1"` + func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ + $SED -e "$lt_sed_naive_backslashify"` + ;; + * ) + # Unfortunately, winepath does not exit with a non-zero + # error code, so we are forced to check the contents of + # stdout. On the other hand, if the command is not + # found, the shell will set an exit code of 127 and print + # *an error message* to stdout. So we must check for both + # error code of zero AND non-empty stdout, which explains + # the odd construction: + func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null` + if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then + func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ + $SED -e "$lt_sed_naive_backslashify"` + else + # Allow warning below. + func_to_host_path_result="" + fi + ;; + esac + if test -z "$func_to_host_path_result" ; then + func_error "Could not determine host path corresponding to" + func_error " '$1'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback: + func_to_host_path_result="$1" + fi + ;; + esac + fi +} +# end: func_to_host_path + +# func_to_host_pathlist arg +# +# Convert pathlists to host format when used with build tools. +# See func_to_host_path(), above. This function supports the +# following $build/$host combinations (but does no harm for +# combinations not listed here): +# $build $host +# mingw (msys) mingw [e.g. native] +# cygwin mingw +# *nix + wine mingw +# +# Path separators are also converted from $build format to +# $host format. If ARG begins or ends with a path separator +# character, it is preserved (but converted to $host format) +# on output. +# +# ARG is a pathlist (on $build) that should be converted to +# the proper representation on $host. The result is stored +# in $func_to_host_pathlist_result. +func_to_host_pathlist () +{ + func_to_host_pathlist_result="$1" + if test -n "$1" ; then + case $host in + *mingw* ) + lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + # Remove leading and trailing path separator characters from + # ARG. msys behavior is inconsistent here, cygpath turns them + # into '.;' and ';.', and winepath ignores them completely. + func_to_host_pathlist_tmp2="$1" + # Once set for this call, this variable should not be + # reassigned. It is used in tha fallback case. + func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\ + $SED -e 's|^:*||' -e 's|:*$||'` + case $build in + *mingw* ) # Actually, msys. + # Awkward: cmd appends spaces to result. + lt_sed_strip_trailing_spaces="s/[ ]*\$//" + func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\ + $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` + func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ + $SED -e "$lt_sed_naive_backslashify"` + ;; + *cygwin* ) + func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"` + func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ + $SED -e "$lt_sed_naive_backslashify"` + ;; + * ) + # unfortunately, winepath doesn't convert pathlists + func_to_host_pathlist_result="" + func_to_host_pathlist_oldIFS=$IFS + IFS=: + for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do + IFS=$func_to_host_pathlist_oldIFS + if test -n "$func_to_host_pathlist_f" ; then + func_to_host_path "$func_to_host_pathlist_f" + if test -n "$func_to_host_path_result" ; then + if test -z "$func_to_host_pathlist_result" ; then + func_to_host_pathlist_result="$func_to_host_path_result" + else + func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result" + fi + fi + fi + IFS=: + done + IFS=$func_to_host_pathlist_oldIFS + ;; + esac + if test -z "$func_to_host_pathlist_result" ; then + func_error "Could not determine the host path(s) corresponding to" + func_error " '$1'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback. This may break if $1 contains DOS-style drive + # specifications. The fix is not to complicate the expression + # below, but for the user to provide a working wine installation + # with winepath so that path translation in the cross-to-mingw + # case works properly. + lt_replace_pathsep_nix_to_dos="s|:|;|g" + func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\ + $SED -e "$lt_replace_pathsep_nix_to_dos"` + fi + # Now, add the leading and trailing path separators back + case "$1" in + :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result" + ;; + esac + case "$1" in + *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;" + ;; + esac + ;; + esac + fi +} +# end: func_to_host_pathlist # func_emit_cwrapperexe_src # emit the source code for a wrapper executable on stdout @@ -2951,6 +3160,12 @@ EOF # include <stdint.h> # ifdef __CYGWIN__ # include <io.h> +# define HAVE_SETENV +# ifdef __STRICT_ANSI__ +char *realpath (const char *, char *); +int putenv (char *); +int setenv (const char *, const char *, int); +# endif # endif #endif #include <malloc.h> @@ -3057,29 +3272,105 @@ int make_executable (const char *path); int check_executable (const char *path); char *strendzap (char *str, const char *pat); void lt_fatal (const char *message, ...); - -static const char *script_text = +void lt_setenv (const char *name, const char *value); +char *lt_extend_str (const char *orig_value, const char *add, int to_end); +void lt_opt_process_env_set (const char *arg); +void lt_opt_process_env_prepend (const char *arg); +void lt_opt_process_env_append (const char *arg); +int lt_split_name_value (const char *arg, char** name, char** value); +void lt_update_exe_path (const char *name, const char *value); +void lt_update_lib_path (const char *name, const char *value); + +static const char *script_text_part1 = EOF - func_emit_wrapper yes | + func_emit_wrapper_part1 yes | + $SED -e 's/\([\\"]\)/\\\1/g' \ + -e 's/^/ "/' -e 's/$/\\n"/' + echo ";" + cat <<EOF + +static const char *script_text_part2 = +EOF + func_emit_wrapper_part2 yes | $SED -e 's/\([\\"]\)/\\\1/g' \ -e 's/^/ "/' -e 's/$/\\n"/' echo ";" cat <<EOF const char * MAGIC_EXE = "$magic_exe"; +const char * LIB_PATH_VARNAME = "$shlibpath_var"; +EOF + + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + func_to_host_pathlist "$temp_rpath" + cat <<EOF +const char * LIB_PATH_VALUE = "$func_to_host_pathlist_result"; +EOF + else + cat <<"EOF" +const char * LIB_PATH_VALUE = ""; +EOF + fi + + if test -n "$dllsearchpath"; then + func_to_host_pathlist "$dllsearchpath:" + cat <<EOF +const char * EXE_PATH_VARNAME = "PATH"; +const char * EXE_PATH_VALUE = "$func_to_host_pathlist_result"; +EOF + else + cat <<"EOF" +const char * EXE_PATH_VARNAME = ""; +const char * EXE_PATH_VALUE = ""; +EOF + fi + + if test "$fast_install" = yes; then + cat <<EOF +const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */ +EOF + else + cat <<EOF +const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */ +EOF + fi + + + cat <<"EOF" + +#define LTWRAPPER_OPTION_PREFIX "--lt-" +#define LTWRAPPER_OPTION_PREFIX_LENGTH 5 + +static const size_t opt_prefix_len = LTWRAPPER_OPTION_PREFIX_LENGTH; +static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX; + +static const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script"; + +static const size_t env_set_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 7; +static const char *env_set_opt = LTWRAPPER_OPTION_PREFIX "env-set"; + /* argument is putenv-style "foo=bar", value of foo is set to bar */ + +static const size_t env_prepend_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 11; +static const char *env_prepend_opt = LTWRAPPER_OPTION_PREFIX "env-prepend"; + /* argument is putenv-style "foo=bar", new value of foo is bar${foo} */ + +static const size_t env_append_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 10; +static const char *env_append_opt = LTWRAPPER_OPTION_PREFIX "env-append"; + /* argument is putenv-style "foo=bar", new value of foo is ${foo}bar */ int main (int argc, char *argv[]) { char **newargz; + int newargc; char *tmp_pathspec; char *actual_cwrapper_path; - char *shwrapper_name; + char *actual_cwrapper_name; + char *target_name; + char *lt_argv_zero; intptr_t rval = 127; - FILE *shwrapper; - const char *dumpscript_opt = "--lt-dump-script"; int i; program_name = (char *) xstrdup (base_name (argv[0])); @@ -3099,38 +3390,14 @@ EOF ;; esac - cat <<EOF - printf ("%s", script_text); + cat <<"EOF" + printf ("%s", script_text_part1); + printf ("%s", script_text_part2); return 0; } } - newargz = XMALLOC (char *, argc + 2); -EOF - - if test -n "$TARGETSHELL" ; then - # no path translation at all - lt_newargv0=$TARGETSHELL - else - case "$host" in - *mingw* ) - # awkward: cmd appends spaces to result - lt_sed_strip_trailing_spaces="s/[ ]*\$//" - lt_newargv0=`( cmd //c echo $SHELL | $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo $SHELL` - case $lt_newargv0 in - *.exe | *.EXE) ;; - *) lt_newargv0=$lt_newargv0.exe ;; - esac - ;; - * ) lt_newargv0=$SHELL ;; - esac - fi - - cat <<EOF - newargz[0] = (char *) xstrdup ("$lt_newargv0"); -EOF - - cat <<"EOF" + newargz = XMALLOC (char *, argc + 1); tmp_pathspec = find_executable (argv[0]); if (tmp_pathspec == NULL) lt_fatal ("Couldn't find %s", argv[0]); @@ -3142,39 +3409,60 @@ EOF actual_cwrapper_path)); XFREE (tmp_pathspec); - shwrapper_name = (char *) xstrdup (base_name (actual_cwrapper_path)); - strendzap (actual_cwrapper_path, shwrapper_name); - - /* shwrapper_name transforms */ - strendzap (shwrapper_name, ".exe"); - tmp_pathspec = XMALLOC (char, (strlen (shwrapper_name) + - strlen ("_ltshwrapperTMP") + 1)); - strcpy (tmp_pathspec, shwrapper_name); - strcat (tmp_pathspec, "_ltshwrapperTMP"); - XFREE (shwrapper_name); - shwrapper_name = tmp_pathspec; + actual_cwrapper_name = xstrdup( base_name (actual_cwrapper_path)); + strendzap (actual_cwrapper_path, actual_cwrapper_name); + + /* wrapper name transforms */ + strendzap (actual_cwrapper_name, ".exe"); + tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1); + XFREE (actual_cwrapper_name); + actual_cwrapper_name = tmp_pathspec; tmp_pathspec = 0; - LTWRAPPER_DEBUGPRINTF (("(main) libtool shell wrapper name: %s\n", - shwrapper_name)); + + /* target_name transforms -- use actual target program name; might have lt- prefix */ + target_name = xstrdup (base_name (TARGET_PROGRAM_NAME)); + strendzap (target_name, ".exe"); + tmp_pathspec = lt_extend_str (target_name, ".exe", 1); + XFREE (target_name); + target_name = tmp_pathspec; + tmp_pathspec = 0; + + LTWRAPPER_DEBUGPRINTF (("(main) libtool target name: %s\n", + target_name)); EOF cat <<EOF - newargz[1] = + newargz[0] = XMALLOC (char, (strlen (actual_cwrapper_path) + - strlen ("$objdir") + 1 + strlen (shwrapper_name) + 1)); - strcpy (newargz[1], actual_cwrapper_path); - strcat (newargz[1], "$objdir"); - strcat (newargz[1], "/"); - strcat (newargz[1], shwrapper_name); + strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1)); + strcpy (newargz[0], actual_cwrapper_path); + strcat (newargz[0], "$objdir"); + strcat (newargz[0], "/"); EOF + cat <<"EOF" + /* stop here, and copy so we don't have to do this twice */ + tmp_pathspec = xstrdup (newargz[0]); + + /* do NOT want the lt- prefix here, so use actual_cwrapper_name */ + strcat (newargz[0], actual_cwrapper_name); + + /* DO want the lt- prefix here if it exists, so use target_name */ + lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1); + XFREE (tmp_pathspec); + tmp_pathspec = NULL; +EOF case $host_os in mingw*) cat <<"EOF" { char* p; - while ((p = strchr (newargz[1], '\\')) != NULL) + while ((p = strchr (newargz[0], '\\')) != NULL) + { + *p = '/'; + } + while ((p = strchr (lt_argv_zero, '\\')) != NULL) { *p = '/'; } @@ -3184,55 +3472,114 @@ EOF esac cat <<"EOF" - XFREE (shwrapper_name); + XFREE (target_name); XFREE (actual_cwrapper_path); + XFREE (actual_cwrapper_name); - /* always write in binary mode */ - if ((shwrapper = fopen (newargz[1], FOPEN_WB)) == 0) - { - lt_fatal ("Could not open %s for writing", newargz[1]); - } - fprintf (shwrapper, "%s", script_text); - fclose (shwrapper); - - make_executable (newargz[1]); + lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */ + lt_setenv ("DUALCASE", "1"); /* for MSK sh */ + lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE); + lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE); + newargc=0; for (i = 1; i < argc; i++) - newargz[i + 1] = xstrdup (argv[i]); - newargz[argc + 1] = NULL; + { + if (strncmp (argv[i], env_set_opt, env_set_opt_len) == 0) + { + if (argv[i][env_set_opt_len] == '=') + { + const char *p = argv[i] + env_set_opt_len + 1; + lt_opt_process_env_set (p); + } + else if (argv[i][env_set_opt_len] == '\0' && i + 1 < argc) + { + lt_opt_process_env_set (argv[++i]); /* don't copy */ + } + else + lt_fatal ("%s missing required argument", env_set_opt); + continue; + } + if (strncmp (argv[i], env_prepend_opt, env_prepend_opt_len) == 0) + { + if (argv[i][env_prepend_opt_len] == '=') + { + const char *p = argv[i] + env_prepend_opt_len + 1; + lt_opt_process_env_prepend (p); + } + else if (argv[i][env_prepend_opt_len] == '\0' && i + 1 < argc) + { + lt_opt_process_env_prepend (argv[++i]); /* don't copy */ + } + else + lt_fatal ("%s missing required argument", env_prepend_opt); + continue; + } + if (strncmp (argv[i], env_append_opt, env_append_opt_len) == 0) + { + if (argv[i][env_append_opt_len] == '=') + { + const char *p = argv[i] + env_append_opt_len + 1; + lt_opt_process_env_append (p); + } + else if (argv[i][env_append_opt_len] == '\0' && i + 1 < argc) + { + lt_opt_process_env_append (argv[++i]); /* don't copy */ + } + else + lt_fatal ("%s missing required argument", env_append_opt); + continue; + } + if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0) + { + /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX + namespace, but it is not one of the ones we know about and + have already dealt with, above (inluding dump-script), then + report an error. Otherwise, targets might begin to believe + they are allowed to use options in the LTWRAPPER_OPTION_PREFIX + namespace. The first time any user complains about this, we'll + need to make LTWRAPPER_OPTION_PREFIX a configure-time option + or a configure.ac-settable value. + */ + lt_fatal ("Unrecognized option in %s namespace: '%s'", + ltwrapper_option_prefix, argv[i]); + } + /* otherwise ... */ + newargz[++newargc] = xstrdup (argv[i]); + } + newargz[++newargc] = NULL; - for (i = 0; i < argc + 1; i++) + LTWRAPPER_DEBUGPRINTF (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? lt_argv_zero : "<NULL>"))); + for (i = 0; i < newargc; i++) { - LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, newargz[i])); + LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, (newargz[i] ? newargz[i] : "<NULL>"))); } EOF case $host_os in mingw*) - cat <<EOF + cat <<"EOF" /* execv doesn't actually work on mingw as expected on unix */ - rval = _spawnv (_P_WAIT, "$lt_newargv0", (const char * const *) newargz); + rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); if (rval == -1) { /* failed to start process */ - LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"$lt_newargv0\": errno = %d\n", errno)); + LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno)); return 127; } return rval; -} EOF ;; *) - cat <<EOF - execv ("$lt_newargv0", newargz); + cat <<"EOF" + execv (lt_argv_zero, newargz); return rval; /* =127, but avoids unused variable warning */ -} EOF ;; esac cat <<"EOF" +} void * xmalloc (size_t num) @@ -3506,6 +3853,177 @@ lt_fatal (const char *message, ...) lt_error_core (EXIT_FAILURE, "FATAL", message, ap); va_end (ap); } + +void +lt_setenv (const char *name, const char *value) +{ + LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n", + (name ? name : "<NULL>"), + (value ? value : "<NULL>"))); + { +#ifdef HAVE_SETENV + /* always make a copy, for consistency with !HAVE_SETENV */ + char *str = xstrdup (value); + setenv (name, str, 1); +#else + int len = strlen (name) + 1 + strlen (value) + 1; + char *str = XMALLOC (char, len); + sprintf (str, "%s=%s", name, value); + if (putenv (str) != EXIT_SUCCESS) + { + XFREE (str); + } +#endif + } +} + +char * +lt_extend_str (const char *orig_value, const char *add, int to_end) +{ + char *new_value; + if (orig_value && *orig_value) + { + int orig_value_len = strlen (orig_value); + int add_len = strlen (add); + new_value = XMALLOC (char, add_len + orig_value_len + 1); + if (to_end) + { + strcpy (new_value, orig_value); + strcpy (new_value + orig_value_len, add); + } + else + { + strcpy (new_value, add); + strcpy (new_value + add_len, orig_value); + } + } + else + { + new_value = xstrdup (add); + } + return new_value; +} + +int +lt_split_name_value (const char *arg, char** name, char** value) +{ + const char *p; + int len; + if (!arg || !*arg) + return 1; + + p = strchr (arg, (int)'='); + + if (!p) + return 1; + + *value = xstrdup (++p); + + len = strlen (arg) - strlen (*value); + *name = XMALLOC (char, len); + strncpy (*name, arg, len-1); + (*name)[len - 1] = '\0'; + + return 0; +} + +void +lt_opt_process_env_set (const char *arg) +{ + char *name = NULL; + char *value = NULL; + + if (lt_split_name_value (arg, &name, &value) != 0) + { + XFREE (name); + XFREE (value); + lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg); + } + + lt_setenv (name, value); + XFREE (name); + XFREE (value); +} + +void +lt_opt_process_env_prepend (const char *arg) +{ + char *name = NULL; + char *value = NULL; + char *new_value = NULL; + + if (lt_split_name_value (arg, &name, &value) != 0) + { + XFREE (name); + XFREE (value); + lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg); + } + + new_value = lt_extend_str (getenv (name), value, 0); + lt_setenv (name, new_value); + XFREE (new_value); + XFREE (name); + XFREE (value); +} + +void +lt_opt_process_env_append (const char *arg) +{ + char *name = NULL; + char *value = NULL; + char *new_value = NULL; + + if (lt_split_name_value (arg, &name, &value) != 0) + { + XFREE (name); + XFREE (value); + lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg); + } + + new_value = lt_extend_str (getenv (name), value, 1); + lt_setenv (name, new_value); + XFREE (new_value); + XFREE (name); + XFREE (value); +} + +void +lt_update_exe_path (const char *name, const char *value) +{ + LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n", + (name ? name : "<NULL>"), + (value ? value : "<NULL>"))); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + /* some systems can't cope with a ':'-terminated path #' */ + int len = strlen (new_value); + while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) + { + new_value[len-1] = '\0'; + } + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +void +lt_update_lib_path (const char *name, const char *value) +{ + LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n", + (name ? name : "<NULL>"), + (value ? value : "<NULL>"))); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + lt_setenv (name, new_value); + XFREE (new_value); + } +} + + EOF } # end: func_emit_cwrapperexe_src @@ -3515,7 +4033,7 @@ func_mode_link () { $opt_debug case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # which system we are compiling for in order to pass an extra @@ -3959,6 +4477,13 @@ func_mode_link () -L*) func_stripname '-L' '' "$arg" dir=$func_stripname_result + if test -z "$dir"; then + if test "$#" -gt 0; then + func_fatal_error "require no space between \`-L' and \`$1'" + else + func_fatal_error "need path for \`-L' option" + fi + fi # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; @@ -3977,14 +4502,16 @@ func_mode_link () ;; esac case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; + ::) dllsearchpath=$dir;; *) dllsearchpath="$dllsearchpath:$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; *) dllsearchpath="$dllsearchpath:$testbindir";; esac ;; @@ -3995,7 +4522,7 @@ func_mode_link () -l*) if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*) + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*) # These systems don't actually have a C or math library (as such) continue ;; @@ -4072,7 +4599,7 @@ func_mode_link () -no-install) case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin*) + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. func_warning "\`-no-install' is ignored for $host" @@ -5029,7 +5556,7 @@ func_mode_link () if test -n "$library_names" && { test "$use_static_libs" = no || test -z "$old_library"; }; then case $host in - *cygwin* | *mingw*) + *cygwin* | *mingw* | *cegcc*) # No point in relinking DLLs because paths are not encoded notinst_deplibs="$notinst_deplibs $lib" need_relink=no @@ -5099,7 +5626,7 @@ func_mode_link () elif test -n "$soname_spec"; then # bleh windows case $host in - *cygwin* | mingw*) + *cygwin* | mingw* | *cegcc*) func_arith $current - $age major=$func_arith_result versuffix="-$major" @@ -5878,7 +6405,7 @@ func_mode_link () tempremovelist=`$ECHO "$output_objdir/*"` for p in $tempremovelist; do case $p in - *.$objext) + *.$objext | *.gcno) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) if test "X$precious_files_regex" != "X"; then @@ -5949,7 +6476,7 @@ func_mode_link () if test "$build_libtool_libs" = yes; then if test -n "$rpath"; then case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) @@ -6448,7 +6975,7 @@ EOF orig_export_symbols= case $host_os in - cygwin* | mingw*) + cygwin* | mingw* | cegcc*) if test -n "$export_symbols" && test -z "$export_symbols_regex"; then # exporting using user supplied symfile if test "x`$SED 1q $export_symbols`" != xEXPORTS; then @@ -7073,14 +7600,16 @@ EOF esac fi case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; + ::) dllsearchpath=$libdir;; *) dllsearchpath="$dllsearchpath:$libdir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; *) dllsearchpath="$dllsearchpath:$testbindir";; esac ;; @@ -7150,6 +7679,10 @@ EOF wrappers_required=no fi ;; + *cegcc) + # Disable wrappers for cegcc, we are cross compiling anyway. + wrappers_required=no + ;; *) if test "$need_relink" = no || test "$build_libtool_libs" != yes; then wrappers_required=no @@ -7302,11 +7835,10 @@ EOF func_emit_cwrapperexe_src > $cwrappersource - # we should really use a build-platform specific compiler - # here, but OTOH, the wrappers (shell script and this C one) - # are only useful if you want to execute the "real" binary. - # Since the "real" binary is built for $host, then this - # wrapper might as well be built for $host, too. + # The wrapper executable is built using the $host compiler, + # because it contains $host paths and files. If cross- + # compiling, it, like the target executable, must be + # executed on the $host or under an emulation environment. $opt_dry_run || { $LTCC $LTCFLAGS -o $cwrapper $cwrappersource $STRIP $cwrapper @@ -7591,7 +8123,7 @@ EOF # place dlname in correct position for cygwin tdlname=$dlname case $host,$output,$installed,$module,$dlname in - *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; esac $ECHO > $output "\ # $outputname - a libtool library file diff --git a/src/3rdparty/freetype/builds/unix/unix-def.in b/src/3rdparty/freetype/builds/unix/unix-def.in index b90ed0c..e0a7a3a 100644 --- a/src/3rdparty/freetype/builds/unix/unix-def.in +++ b/src/3rdparty/freetype/builds/unix/unix-def.in @@ -3,7 +3,7 @@ # -# Copyright 1996-2000, 2002, 2004, 2006 by +# Copyright 1996-2000, 2002, 2004, 2006, 2008 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, @@ -65,6 +65,10 @@ version_info := @version_info@ # LIB_DIR := $(OBJ_DIR) +# The BASE_SRC macro lists all source files that should be included in +# src/base/ftbase.c. When configure sets up CFLAGS to build ftmac.c, +# ftmac.c should be added to BASE_SRC. +ftmac_c := @ftmac_c@ # The SYSTEM_ZLIB macro is defined if the user wishes to link dynamically # with its system wide zlib. If SYSTEM_ZLIB is 'yes', the zlib part of the diff --git a/src/3rdparty/freetype/builds/vms/ftconfig.h b/src/3rdparty/freetype/builds/vms/ftconfig.h index 185c334..1659d03 100644 --- a/src/3rdparty/freetype/builds/vms/ftconfig.h +++ b/src/3rdparty/freetype/builds/vms/ftconfig.h @@ -4,7 +4,7 @@ /* */ /* VMS-specific configuration file (specification only). */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2007 by */ +/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2007, 2008 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -109,6 +109,14 @@ FT_BEGIN_HEADER #else #define FT_MACINTOSH 1 #endif + +#elif defined( __SC__ ) || defined( __MRC__ ) + /* Classic MacOS compilers */ +#include "ConditionalMacros.h" +#if TARGET_OS_MAC +#define FT_MACINTOSH 1 +#endif + #endif diff --git a/src/3rdparty/freetype/builds/win32/vc2005/freetype.sln b/src/3rdparty/freetype/builds/win32/vc2005/freetype.sln new file mode 100644 index 0000000..2049203 --- /dev/null +++ b/src/3rdparty/freetype/builds/win32/vc2005/freetype.sln @@ -0,0 +1,31 @@ +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "freetype", "freetype.vcproj", "{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + LIB Debug Multithreaded|Win32 = LIB Debug Multithreaded|Win32 + LIB Debug Singlethreaded|Win32 = LIB Debug Singlethreaded|Win32 + LIB Debug|Win32 = LIB Debug|Win32 + LIB Release Multithreaded|Win32 = LIB Release Multithreaded|Win32 + LIB Release Singlethreaded|Win32 = LIB Release Singlethreaded|Win32 + LIB Release|Win32 = LIB Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Win32.ActiveCfg = Debug Multithreaded|Win32 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Win32.Build.0 = Debug Multithreaded|Win32 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Win32.ActiveCfg = Debug Singlethreaded|Win32 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Win32.Build.0 = Debug Singlethreaded|Win32 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Win32.ActiveCfg = Debug|Win32 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Win32.Build.0 = Debug|Win32 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Win32.ActiveCfg = Release Multithreaded|Win32 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Win32.Build.0 = Release Multithreaded|Win32 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Win32.ActiveCfg = Release Singlethreaded|Win32 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Win32.Build.0 = Release Singlethreaded|Win32 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Win32.ActiveCfg = Release|Win32 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/src/3rdparty/freetype/builds/win32/vc2005/freetype.vcproj b/src/3rdparty/freetype/builds/win32/vc2005/freetype.vcproj new file mode 100644 index 0000000..bd8634c --- /dev/null +++ b/src/3rdparty/freetype/builds/win32/vc2005/freetype.vcproj @@ -0,0 +1,636 @@ +<?xml version="1.0" encoding="Windows-1252"?> +<VisualStudioProject ProjectType="Visual C++" Version="8.00" Name="freetype" ProjectGUID="{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}" TargetFrameworkVersion="131072"> + <Platforms> + <Platform Name="Win32" /> + </Platforms> + <ToolFiles> + </ToolFiles> + <Configurations> + <Configuration Name="Release|Win32" OutputDirectory=".\..\..\..\objs\release" IntermediateDirectory=".\..\..\..\objs\release" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2"> + <Tool Name="VCPreBuildEventTool" /> + <Tool Name="VCCustomBuildTool" /> + <Tool Name="VCXMLDataGeneratorTool" /> + <Tool Name="VCWebServiceProxyGeneratorTool" /> + <Tool Name="VCMIDLTool" /> + <Tool Name="VCCLCompilerTool" Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="NDEBUG;WIN32;_LIB;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY" StringPooling="true" RuntimeLibrary="2" EnableFunctionLevelLinking="true" DisableLanguageExtensions="true" PrecompiledHeaderFile=".\..\..\..\objs\release/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\release/" ObjectFile=".\..\..\..\objs\release/" ProgramDataBaseFileName=".\..\..\..\objs\release/" WarningLevel="4" DebugInformationFormat="0" CompileAs="0" /> + <Tool Name="VCManagedResourceCompilerTool" /> + <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" /> + <Tool Name="VCPreLinkEventTool" /> + <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype239.lib" SuppressStartupBanner="true" /> + <Tool Name="VCALinkTool" /> + <Tool Name="VCXDCMakeTool" /> + <Tool Name="VCBscMakeTool" /> + <Tool Name="VCFxCopTool" /> + <Tool Name="VCPostBuildEventTool" /> + </Configuration> + <Configuration Name="Release Multithreaded|Win32" OutputDirectory=".\..\..\..\objs\release_mt" IntermediateDirectory=".\..\..\..\objs\release_mt" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2"> + <Tool Name="VCPreBuildEventTool" /> + <Tool Name="VCCustomBuildTool" /> + <Tool Name="VCXMLDataGeneratorTool" /> + <Tool Name="VCWebServiceProxyGeneratorTool" /> + <Tool Name="VCMIDLTool" /> + <Tool Name="VCCLCompilerTool" Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="NDEBUG;WIN32;_LIB;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY" StringPooling="true" RuntimeLibrary="0" EnableFunctionLevelLinking="true" DisableLanguageExtensions="true" PrecompiledHeaderFile=".\..\..\..\objs\release_mt/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\release_mt/" ObjectFile=".\..\..\..\objs\release_mt/" ProgramDataBaseFileName=".\..\..\..\objs\release_mt/" WarningLevel="4" DebugInformationFormat="0" CompileAs="0" /> + <Tool Name="VCManagedResourceCompilerTool" /> + <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" /> + <Tool Name="VCPreLinkEventTool" /> + <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype239MT.lib" SuppressStartupBanner="true" /> + <Tool Name="VCALinkTool" /> + <Tool Name="VCXDCMakeTool" /> + <Tool Name="VCBscMakeTool" /> + <Tool Name="VCFxCopTool" /> + <Tool Name="VCPostBuildEventTool" /> + </Configuration> + <Configuration Name="Release Singlethreaded|Win32" OutputDirectory=".\..\..\..\objs\release_st" IntermediateDirectory=".\..\..\..\objs\release_st" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2"> + <Tool Name="VCPreBuildEventTool" /> + <Tool Name="VCCustomBuildTool" /> + <Tool Name="VCXMLDataGeneratorTool" /> + <Tool Name="VCWebServiceProxyGeneratorTool" /> + <Tool Name="VCMIDLTool" /> + <Tool Name="VCCLCompilerTool" Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="NDEBUG;WIN32;_LIB;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY" StringPooling="true" RuntimeLibrary="0" EnableFunctionLevelLinking="true" DisableLanguageExtensions="true" PrecompiledHeaderFile=".\..\..\..\objs\release_st/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\release_st/" ObjectFile=".\..\..\..\objs\release_st/" ProgramDataBaseFileName=".\..\..\..\objs\release_st/" WarningLevel="4" DebugInformationFormat="0" CompileAs="0" /> + <Tool Name="VCManagedResourceCompilerTool" /> + <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" /> + <Tool Name="VCPreLinkEventTool" /> + <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype239ST.lib" /> + <Tool Name="VCALinkTool" /> + <Tool Name="VCXDCMakeTool" /> + <Tool Name="VCBscMakeTool" /> + <Tool Name="VCFxCopTool" /> + <Tool Name="VCPostBuildEventTool" /> + </Configuration> + <Configuration Name="Debug|Win32" OutputDirectory=".\..\..\..\objs\debug" IntermediateDirectory=".\..\..\..\objs\debug" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2"> + <Tool Name="VCPreBuildEventTool" /> + <Tool Name="VCCustomBuildTool" /> + <Tool Name="VCXMLDataGeneratorTool" /> + <Tool Name="VCWebServiceProxyGeneratorTool" /> + <Tool Name="VCMIDLTool" /> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="_DEBUG;WIN32;_LIB;_CRT_SECURE_NO_WARNINGS;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY" BasicRuntimeChecks="3" RuntimeLibrary="3" DisableLanguageExtensions="true" PrecompiledHeaderFile=".\..\..\..\objs\debug/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\debug/" ObjectFile=".\..\..\..\objs\debug/" ProgramDataBaseFileName=".\..\..\..\objs\debug/" WarningLevel="4" DebugInformationFormat="3" CompileAs="0" /> + <Tool Name="VCManagedResourceCompilerTool" /> + <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" /> + <Tool Name="VCPreLinkEventTool" /> + <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype239_D.lib" SuppressStartupBanner="true" /> + <Tool Name="VCALinkTool" /> + <Tool Name="VCXDCMakeTool" /> + <Tool Name="VCBscMakeTool" /> + <Tool Name="VCFxCopTool" /> + <Tool Name="VCPostBuildEventTool" /> + </Configuration> + <Configuration Name="Debug Singlethreaded|Win32" OutputDirectory=".\..\..\..\objs\debug_st" IntermediateDirectory=".\..\..\..\objs\debug_st" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2"> + <Tool Name="VCPreBuildEventTool" /> + <Tool Name="VCCustomBuildTool" /> + <Tool Name="VCXMLDataGeneratorTool" /> + <Tool Name="VCWebServiceProxyGeneratorTool" /> + <Tool Name="VCMIDLTool" /> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="_DEBUG;WIN32;_LIB;_CRT_SECURE_NO_WARNINGS;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY" BasicRuntimeChecks="3" RuntimeLibrary="1" DisableLanguageExtensions="true" PrecompiledHeaderFile=".\..\..\..\objs\debug_st/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\debug_st/" ObjectFile=".\..\..\..\objs\debug_st/" ProgramDataBaseFileName=".\..\..\..\objs\debug_st/" WarningLevel="4" DebugInformationFormat="3" CompileAs="0" /> + <Tool Name="VCManagedResourceCompilerTool" /> + <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" /> + <Tool Name="VCPreLinkEventTool" /> + <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype239ST_D.lib" SuppressStartupBanner="true" /> + <Tool Name="VCALinkTool" /> + <Tool Name="VCXDCMakeTool" /> + <Tool Name="VCBscMakeTool" /> + <Tool Name="VCFxCopTool" /> + <Tool Name="VCPostBuildEventTool" /> + </Configuration> + <Configuration Name="Debug Multithreaded|Win32" OutputDirectory=".\..\..\..\objs\debug_mt" IntermediateDirectory=".\..\..\..\objs\debug_mt" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2"> + <Tool Name="VCPreBuildEventTool" /> + <Tool Name="VCCustomBuildTool" /> + <Tool Name="VCXMLDataGeneratorTool" /> + <Tool Name="VCWebServiceProxyGeneratorTool" /> + <Tool Name="VCMIDLTool" /> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="_DEBUG;WIN32;_LIB;_CRT_SECURE_NO_WARNINGS;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;_CRT_SECURE_NO_DEPRECATE" GeneratePreprocessedFile="0" BasicRuntimeChecks="3" RuntimeLibrary="1" DisableLanguageExtensions="true" PrecompiledHeaderFile=".\..\..\..\objs\debug_mt/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\debug_mt/" ObjectFile=".\..\..\..\objs\debug_mt/" ProgramDataBaseFileName=".\..\..\..\objs\debug_mt/" WarningLevel="4" DebugInformationFormat="3" CompileAs="0" /> + <Tool Name="VCManagedResourceCompilerTool" /> + <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" /> + <Tool Name="VCPreLinkEventTool" /> + <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype239MT_D.lib" SuppressStartupBanner="true" /> + <Tool Name="VCALinkTool" /> + <Tool Name="VCXDCMakeTool" /> + <Tool Name="VCBscMakeTool" /> + <Tool Name="VCFxCopTool" /> + <Tool Name="VCPostBuildEventTool" /> + </Configuration> + </Configurations> + <References> + </References> + <Files> + <Filter Name="Source Files" Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"> + <File RelativePath="..\..\..\src\autofit\autofit.c"> + </File> + <File RelativePath="..\..\..\src\bdf\bdf.c"> + <FileConfiguration Name="Release|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + </File> + <File RelativePath="..\..\..\src\cff\cff.c"> + <FileConfiguration Name="Release|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + </File> + <File RelativePath="..\..\..\src\base\ftbase.c"> + <FileConfiguration Name="Release|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + </File> + <File RelativePath="..\..\..\src\base\ftbitmap.c"> + </File> + <File RelativePath="..\..\..\src\cache\ftcache.c"> + <FileConfiguration Name="Release|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + </File> + <File RelativePath="..\ftdebug.c"> + <FileConfiguration Name="Release|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" DisableLanguageExtensions="false" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" DisableLanguageExtensions="false" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" DisableLanguageExtensions="false" /> + </FileConfiguration> + </File> + <File RelativePath="..\..\..\src\base\ftfstype.c"> + </File> + <File RelativePath="..\..\..\src\base\ftgasp.c"> + </File> + <File RelativePath="..\..\..\src\base\ftglyph.c"> + <FileConfiguration Name="Release|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + </File> + <File RelativePath="..\..\..\src\gzip\ftgzip.c"> + <FileConfiguration Name="Release|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + </File> + <File RelativePath="..\..\..\src\base\ftinit.c"> + <FileConfiguration Name="Release|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + </File> + <File RelativePath="..\..\..\src\lzw\ftlzw.c"> + <FileConfiguration Name="Release|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + </File> + <File RelativePath="..\..\..\src\base\ftstroke.c"> + </File> + <File RelativePath="..\..\..\src\base\ftsystem.c"> + <FileConfiguration Name="Release|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + </File> + <File RelativePath="..\..\..\src\smooth\smooth.c"> + <FileConfiguration Name="Release|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + </File> + <Filter Name="FT_MODULES"> + <File RelativePath="..\..\..\src\base\ftbbox.c"> + </File> + <File RelativePath="..\..\..\src\base\ftmm.c"> + <FileConfiguration Name="Release|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + </File> + <File RelativePath="..\..\..\src\base\ftpfr.c"> + </File> + <File RelativePath="..\..\..\src\base\ftsynth.c"> + </File> + <File RelativePath="..\..\..\src\base\fttype1.c"> + </File> + <File RelativePath="..\..\..\src\base\ftwinfnt.c"> + </File> + <File RelativePath="..\..\..\src\pcf\pcf.c"> + <FileConfiguration Name="Release|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + </File> + <File RelativePath="..\..\..\src\pfr\pfr.c"> + <FileConfiguration Name="Release|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + </File> + <File RelativePath="..\..\..\src\psaux\psaux.c"> + <FileConfiguration Name="Release|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + </File> + <File RelativePath="..\..\..\src\pshinter\pshinter.c"> + <FileConfiguration Name="Release|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + </File> + <File RelativePath="..\..\..\src\psnames\psmodule.c"> + <FileConfiguration Name="Release|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + </File> + <File RelativePath="..\..\..\src\raster\raster.c"> + <FileConfiguration Name="Release|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + </File> + <File RelativePath="..\..\..\src\sfnt\sfnt.c"> + <FileConfiguration Name="Release|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + </File> + <File RelativePath="..\..\..\src\truetype\truetype.c"> + <FileConfiguration Name="Release|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + </File> + <File RelativePath="..\..\..\src\type1\type1.c"> + <FileConfiguration Name="Release|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + </File> + <File RelativePath="..\..\..\src\cid\type1cid.c"> + <FileConfiguration Name="Release|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + </File> + <File RelativePath="..\..\..\src\type42\type42.c"> + <FileConfiguration Name="Release|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + </File> + <File RelativePath="..\..\..\src\winfonts\winfnt.c"> + <FileConfiguration Name="Release|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + </File> + </Filter> + </Filter> + <Filter Name="Header Files" Filter="h;hpp;hxx;hm;inl"> + <File RelativePath="..\..\..\include\ft2build.h"> + </File> + <File RelativePath="..\..\..\include\freetype\config\ftconfig.h"> + </File> + <File RelativePath="..\..\..\include\freetype\config\ftheader.h"> + </File> + <File RelativePath="..\..\..\include\freetype\config\ftmodule.h"> + </File> + <File RelativePath="..\..\..\include\freetype\config\ftoption.h"> + </File> + <File RelativePath="..\..\..\include\freetype\config\ftstdlib.h"> + </File> + </Filter> + </Files> + <Globals> + </Globals> +</VisualStudioProject>
\ No newline at end of file diff --git a/src/3rdparty/freetype/builds/win32/vc2005/index.html b/src/3rdparty/freetype/builds/win32/vc2005/index.html new file mode 100644 index 0000000..41d5e0a --- /dev/null +++ b/src/3rdparty/freetype/builds/win32/vc2005/index.html @@ -0,0 +1,37 @@ +<html> +<header> +<title> + FreeType 2 Project Files for VS.NET 2005 +</title> + +<body> +<h1> + FreeType 2 Project Files for VS.NET 2005 +</h1> + +<p>This directory contains project files for Visual C++, named +<tt>freetype.vcproj</tt>, and Visual Studio, called <tt>freetype.sln</tt>. It +compiles the following libraries from the FreeType 2.3.9 sources:</p> + +<ul> + <pre> + freetype239.lib - release build; single threaded + freetype239_D.lib - debug build; single threaded + freetype239MT.lib - release build; multi-threaded + freetype239MT_D.lib - debug build; multi-threaded</pre> +</ul> + +<p>Be sure to extract the files with the Windows (CR+LF) line endings. ZIP +archives are already stored this way, so no further action is required. If +you use some <tt>.tar.*z</tt> archives, be sure to configure your extracting +tool to convert the line endings. For example, with <a +href="http://www.winzip.com">WinZip</a>, you should activate the <it>TAR +file smart CR/LF Conversion</it> option. Alternatively, you may consider +using the <tt>unix2dos</tt> or <tt>u2d</tt> utilities that are floating +around, which specifically deal with this particular problem. + +<p>Build directories are placed in the top-level <tt>objs</tt> +directory.</p> + +</body> +</html> diff --git a/src/3rdparty/freetype/builds/win32/vc2008/freetype.sln b/src/3rdparty/freetype/builds/win32/vc2008/freetype.sln new file mode 100644 index 0000000..0995f80 --- /dev/null +++ b/src/3rdparty/freetype/builds/win32/vc2008/freetype.sln @@ -0,0 +1,31 @@ +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "freetype", "freetype.vcproj", "{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + LIB Debug Multithreaded|Win32 = LIB Debug Multithreaded|Win32 + LIB Debug Singlethreaded|Win32 = LIB Debug Singlethreaded|Win32 + LIB Debug|Win32 = LIB Debug|Win32 + LIB Release Multithreaded|Win32 = LIB Release Multithreaded|Win32 + LIB Release Singlethreaded|Win32 = LIB Release Singlethreaded|Win32 + LIB Release|Win32 = LIB Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Win32.ActiveCfg = Debug Multithreaded|Win32 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Win32.Build.0 = Debug Multithreaded|Win32 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Win32.ActiveCfg = Debug Singlethreaded|Win32 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Win32.Build.0 = Debug Singlethreaded|Win32 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Win32.ActiveCfg = Debug|Win32 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Win32.Build.0 = Debug|Win32 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Win32.ActiveCfg = Release Multithreaded|Win32 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Win32.Build.0 = Release Multithreaded|Win32 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Win32.ActiveCfg = Release Singlethreaded|Win32 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Win32.Build.0 = Release Singlethreaded|Win32 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Win32.ActiveCfg = Release|Win32 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/src/3rdparty/freetype/builds/win32/visualc/freetype.vcproj b/src/3rdparty/freetype/builds/win32/vc2008/freetype.vcproj index 8089110..07d950b 100644 --- a/src/3rdparty/freetype/builds/win32/visualc/freetype.vcproj +++ b/src/3rdparty/freetype/builds/win32/vc2008/freetype.vcproj @@ -1,9 +1,10 @@ <?xml version="1.0" encoding="Windows-1252"?> <VisualStudioProject ProjectType="Visual C++" - Version="8.00" + Version="9,00" Name="freetype" ProjectGUID="{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}" + TargetFrameworkVersion="131072" > <Platforms> <Platform @@ -43,7 +44,7 @@ Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="NDEBUG;WIN32;_LIB;FT2_BUILD_LIBRARY" + PreprocessorDefinitions="NDEBUG;WIN32;_LIB;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY" StringPooling="true" RuntimeLibrary="2" EnableFunctionLevelLinking="true" @@ -69,7 +70,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236.lib" + OutputFile="..\..\..\objs\win32\vc2008\freetype239.lib" SuppressStartupBanner="true" /> <Tool @@ -118,7 +119,7 @@ Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="NDEBUG;WIN32;_LIB;FT2_BUILD_LIBRARY" + PreprocessorDefinitions="NDEBUG;WIN32;_LIB;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY" StringPooling="true" RuntimeLibrary="0" EnableFunctionLevelLinking="true" @@ -144,7 +145,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236MT.lib" + OutputFile="..\..\..\objs\win32\vc2008\freetype239MT.lib" SuppressStartupBanner="true" /> <Tool @@ -193,7 +194,7 @@ Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="NDEBUG;WIN32;_LIB;FT2_BUILD_LIBRARY" + PreprocessorDefinitions="NDEBUG;WIN32;_LIB;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY" StringPooling="true" RuntimeLibrary="0" EnableFunctionLevelLinking="true" @@ -219,7 +220,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236ST.lib" + OutputFile="..\..\..\objs\win32\vc2008\freetype239ST.lib" /> <Tool Name="VCALinkTool" @@ -266,7 +267,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="_DEBUG;WIN32;_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY" + PreprocessorDefinitions="_DEBUG;WIN32;_LIB;_CRT_SECURE_NO_WARNINGS;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY" BasicRuntimeChecks="3" RuntimeLibrary="3" DisableLanguageExtensions="true" @@ -291,7 +292,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236_D.lib" + OutputFile="..\..\..\objs\win32\vc2008\freetype239_D.lib" SuppressStartupBanner="true" /> <Tool @@ -339,7 +340,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="_DEBUG;WIN32;_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY" + PreprocessorDefinitions="_DEBUG;WIN32;_LIB;_CRT_SECURE_NO_WARNINGS;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY" BasicRuntimeChecks="3" RuntimeLibrary="1" DisableLanguageExtensions="true" @@ -364,7 +365,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236ST_D.lib" + OutputFile="..\..\..\objs\win32\vc2008\freetype239ST_D.lib" SuppressStartupBanner="true" /> <Tool @@ -412,7 +413,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="_DEBUG;WIN32;_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;_CRT_SECURE_NO_DEPRECATE" + PreprocessorDefinitions="_DEBUG;WIN32;_LIB;_CRT_SECURE_NO_WARNINGS;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;_CRT_SECURE_NO_DEPRECATE" GeneratePreprocessedFile="0" BasicRuntimeChecks="3" RuntimeLibrary="1" @@ -438,7 +439,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236MT_D.lib" + OutputFile="..\..\..\objs\win32\vc2008\freetype239MT_D.lib" SuppressStartupBanner="true" /> <Tool @@ -675,10 +676,6 @@ > </File> <File - RelativePath="..\..\..\src\base\ftgasp.c" - > - </File> - <File RelativePath="..\..\..\src\cache\ftcache.c" > <FileConfiguration @@ -819,6 +816,14 @@ </FileConfiguration> </File> <File + RelativePath="..\..\..\src\base\ftfstype.c" + > + </File> + <File + RelativePath="..\..\..\src\base\ftgasp.c" + > + </File> + <File RelativePath="..\..\..\src\base\ftglyph.c" > <FileConfiguration diff --git a/src/3rdparty/freetype/builds/win32/vc2008/index.html b/src/3rdparty/freetype/builds/win32/vc2008/index.html new file mode 100644 index 0000000..5e349b7 --- /dev/null +++ b/src/3rdparty/freetype/builds/win32/vc2008/index.html @@ -0,0 +1,37 @@ +<html> +<header> +<title> + FreeType 2 Project Files for VS.NET 2008 +</title> + +<body> +<h1> + FreeType 2 Project Files for VS.NET 2008 +</h1> + +<p>This directory contains project files for Visual C++, named +<tt>freetype.vcproj</tt>, and Visual Studio, called <tt>freetype.sln</tt>. It +compiles the following libraries from the FreeType 2.3.9 sources:</p> + +<ul> + <pre> + freetype239.lib - release build; single threaded + freetype239_D.lib - debug build; single threaded + freetype239MT.lib - release build; multi-threaded + freetype239MT_D.lib - debug build; multi-threaded</pre> +</ul> + +<p>Be sure to extract the files with the Windows (CR+LF) line endings. ZIP +archives are already stored this way, so no further action is required. If +you use some <tt>.tar.*z</tt> archives, be sure to configure your extracting +tool to convert the line endings. For example, with <a +href="http://www.winzip.com">WinZip</a>, you should activate the <it>TAR +file smart CR/LF Conversion</it> option. Alternatively, you may consider +using the <tt>unix2dos</tt> or <tt>u2d</tt> utilities that are floating +around, which specifically deal with this particular problem. + +<p>Build directories are placed in the top-level <tt>objs</tt> +directory.</p> + +</body> +</html> diff --git a/src/3rdparty/freetype/builds/win32/visualc/freetype.dsp b/src/3rdparty/freetype/builds/win32/visualc/freetype.dsp index c8b76e8..556dfb6 100644 --- a/src/3rdparty/freetype/builds/win32/visualc/freetype.dsp +++ b/src/3rdparty/freetype/builds/win32/visualc/freetype.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\..\..\objs\freetype236.lib" +# ADD LIB32 /nologo /out:"..\..\..\objs\freetype239.lib" !ELSEIF "$(CFG)" == "freetype - Win32 Debug" @@ -78,7 +78,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\..\..\objs\freetype236_D.lib" +# ADD LIB32 /nologo /out:"..\..\..\objs\freetype239_D.lib" !ELSEIF "$(CFG)" == "freetype - Win32 Debug Multithreaded" @@ -102,8 +102,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"lib\freetype236_D.lib" -# ADD LIB32 /nologo /out:"..\..\..\objs\freetype236MT_D.lib" +# ADD BASE LIB32 /nologo /out:"lib\freetype239_D.lib" +# ADD LIB32 /nologo /out:"..\..\..\objs\freetype239MT_D.lib" !ELSEIF "$(CFG)" == "freetype - Win32 Release Multithreaded" @@ -126,8 +126,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"lib\freetype236.lib" -# ADD LIB32 /nologo /out:"..\..\..\objs\freetype236MT.lib" +# ADD BASE LIB32 /nologo /out:"lib\freetype239.lib" +# ADD LIB32 /nologo /out:"..\..\..\objs\freetype239MT.lib" !ELSEIF "$(CFG)" == "freetype - Win32 Release Singlethreaded" @@ -151,8 +151,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype236.lib" -# ADD LIB32 /out:"..\..\..\objs\freetype236ST.lib" +# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype239.lib" +# ADD LIB32 /out:"..\..\..\objs\freetype239ST.lib" # SUBTRACT LIB32 /nologo !ELSEIF "$(CFG)" == "freetype - Win32 Debug Singlethreaded" @@ -177,8 +177,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype236_D.lib" -# ADD LIB32 /nologo /out:"..\..\..\objs\freetype236ST_D.lib" +# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype239_D.lib" +# ADD LIB32 /nologo /out:"..\..\..\objs\freetype239ST_D.lib" !ENDIF @@ -226,6 +226,10 @@ SOURCE=..\..\..\src\base\ftbitmap.c # End Source File # Begin Source File +SOURCE=..\..\..\src\base\ftfstype.c +# End Source File +# Begin Source File + SOURCE=..\..\..\src\base\ftgasp.c # End Source File # Begin Source File diff --git a/src/3rdparty/freetype/builds/win32/visualc/freetype.sln b/src/3rdparty/freetype/builds/win32/visualc/freetype.sln deleted file mode 100644 index 470d4fa..0000000 --- a/src/3rdparty/freetype/builds/win32/visualc/freetype.sln +++ /dev/null @@ -1,31 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual Studio 2005 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "freetype", "freetype.vcproj", "{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug Multithreaded|Win32 = Debug Multithreaded|Win32 - Debug Singlethreaded|Win32 = Debug Singlethreaded|Win32 - Debug|Win32 = Debug|Win32 - Release Multithreaded|Win32 = Release Multithreaded|Win32 - Release Singlethreaded|Win32 = Release Singlethreaded|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Multithreaded|Win32.ActiveCfg = Debug Multithreaded|Win32 - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Multithreaded|Win32.Build.0 = Debug Multithreaded|Win32 - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Singlethreaded|Win32.ActiveCfg = Debug Singlethreaded|Win32 - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Singlethreaded|Win32.Build.0 = Debug Singlethreaded|Win32 - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|Win32.ActiveCfg = Debug|Win32 - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|Win32.Build.0 = Debug|Win32 - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Multithreaded|Win32.ActiveCfg = Release Multithreaded|Win32 - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Multithreaded|Win32.Build.0 = Release Multithreaded|Win32 - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Singlethreaded|Win32.ActiveCfg = Release Singlethreaded|Win32 - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Singlethreaded|Win32.Build.0 = Release Singlethreaded|Win32 - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|Win32.ActiveCfg = Release|Win32 - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/src/3rdparty/freetype/builds/win32/visualc/index.html b/src/3rdparty/freetype/builds/win32/visualc/index.html index d7a6f38..fffcf4f 100644 --- a/src/3rdparty/freetype/builds/win32/visualc/index.html +++ b/src/3rdparty/freetype/builds/win32/visualc/index.html @@ -11,14 +11,14 @@ <p>This directory contains project files for Visual C++, named <tt>freetype.dsp</tt>, and Visual Studio, called <tt>freetype.sln</tt>. It -compiles the following libraries from the FreeType 2.3.6 sources:</p> +compiles the following libraries from the FreeType 2.3.9 sources:</p> <ul> <pre> - freetype236.lib - release build; single threaded - freetype236_D.lib - debug build; single threaded - freetype236MT.lib - release build; multi-threaded - freetype236MT_D.lib - debug build; multi-threaded</pre> + freetype239.lib - release build; single threaded + freetype239_D.lib - debug build; single threaded + freetype239MT.lib - release build; multi-threaded + freetype239MT_D.lib - debug build; multi-threaded</pre> </ul> <p>Be sure to extract the files with the Windows (CR+LF) line endings. ZIP diff --git a/src/3rdparty/freetype/builds/win32/visualce/freetype.dsp b/src/3rdparty/freetype/builds/win32/visualce/freetype.dsp deleted file mode 100644 index c8b76e8..0000000 --- a/src/3rdparty/freetype/builds/win32/visualce/freetype.dsp +++ /dev/null @@ -1,396 +0,0 @@ -# Microsoft Developer Studio Project File - Name="freetype" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=freetype - Win32 Debug Singlethreaded -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "freetype.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "freetype.mak" CFG="freetype - Win32 Debug Singlethreaded" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "freetype - Win32 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "freetype - Win32 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE "freetype - Win32 Debug Multithreaded" (based on "Win32 (x86) Static Library") -!MESSAGE "freetype - Win32 Release Multithreaded" (based on "Win32 (x86) Static Library") -!MESSAGE "freetype - Win32 Release Singlethreaded" (based on "Win32 (x86) Static Library") -!MESSAGE "freetype - Win32 Debug Singlethreaded" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "freetype - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "..\..\..\objs\release" -# PROP Intermediate_Dir "..\..\..\objs\release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c -# ADD CPP /MD /Za /W4 /GX /O2 /I "..\..\..\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT2_BUILD_LIBRARY" /FD /c -# SUBTRACT CPP /nologo /Z<none> /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\..\..\objs\freetype236.lib" - -!ELSEIF "$(CFG)" == "freetype - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "..\..\..\objs\debug" -# PROP Intermediate_Dir "..\..\..\objs\debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c -# ADD CPP /MDd /Za /W4 /GX /Z7 /Od /I "..\..\..\include" /D "_DEBUG" /D "FT_DEBUG_LEVEL_ERROR" /D "FT_DEBUG_LEVEL_TRACE" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT2_BUILD_LIBRARY" /FD /GZ /c -# SUBTRACT CPP /nologo /X /YX -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\..\..\objs\freetype236_D.lib" - -!ELSEIF "$(CFG)" == "freetype - Win32 Debug Multithreaded" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "freetype___Win32_Debug_Multithreaded" -# PROP BASE Intermediate_Dir "freetype___Win32_Debug_Multithreaded" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "..\..\..\objs\debug_mt" -# PROP Intermediate_Dir "..\..\..\objs\debug_mt" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /Za /W3 /Gm /GX /ZI /Od /I "..\freetype\include\\" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT_FLAT_COMPILE" /YX /FD /GZ /c -# SUBTRACT BASE CPP /X -# ADD CPP /MTd /Za /W4 /GX /Z7 /Od /I "..\..\..\include" /D "_DEBUG" /D "FT_DEBUG_LEVEL_ERROR" /D "FT_DEBUG_LEVEL_TRACE" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT2_BUILD_LIBRARY" /FD /GZ /c -# SUBTRACT CPP /nologo /X /YX -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"lib\freetype236_D.lib" -# ADD LIB32 /nologo /out:"..\..\..\objs\freetype236MT_D.lib" - -!ELSEIF "$(CFG)" == "freetype - Win32 Release Multithreaded" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "freetype___Win32_Release_Multithreaded" -# PROP BASE Intermediate_Dir "freetype___Win32_Release_Multithreaded" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "..\..\..\objs\release_mt" -# PROP Intermediate_Dir "..\..\..\objs\release_mt" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /Za /W3 /GX /O2 /I "..\freetype\include\\" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT_FLAT_COMPILE" /YX /FD /c -# ADD CPP /MT /Za /W4 /GX /O2 /I "..\..\..\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT2_BUILD_LIBRARY" /FD /c -# SUBTRACT CPP /nologo /Z<none> /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"lib\freetype236.lib" -# ADD LIB32 /nologo /out:"..\..\..\objs\freetype236MT.lib" - -!ELSEIF "$(CFG)" == "freetype - Win32 Release Singlethreaded" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "freetype___Win32_Release_Singlethreaded" -# PROP BASE Intermediate_Dir "freetype___Win32_Release_Singlethreaded" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "..\..\..\objs\release_st" -# PROP Intermediate_Dir "..\..\..\objs\release_st" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MD /Za /W4 /GX /Zi /O2 /I "..\..\..\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /Za /W4 /GX /O2 /I "..\..\..\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT2_BUILD_LIBRARY" /FD /c -# SUBTRACT CPP /nologo /Z<none> /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype236.lib" -# ADD LIB32 /out:"..\..\..\objs\freetype236ST.lib" -# SUBTRACT LIB32 /nologo - -!ELSEIF "$(CFG)" == "freetype - Win32 Debug Singlethreaded" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "freetype___Win32_Debug_Singlethreaded" -# PROP BASE Intermediate_Dir "freetype___Win32_Debug_Singlethreaded" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "..\..\..\objs\debug_st" -# PROP Intermediate_Dir "..\..\..\objs\debug_st" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MDd /Za /W4 /Gm /GX /Zi /Od /I "..\..\..\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT_DEBUG_LEVEL_ERROR" /D "FT_DEBUG_LEVEL_TRACE" /FD /GZ /c -# SUBTRACT BASE CPP /X /YX -# ADD CPP /Za /W4 /GX /Z7 /Od /I "..\..\..\include" /D "_DEBUG" /D "FT_DEBUG_LEVEL_ERROR" /D "FT_DEBUG_LEVEL_TRACE" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT2_BUILD_LIBRARY" /FD /GZ /c -# SUBTRACT CPP /nologo /X /YX -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype236_D.lib" -# ADD LIB32 /nologo /out:"..\..\..\objs\freetype236ST_D.lib" - -!ENDIF - -# Begin Target - -# Name "freetype - Win32 Release" -# Name "freetype - Win32 Debug" -# Name "freetype - Win32 Debug Multithreaded" -# Name "freetype - Win32 Release Multithreaded" -# Name "freetype - Win32 Release Singlethreaded" -# Name "freetype - Win32 Debug Singlethreaded" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\..\..\src\autofit\autofit.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\bdf\bdf.c -# SUBTRACT CPP /Fr -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\cff\cff.c -# SUBTRACT CPP /Fr -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftbase.c -# SUBTRACT CPP /Fr -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftbbox.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftbdf.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftbitmap.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftgasp.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\cache\ftcache.c -# SUBTRACT CPP /Fr -# End Source File -# Begin Source File - -SOURCE=..\ftdebug.c -# ADD CPP /Ze -# SUBTRACT CPP /Fr -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftglyph.c -# SUBTRACT CPP /Fr -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftgxval.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\gzip\ftgzip.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftinit.c -# SUBTRACT CPP /Fr -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\lzw\ftlzw.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftmm.c -# SUBTRACT CPP /Fr -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftotval.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftpfr.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftstroke.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftsynth.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftsystem.c -# SUBTRACT CPP /Fr -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\fttype1.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftwinfnt.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftxf86.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\pcf\pcf.c -# SUBTRACT CPP /Fr -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\pfr\pfr.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\psaux\psaux.c -# SUBTRACT CPP /Fr -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\pshinter\pshinter.c -# SUBTRACT CPP /Fr -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\psnames\psmodule.c -# SUBTRACT CPP /Fr -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\raster\raster.c -# SUBTRACT CPP /Fr -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\sfnt\sfnt.c -# SUBTRACT CPP /Fr -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\smooth\smooth.c -# SUBTRACT CPP /Fr -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\truetype\truetype.c -# SUBTRACT CPP /Fr -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\type1\type1.c -# SUBTRACT CPP /Fr -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\cid\type1cid.c -# SUBTRACT CPP /Fr -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\type42\type42.c -# SUBTRACT CPP /Fr -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\winfonts\winfnt.c -# SUBTRACT CPP /Fr -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=..\..\..\include\ft2build.h -# End Source File -# Begin Source File - -SOURCE=..\..\..\include\freetype\config\ftconfig.h -# End Source File -# Begin Source File - -SOURCE=..\..\..\include\freetype\config\ftheader.h -# End Source File -# Begin Source File - -SOURCE=..\..\..\include\freetype\config\ftmodule.h -# End Source File -# Begin Source File - -SOURCE=..\..\..\include\freetype\config\ftoption.h -# End Source File -# Begin Source File - -SOURCE=..\..\..\include\freetype\config\ftstdlib.h -# End Source File -# End Group -# End Target -# End Project diff --git a/src/3rdparty/freetype/builds/win32/visualce/freetype.dsw b/src/3rdparty/freetype/builds/win32/visualce/freetype.dsw deleted file mode 100644 index b1b375d..0000000 --- a/src/3rdparty/freetype/builds/win32/visualce/freetype.dsw +++ /dev/null @@ -1,29 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "freetype"=.\freetype.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/src/3rdparty/freetype/builds/wince/ftdebug.c b/src/3rdparty/freetype/builds/wince/ftdebug.c new file mode 100644 index 0000000..8f7a9ab --- /dev/null +++ b/src/3rdparty/freetype/builds/wince/ftdebug.c @@ -0,0 +1,248 @@ +/***************************************************************************/ +/* */ +/* ftdebug.c */ +/* */ +/* Debugging and logging component for Win32 (body). */ +/* */ +/* Copyright 1996-2001, 2002, 2005, 2008 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /*************************************************************************/ + /* */ + /* This component contains various macros and functions used to ease the */ + /* debugging of the FreeType engine. Its main purpose is in assertion */ + /* checking, tracing, and error detection. */ + /* */ + /* There are now three debugging modes: */ + /* */ + /* - trace mode */ + /* */ + /* Error and trace messages are sent to the log file (which can be the */ + /* standard error output). */ + /* */ + /* - error mode */ + /* */ + /* Only error messages are generated. */ + /* */ + /* - release mode: */ + /* */ + /* No error message is sent or generated. The code is free from any */ + /* debugging parts. */ + /* */ + /*************************************************************************/ + + +#include <ft2build.h> +#include FT_INTERNAL_DEBUG_H + + +#ifdef FT_DEBUG_LEVEL_ERROR + + +#include <stdarg.h> +#include <stdlib.h> +#include <string.h> + +#include <windows.h> + + +#ifdef _WIN32_WCE + + void + OutputDebugStringEx( const char* str ) + { + static WCHAR buf[8192]; + + + int sz = MultiByteToWideChar( CP_ACP, 0, str, -1, buf, + sizeof ( buf ) / sizeof ( *buf ) ); + if ( !sz ) + lstrcpyW( buf, L"OutputDebugStringEx: MultiByteToWideChar failed" ); + + OutputDebugStringW( buf ); + } + +#else + +#define OutputDebugStringEx OutputDebugStringA + +#endif + + + FT_BASE_DEF( void ) + FT_Message( const char* fmt, ... ) + { + static char buf[8192]; + va_list ap; + + + va_start( ap, fmt ); + vprintf( fmt, ap ); + /* send the string to the debugger as well */ + vsprintf( buf, fmt, ap ); + OutputDebugStringEx( buf ); + va_end( ap ); + } + + + FT_BASE_DEF( void ) + FT_Panic( const char* fmt, ... ) + { + static char buf[8192]; + va_list ap; + + + va_start( ap, fmt ); + vsprintf( buf, fmt, ap ); + OutputDebugStringEx( buf ); + va_end( ap ); + + exit( EXIT_FAILURE ); + } + + +#ifdef FT_DEBUG_LEVEL_TRACE + + + /* array of trace levels, initialized to 0 */ + int ft_trace_levels[trace_count]; + + /* define array of trace toggle names */ +#define FT_TRACE_DEF( x ) #x , + + static const char* ft_trace_toggles[trace_count + 1] = + { +#include FT_INTERNAL_TRACE_H + NULL + }; + +#undef FT_TRACE_DEF + + + /*************************************************************************/ + /* */ + /* Initialize the tracing sub-system. This is done by retrieving the */ + /* value of the "FT2_DEBUG" environment variable. It must be a list of */ + /* toggles, separated by spaces, `;' or `,'. Example: */ + /* */ + /* "any:3 memory:6 stream:5" */ + /* */ + /* This will request that all levels be set to 3, except the trace level */ + /* for the memory and stream components which are set to 6 and 5, */ + /* respectively. */ + /* */ + /* See the file <freetype/internal/fttrace.h> for details of the */ + /* available toggle names. */ + /* */ + /* The level must be between 0 and 6; 0 means quiet (except for serious */ + /* runtime errors), and 6 means _very_ verbose. */ + /* */ + FT_BASE_DEF( void ) + ft_debug_init( void ) + { +#ifdef _WIN32_WCE + + /* Windows Mobile doesn't have environment API: */ + /* GetEnvironmentStrings, GetEnvironmentVariable, getenv. */ + /* */ + /* FIXME!!! How to set debug mode? */ + const char* ft2_debug = 0; + +#else + + const char* ft2_debug = getenv( "FT2_DEBUG" ); + +#endif + + if ( ft2_debug ) + { + const char* p = ft2_debug; + const char* q; + + + for ( ; *p; p++ ) + { + /* skip leading whitespace and separators */ + if ( *p == ' ' || *p == '\t' || *p == ',' || *p == ';' || *p == '=' ) + continue; + + /* read toggle name, followed by ':' */ + q = p; + while ( *p && *p != ':' ) + p++; + + if ( *p == ':' && p > q ) + { + int n, i, len = p - q; + int level = -1, found = -1; + + + for ( n = 0; n < trace_count; n++ ) + { + const char* toggle = ft_trace_toggles[n]; + + + for ( i = 0; i < len; i++ ) + { + if ( toggle[i] != q[i] ) + break; + } + + if ( i == len && toggle[i] == 0 ) + { + found = n; + break; + } + } + + /* read level */ + p++; + if ( *p ) + { + level = *p++ - '0'; + if ( level < 0 || level > 7 ) + level = -1; + } + + if ( found >= 0 && level >= 0 ) + { + if ( found == trace_any ) + { + /* special case for "any" */ + for ( n = 0; n < trace_count; n++ ) + ft_trace_levels[n] = level; + } + else + ft_trace_levels[found] = level; + } + } + } + } + } + + +#else /* !FT_DEBUG_LEVEL_TRACE */ + + + FT_BASE_DEF( void ) + ft_debug_init( void ) + { + /* nothing */ + } + + +#endif /* !FT_DEBUG_LEVEL_TRACE */ + +#endif /* FT_DEBUG_LEVEL_ERROR */ + + +/* END */ diff --git a/src/3rdparty/freetype/builds/wince/vc2005-ce/freetype.sln b/src/3rdparty/freetype/builds/wince/vc2005-ce/freetype.sln new file mode 100644 index 0000000..67b2216 --- /dev/null +++ b/src/3rdparty/freetype/builds/wince/vc2005-ce/freetype.sln @@ -0,0 +1,158 @@ + +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual Studio 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "freetype", "freetype.vcproj", "{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + LIB Debug Multithreaded|Pocket PC 2003 (ARMV4) = LIB Debug Multithreaded|Pocket PC 2003 (ARMV4) + LIB Debug Multithreaded|Smartphone 2003 (ARMV4) = LIB Debug Multithreaded|Smartphone 2003 (ARMV4) + LIB Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) = LIB Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + LIB Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) = LIB Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + LIB Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) = LIB Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) + LIB Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) = LIB Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) + LIB Debug Singlethreaded|Pocket PC 2003 (ARMV4) = LIB Debug Singlethreaded|Pocket PC 2003 (ARMV4) + LIB Debug Singlethreaded|Smartphone 2003 (ARMV4) = LIB Debug Singlethreaded|Smartphone 2003 (ARMV4) + LIB Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) = LIB Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + LIB Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) = LIB Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + LIB Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) = LIB Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) + LIB Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) = LIB Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) + LIB Debug|Pocket PC 2003 (ARMV4) = LIB Debug|Pocket PC 2003 (ARMV4) + LIB Debug|Smartphone 2003 (ARMV4) = LIB Debug|Smartphone 2003 (ARMV4) + LIB Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) = LIB Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + LIB Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I) = LIB Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + LIB Debug|Windows Mobile 6 Professional SDK (ARMV4I) = LIB Debug|Windows Mobile 6 Professional SDK (ARMV4I) + LIB Debug|Windows Mobile 6 Standard SDK (ARMV4I) = LIB Debug|Windows Mobile 6 Standard SDK (ARMV4I) + LIB Release Multithreaded|Pocket PC 2003 (ARMV4) = LIB Release Multithreaded|Pocket PC 2003 (ARMV4) + LIB Release Multithreaded|Smartphone 2003 (ARMV4) = LIB Release Multithreaded|Smartphone 2003 (ARMV4) + LIB Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) = LIB Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + LIB Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) = LIB Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + LIB Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) = LIB Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) + LIB Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) = LIB Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) + LIB Release Singlethreaded|Pocket PC 2003 (ARMV4) = LIB Release Singlethreaded|Pocket PC 2003 (ARMV4) + LIB Release Singlethreaded|Smartphone 2003 (ARMV4) = LIB Release Singlethreaded|Smartphone 2003 (ARMV4) + LIB Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) = LIB Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + LIB Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) = LIB Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + LIB Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) = LIB Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) + LIB Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) = LIB Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) + LIB Release|Pocket PC 2003 (ARMV4) = LIB Release|Pocket PC 2003 (ARMV4) + LIB Release|Smartphone 2003 (ARMV4) = LIB Release|Smartphone 2003 (ARMV4) + LIB Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) = LIB Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + LIB Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I) = LIB Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + LIB Release|Windows Mobile 6 Professional SDK (ARMV4I) = LIB Release|Windows Mobile 6 Professional SDK (ARMV4I) + LIB Release|Windows Mobile 6 Standard SDK (ARMV4I) = LIB Release|Windows Mobile 6 Standard SDK (ARMV4I) + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Pocket PC 2003 (ARMV4).ActiveCfg = Debug Multithreaded|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Pocket PC 2003 (ARMV4).Build.0 = Debug Multithreaded|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Pocket PC 2003 (ARMV4).Deploy.0 = Debug Multithreaded|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Smartphone 2003 (ARMV4).ActiveCfg = Debug Multithreaded|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Smartphone 2003 (ARMV4).Build.0 = Debug Multithreaded|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Smartphone 2003 (ARMV4).Deploy.0 = Debug Multithreaded|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Pocket PC 2003 (ARMV4).ActiveCfg = Debug Singlethreaded|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Pocket PC 2003 (ARMV4).Build.0 = Debug Singlethreaded|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Pocket PC 2003 (ARMV4).Deploy.0 = Debug Singlethreaded|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Smartphone 2003 (ARMV4).ActiveCfg = Debug Singlethreaded|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Smartphone 2003 (ARMV4).Build.0 = Debug Singlethreaded|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Smartphone 2003 (ARMV4).Deploy.0 = Debug Singlethreaded|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Pocket PC 2003 (ARMV4).ActiveCfg = Debug|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Pocket PC 2003 (ARMV4).Build.0 = Debug|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Pocket PC 2003 (ARMV4).Deploy.0 = Debug|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Smartphone 2003 (ARMV4).ActiveCfg = Debug|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Smartphone 2003 (ARMV4).Build.0 = Debug|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Smartphone 2003 (ARMV4).Deploy.0 = Debug|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Debug|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Pocket PC 2003 (ARMV4).ActiveCfg = Release Multithreaded|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Pocket PC 2003 (ARMV4).Build.0 = Release Multithreaded|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Pocket PC 2003 (ARMV4).Deploy.0 = Release Multithreaded|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Smartphone 2003 (ARMV4).ActiveCfg = Release Multithreaded|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Smartphone 2003 (ARMV4).Build.0 = Release Multithreaded|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Smartphone 2003 (ARMV4).Deploy.0 = Release Multithreaded|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Pocket PC 2003 (ARMV4).ActiveCfg = Release Singlethreaded|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Pocket PC 2003 (ARMV4).Build.0 = Release Singlethreaded|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Pocket PC 2003 (ARMV4).Deploy.0 = Release Singlethreaded|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Smartphone 2003 (ARMV4).ActiveCfg = Release Singlethreaded|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Smartphone 2003 (ARMV4).Build.0 = Release Singlethreaded|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Smartphone 2003 (ARMV4).Deploy.0 = Release Singlethreaded|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Pocket PC 2003 (ARMV4).ActiveCfg = Release|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Pocket PC 2003 (ARMV4).Build.0 = Release|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Pocket PC 2003 (ARMV4).Deploy.0 = Release|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Smartphone 2003 (ARMV4).ActiveCfg = Release|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Smartphone 2003 (ARMV4).Build.0 = Release|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Smartphone 2003 (ARMV4).Deploy.0 = Release|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Releaase|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Release|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 6 Standard SDK (ARMV4I) + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/src/3rdparty/freetype/builds/wince/vc2005-ce/freetype.vcproj b/src/3rdparty/freetype/builds/wince/vc2005-ce/freetype.vcproj new file mode 100644 index 0000000..fcb9a8d --- /dev/null +++ b/src/3rdparty/freetype/builds/wince/vc2005-ce/freetype.vcproj @@ -0,0 +1,3825 @@ +<?xml version="1.0" encoding="Windows-1252"?> +<VisualStudioProject ProjectType="Visual C++" Version="8.00" Name="freetype" ProjectGUID="{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}" TargetFrameworkVersion="0"> + <Platforms> + <Platform Name="Pocket PC 2003 (ARMV4)" /> + <Platform Name="Smartphone 2003 (ARMV4)" /> + <Platform Name="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" /> + <Platform Name="Windows Mobile 5.0 Smartphone SDK (ARMV4I)" /> + <Platform Name="Windows Mobile 6 Professional SDK (ARMV4I)" /> + <Platform Name="Windows Mobile 6 Standard SDK (ARMV4I)" /> + </Platforms> + <ToolFiles> + </ToolFiles> + <Configurations> + <Configuration Name="Release|Pocket PC 2003 (ARMV4)" OutputDirectory="Pocket PC 2003 (ARMV4)\$(ConfigurationName)" IntermediateDirectory="Pocket PC 2003 (ARMV4)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2"> + <Tool Name="VCPreBuildEventTool" /> + <Tool Name="VCCustomBuildTool" /> + <Tool Name="VCXMLDataGeneratorTool" /> + <Tool Name="VCWebServiceProxyGeneratorTool" /> + <Tool Name="VCMIDLTool" TargetEnvironment="1" /> + <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT2_BUILD_LIBRARY;NO_ERRNO_H" StringPooling="false" MinimalRebuild="true" RuntimeLibrary="2" EnableFunctionLevelLinking="false" DisableLanguageExtensions="false" PrecompiledHeaderFile=".\..\..\..\objs\release/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\release/" ObjectFile=".\..\..\..\objs\release/" ProgramDataBaseFileName=".\..\..\..\objs\release/" WarningLevel="4" DebugInformationFormat="0" CompileAs="0" /> + <Tool Name="VCManagedResourceCompilerTool" /> + <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" /> + <Tool Name="VCPreLinkEventTool" /> + <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239.lib" SuppressStartupBanner="true" /> + <Tool Name="VCALinkTool" /> + <Tool Name="VCXDCMakeTool" /> + <Tool Name="VCBscMakeTool" /> + <Tool Name="VCFxCopTool" /> + <Tool Name="VCCodeSignTool" /> + <Tool Name="VCPostBuildEventTool" /> + <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles="" /> + <DebuggerTool /> + </Configuration> + <Configuration Name="Release|Smartphone 2003 (ARMV4)" OutputDirectory="Smartphone 2003 (ARMV4)\$(ConfigurationName)" IntermediateDirectory="Smartphone 2003 (ARMV4)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2"> + <Tool Name="VCPreBuildEventTool" /> + <Tool Name="VCCustomBuildTool" /> + <Tool Name="VCXMLDataGeneratorTool" /> + <Tool Name="VCWebServiceProxyGeneratorTool" /> + <Tool Name="VCMIDLTool" TargetEnvironment="1" /> + <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT2_BUILD_LIBRARY;NO_ERRNO_H" StringPooling="false" MinimalRebuild="true" RuntimeLibrary="2" EnableFunctionLevelLinking="false" DisableLanguageExtensions="false" PrecompiledHeaderFile=".\..\..\..\objs\release/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\release/" ObjectFile=".\..\..\..\objs\release/" ProgramDataBaseFileName=".\..\..\..\objs\release/" WarningLevel="4" DebugInformationFormat="0" CompileAs="0" /> + <Tool Name="VCManagedResourceCompilerTool" /> + <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" /> + <Tool Name="VCPreLinkEventTool" /> + <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239.lib" SuppressStartupBanner="true" /> + <Tool Name="VCALinkTool" /> + <Tool Name="VCXDCMakeTool" /> + <Tool Name="VCBscMakeTool" /> + <Tool Name="VCFxCopTool" /> + <Tool Name="VCCodeSignTool" /> + <Tool Name="VCPostBuildEventTool" /> + <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles="" /> + <DebuggerTool /> + </Configuration> + <Configuration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" OutputDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)" IntermediateDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2"> + <Tool Name="VCPreBuildEventTool" /> + <Tool Name="VCCustomBuildTool" /> + <Tool Name="VCXMLDataGeneratorTool" /> + <Tool Name="VCWebServiceProxyGeneratorTool" /> + <Tool Name="VCMIDLTool" TargetEnvironment="1" /> + <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT2_BUILD_LIBRARY;NO_ERRNO_H" StringPooling="false" MinimalRebuild="true" RuntimeLibrary="2" EnableFunctionLevelLinking="false" DisableLanguageExtensions="false" PrecompiledHeaderFile=".\..\..\..\objs\release/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\release/" ObjectFile=".\..\..\..\objs\release/" ProgramDataBaseFileName=".\..\..\..\objs\release/" WarningLevel="4" DebugInformationFormat="0" CompileAs="0" /> + <Tool Name="VCManagedResourceCompilerTool" /> + <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" /> + <Tool Name="VCPreLinkEventTool" /> + <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239.lib" SuppressStartupBanner="true" /> + <Tool Name="VCALinkTool" /> + <Tool Name="VCXDCMakeTool" /> + <Tool Name="VCBscMakeTool" /> + <Tool Name="VCFxCopTool" /> + <Tool Name="VCCodeSignTool" /> + <Tool Name="VCPostBuildEventTool" /> + <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles="" /> + <DebuggerTool /> + </Configuration> + <Configuration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" OutputDirectory="Windows Mobile 5.0 Smartphone SDK (ARMV4I)\$(ConfigurationName)" IntermediateDirectory="Windows Mobile 5.0 Smartphone SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2"> + <Tool Name="VCPreBuildEventTool" /> + <Tool Name="VCCustomBuildTool" /> + <Tool Name="VCXMLDataGeneratorTool" /> + <Tool Name="VCWebServiceProxyGeneratorTool" /> + <Tool Name="VCMIDLTool" TargetEnvironment="1" /> + <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT2_BUILD_LIBRARY;NO_ERRNO_H" StringPooling="false" MinimalRebuild="true" RuntimeLibrary="2" EnableFunctionLevelLinking="false" DisableLanguageExtensions="false" PrecompiledHeaderFile=".\..\..\..\objs\release/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\release/" ObjectFile=".\..\..\..\objs\release/" ProgramDataBaseFileName=".\..\..\..\objs\release/" WarningLevel="4" DebugInformationFormat="0" CompileAs="0" /> + <Tool Name="VCManagedResourceCompilerTool" /> + <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" /> + <Tool Name="VCPreLinkEventTool" /> + <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239.lib" SuppressStartupBanner="true" /> + <Tool Name="VCALinkTool" /> + <Tool Name="VCXDCMakeTool" /> + <Tool Name="VCBscMakeTool" /> + <Tool Name="VCFxCopTool" /> + <Tool Name="VCCodeSignTool" /> + <Tool Name="VCPostBuildEventTool" /> + <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles="" /> + <DebuggerTool /> + </Configuration> + <Configuration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" OutputDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)" IntermediateDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2"> + <Tool Name="VCPreBuildEventTool" /> + <Tool Name="VCCustomBuildTool" /> + <Tool Name="VCXMLDataGeneratorTool" /> + <Tool Name="VCWebServiceProxyGeneratorTool" /> + <Tool Name="VCMIDLTool" TargetEnvironment="1" /> + <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT2_BUILD_LIBRARY;NO_ERRNO_H" StringPooling="false" MinimalRebuild="true" RuntimeLibrary="2" EnableFunctionLevelLinking="false" DisableLanguageExtensions="false" PrecompiledHeaderFile=".\..\..\..\objs\release/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\release/" ObjectFile=".\..\..\..\objs\release/" ProgramDataBaseFileName=".\..\..\..\objs\release/" WarningLevel="4" DebugInformationFormat="0" CompileAs="0" /> + <Tool Name="VCManagedResourceCompilerTool" /> + <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" /> + <Tool Name="VCPreLinkEventTool" /> + <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239.lib" SuppressStartupBanner="true" /> + <Tool Name="VCALinkTool" /> + <Tool Name="VCXDCMakeTool" /> + <Tool Name="VCBscMakeTool" /> + <Tool Name="VCFxCopTool" /> + <Tool Name="VCCodeSignTool" /> + <Tool Name="VCPostBuildEventTool" /> + <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles="" /> + <DebuggerTool /> + </Configuration> + <Configuration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" OutputDirectory="Windows Mobile 6 Standard SDK (ARMV4I)\$(ConfigurationName)" IntermediateDirectory="Windows Mobile 6 Standard SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2"> + <Tool Name="VCPreBuildEventTool" /> + <Tool Name="VCCustomBuildTool" /> + <Tool Name="VCXMLDataGeneratorTool" /> + <Tool Name="VCWebServiceProxyGeneratorTool" /> + <Tool Name="VCMIDLTool" TargetEnvironment="1" /> + <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT2_BUILD_LIBRARY;NO_ERRNO_H" StringPooling="false" MinimalRebuild="true" RuntimeLibrary="2" EnableFunctionLevelLinking="false" DisableLanguageExtensions="false" PrecompiledHeaderFile=".\..\..\..\objs\release/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\release/" ObjectFile=".\..\..\..\objs\release/" ProgramDataBaseFileName=".\..\..\..\objs\release/" WarningLevel="4" DebugInformationFormat="0" CompileAs="0" /> + <Tool Name="VCManagedResourceCompilerTool" /> + <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" /> + <Tool Name="VCPreLinkEventTool" /> + <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239.lib" SuppressStartupBanner="true" /> + <Tool Name="VCALinkTool" /> + <Tool Name="VCXDCMakeTool" /> + <Tool Name="VCBscMakeTool" /> + <Tool Name="VCFxCopTool" /> + <Tool Name="VCCodeSignTool" /> + <Tool Name="VCPostBuildEventTool" /> + <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles="" /> + <DebuggerTool /> + </Configuration> + <Configuration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)" OutputDirectory="Pocket PC 2003 (ARMV4)\$(ConfigurationName)" IntermediateDirectory="Pocket PC 2003 (ARMV4)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2"> + <Tool Name="VCPreBuildEventTool" /> + <Tool Name="VCCustomBuildTool" /> + <Tool Name="VCXMLDataGeneratorTool" /> + <Tool Name="VCWebServiceProxyGeneratorTool" /> + <Tool Name="VCMIDLTool" TargetEnvironment="1" /> + <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT2_BUILD_LIBRARY;NO_ERRNO_H" StringPooling="true" RuntimeLibrary="0" EnableFunctionLevelLinking="true" DisableLanguageExtensions="false" PrecompiledHeaderFile=".\..\..\..\objs\release_mt/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\release_mt/" ObjectFile=".\..\..\..\objs\release_mt/" ProgramDataBaseFileName=".\..\..\..\objs\release_mt/" WarningLevel="4" DebugInformationFormat="0" CompileAs="0" /> + <Tool Name="VCManagedResourceCompilerTool" /> + <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" /> + <Tool Name="VCPreLinkEventTool" /> + <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239MT.lib" SuppressStartupBanner="true" /> + <Tool Name="VCALinkTool" /> + <Tool Name="VCXDCMakeTool" /> + <Tool Name="VCBscMakeTool" /> + <Tool Name="VCFxCopTool" /> + <Tool Name="VCCodeSignTool" /> + <Tool Name="VCPostBuildEventTool" /> + <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles="" /> + <DebuggerTool /> + </Configuration> + <Configuration Name="Release Multithreaded|Smartphone 2003 (ARMV4)" OutputDirectory="Smartphone 2003 (ARMV4)\$(ConfigurationName)" IntermediateDirectory="Smartphone 2003 (ARMV4)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2"> + <Tool Name="VCPreBuildEventTool" /> + <Tool Name="VCCustomBuildTool" /> + <Tool Name="VCXMLDataGeneratorTool" /> + <Tool Name="VCWebServiceProxyGeneratorTool" /> + <Tool Name="VCMIDLTool" TargetEnvironment="1" /> + <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT2_BUILD_LIBRARY;NO_ERRNO_H" StringPooling="true" RuntimeLibrary="0" EnableFunctionLevelLinking="true" DisableLanguageExtensions="false" PrecompiledHeaderFile=".\..\..\..\objs\release_mt/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\release_mt/" ObjectFile=".\..\..\..\objs\release_mt/" ProgramDataBaseFileName=".\..\..\..\objs\release_mt/" WarningLevel="4" DebugInformationFormat="0" CompileAs="0" /> + <Tool Name="VCManagedResourceCompilerTool" /> + <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" /> + <Tool Name="VCPreLinkEventTool" /> + <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239MT.lib" SuppressStartupBanner="true" /> + <Tool Name="VCALinkTool" /> + <Tool Name="VCXDCMakeTool" /> + <Tool Name="VCBscMakeTool" /> + <Tool Name="VCFxCopTool" /> + <Tool Name="VCCodeSignTool" /> + <Tool Name="VCPostBuildEventTool" /> + <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles="" /> + <DebuggerTool /> + </Configuration> + <Configuration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" OutputDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)" IntermediateDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2"> + <Tool Name="VCPreBuildEventTool" /> + <Tool Name="VCCustomBuildTool" /> + <Tool Name="VCXMLDataGeneratorTool" /> + <Tool Name="VCWebServiceProxyGeneratorTool" /> + <Tool Name="VCMIDLTool" TargetEnvironment="1" /> + <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT2_BUILD_LIBRARY;NO_ERRNO_H" StringPooling="true" RuntimeLibrary="0" EnableFunctionLevelLinking="true" DisableLanguageExtensions="false" PrecompiledHeaderFile=".\..\..\..\objs\release_mt/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\release_mt/" ObjectFile=".\..\..\..\objs\release_mt/" ProgramDataBaseFileName=".\..\..\..\objs\release_mt/" WarningLevel="4" DebugInformationFormat="0" CompileAs="0" /> + <Tool Name="VCManagedResourceCompilerTool" /> + <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" /> + <Tool Name="VCPreLinkEventTool" /> + <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239MT.lib" SuppressStartupBanner="true" /> + <Tool Name="VCALinkTool" /> + <Tool Name="VCXDCMakeTool" /> + <Tool Name="VCBscMakeTool" /> + <Tool Name="VCFxCopTool" /> + <Tool Name="VCCodeSignTool" /> + <Tool Name="VCPostBuildEventTool" /> + <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles="" /> + <DebuggerTool /> + </Configuration> + <Configuration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" OutputDirectory="Windows Mobile 5.0 Smartphone SDK (ARMV4I)\$(ConfigurationName)" IntermediateDirectory="Windows Mobile 5.0 Smartphone SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2"> + <Tool Name="VCPreBuildEventTool" /> + <Tool Name="VCCustomBuildTool" /> + <Tool Name="VCXMLDataGeneratorTool" /> + <Tool Name="VCWebServiceProxyGeneratorTool" /> + <Tool Name="VCMIDLTool" TargetEnvironment="1" /> + <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT2_BUILD_LIBRARY;NO_ERRNO_H" StringPooling="true" RuntimeLibrary="0" EnableFunctionLevelLinking="true" DisableLanguageExtensions="false" PrecompiledHeaderFile=".\..\..\..\objs\release_mt/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\release_mt/" ObjectFile=".\..\..\..\objs\release_mt/" ProgramDataBaseFileName=".\..\..\..\objs\release_mt/" WarningLevel="4" DebugInformationFormat="0" CompileAs="0" /> + <Tool Name="VCManagedResourceCompilerTool" /> + <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" /> + <Tool Name="VCPreLinkEventTool" /> + <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239MT.lib" SuppressStartupBanner="true" /> + <Tool Name="VCALinkTool" /> + <Tool Name="VCXDCMakeTool" /> + <Tool Name="VCBscMakeTool" /> + <Tool Name="VCFxCopTool" /> + <Tool Name="VCCodeSignTool" /> + <Tool Name="VCPostBuildEventTool" /> + <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles="" /> + <DebuggerTool /> + </Configuration> + <Configuration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" OutputDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)" IntermediateDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2"> + <Tool Name="VCPreBuildEventTool" /> + <Tool Name="VCCustomBuildTool" /> + <Tool Name="VCXMLDataGeneratorTool" /> + <Tool Name="VCWebServiceProxyGeneratorTool" /> + <Tool Name="VCMIDLTool" TargetEnvironment="1" /> + <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT2_BUILD_LIBRARY;NO_ERRNO_H" StringPooling="true" RuntimeLibrary="0" EnableFunctionLevelLinking="true" DisableLanguageExtensions="false" PrecompiledHeaderFile=".\..\..\..\objs\release_mt/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\release_mt/" ObjectFile=".\..\..\..\objs\release_mt/" ProgramDataBaseFileName=".\..\..\..\objs\release_mt/" WarningLevel="4" DebugInformationFormat="0" CompileAs="0" /> + <Tool Name="VCManagedResourceCompilerTool" /> + <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" /> + <Tool Name="VCPreLinkEventTool" /> + <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239MT.lib" SuppressStartupBanner="true" /> + <Tool Name="VCALinkTool" /> + <Tool Name="VCXDCMakeTool" /> + <Tool Name="VCBscMakeTool" /> + <Tool Name="VCFxCopTool" /> + <Tool Name="VCCodeSignTool" /> + <Tool Name="VCPostBuildEventTool" /> + <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles="" /> + <DebuggerTool /> + </Configuration> + <Configuration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" OutputDirectory="Windows Mobile 6 Standard SDK (ARMV4I)\$(ConfigurationName)" IntermediateDirectory="Windows Mobile 6 Standard SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2"> + <Tool Name="VCPreBuildEventTool" /> + <Tool Name="VCCustomBuildTool" /> + <Tool Name="VCXMLDataGeneratorTool" /> + <Tool Name="VCWebServiceProxyGeneratorTool" /> + <Tool Name="VCMIDLTool" TargetEnvironment="1" /> + <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT2_BUILD_LIBRARY;NO_ERRNO_H" StringPooling="true" RuntimeLibrary="0" EnableFunctionLevelLinking="true" DisableLanguageExtensions="false" PrecompiledHeaderFile=".\..\..\..\objs\release_mt/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\release_mt/" ObjectFile=".\..\..\..\objs\release_mt/" ProgramDataBaseFileName=".\..\..\..\objs\release_mt/" WarningLevel="4" DebugInformationFormat="0" CompileAs="0" /> + <Tool Name="VCManagedResourceCompilerTool" /> + <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" /> + <Tool Name="VCPreLinkEventTool" /> + <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239MT.lib" SuppressStartupBanner="true" /> + <Tool Name="VCALinkTool" /> + <Tool Name="VCXDCMakeTool" /> + <Tool Name="VCBscMakeTool" /> + <Tool Name="VCFxCopTool" /> + <Tool Name="VCCodeSignTool" /> + <Tool Name="VCPostBuildEventTool" /> + <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles="" /> + <DebuggerTool /> + </Configuration> + <Configuration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" OutputDirectory="Pocket PC 2003 (ARMV4)\$(ConfigurationName)" IntermediateDirectory="Pocket PC 2003 (ARMV4)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2"> + <Tool Name="VCPreBuildEventTool" /> + <Tool Name="VCCustomBuildTool" /> + <Tool Name="VCXMLDataGeneratorTool" /> + <Tool Name="VCWebServiceProxyGeneratorTool" /> + <Tool Name="VCMIDLTool" TargetEnvironment="1" /> + <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);WIN32;_LIB;FT2_BUILD_LIBRARY;NO_ERRNO_H" StringPooling="false" RuntimeLibrary="0" EnableFunctionLevelLinking="false" DisableLanguageExtensions="false" PrecompiledHeaderFile=".\..\..\..\objs\release_st/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\release_st/" ObjectFile=".\..\..\..\objs\release_st/" ProgramDataBaseFileName=".\..\..\..\objs\release_st/" WarningLevel="4" DebugInformationFormat="0" CompileAs="0" /> + <Tool Name="VCManagedResourceCompilerTool" /> + <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" /> + <Tool Name="VCPreLinkEventTool" /> + <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239ST.lib" /> + <Tool Name="VCALinkTool" /> + <Tool Name="VCXDCMakeTool" /> + <Tool Name="VCBscMakeTool" /> + <Tool Name="VCFxCopTool" /> + <Tool Name="VCCodeSignTool" /> + <Tool Name="VCPostBuildEventTool" /> + <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles="" /> + <DebuggerTool /> + </Configuration> + <Configuration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)" OutputDirectory="Smartphone 2003 (ARMV4)\$(ConfigurationName)" IntermediateDirectory="Smartphone 2003 (ARMV4)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2"> + <Tool Name="VCPreBuildEventTool" /> + <Tool Name="VCCustomBuildTool" /> + <Tool Name="VCXMLDataGeneratorTool" /> + <Tool Name="VCWebServiceProxyGeneratorTool" /> + <Tool Name="VCMIDLTool" TargetEnvironment="1" /> + <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);WIN32;_LIB;FT2_BUILD_LIBRARY;NO_ERRNO_H" StringPooling="false" RuntimeLibrary="0" EnableFunctionLevelLinking="false" DisableLanguageExtensions="false" PrecompiledHeaderFile=".\..\..\..\objs\release_st/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\release_st/" ObjectFile=".\..\..\..\objs\release_st/" ProgramDataBaseFileName=".\..\..\..\objs\release_st/" WarningLevel="4" DebugInformationFormat="0" CompileAs="0" /> + <Tool Name="VCManagedResourceCompilerTool" /> + <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" /> + <Tool Name="VCPreLinkEventTool" /> + <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239ST.lib" /> + <Tool Name="VCALinkTool" /> + <Tool Name="VCXDCMakeTool" /> + <Tool Name="VCBscMakeTool" /> + <Tool Name="VCFxCopTool" /> + <Tool Name="VCCodeSignTool" /> + <Tool Name="VCPostBuildEventTool" /> + <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles="" /> + <DebuggerTool /> + </Configuration> + <Configuration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" OutputDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)" IntermediateDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2"> + <Tool Name="VCPreBuildEventTool" /> + <Tool Name="VCCustomBuildTool" /> + <Tool Name="VCXMLDataGeneratorTool" /> + <Tool Name="VCWebServiceProxyGeneratorTool" /> + <Tool Name="VCMIDLTool" TargetEnvironment="1" /> + <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);WIN32;_LIB;FT2_BUILD_LIBRARY;NO_ERRNO_H" StringPooling="false" RuntimeLibrary="0" EnableFunctionLevelLinking="false" DisableLanguageExtensions="false" PrecompiledHeaderFile=".\..\..\..\objs\release_st/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\release_st/" ObjectFile=".\..\..\..\objs\release_st/" ProgramDataBaseFileName=".\..\..\..\objs\release_st/" WarningLevel="4" DebugInformationFormat="0" CompileAs="0" /> + <Tool Name="VCManagedResourceCompilerTool" /> + <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" /> + <Tool Name="VCPreLinkEventTool" /> + <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239ST.lib" /> + <Tool Name="VCALinkTool" /> + <Tool Name="VCXDCMakeTool" /> + <Tool Name="VCBscMakeTool" /> + <Tool Name="VCFxCopTool" /> + <Tool Name="VCCodeSignTool" /> + <Tool Name="VCPostBuildEventTool" /> + <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles="" /> + <DebuggerTool /> + </Configuration> + <Configuration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" OutputDirectory="Windows Mobile 5.0 Smartphone SDK (ARMV4I)\$(ConfigurationName)" IntermediateDirectory="Windows Mobile 5.0 Smartphone SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2"> + <Tool Name="VCPreBuildEventTool" /> + <Tool Name="VCCustomBuildTool" /> + <Tool Name="VCXMLDataGeneratorTool" /> + <Tool Name="VCWebServiceProxyGeneratorTool" /> + <Tool Name="VCMIDLTool" TargetEnvironment="1" /> + <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);WIN32;_LIB;FT2_BUILD_LIBRARY;NO_ERRNO_H" StringPooling="false" RuntimeLibrary="0" EnableFunctionLevelLinking="false" DisableLanguageExtensions="false" PrecompiledHeaderFile=".\..\..\..\objs\release_st/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\release_st/" ObjectFile=".\..\..\..\objs\release_st/" ProgramDataBaseFileName=".\..\..\..\objs\release_st/" WarningLevel="4" DebugInformationFormat="0" CompileAs="0" /> + <Tool Name="VCManagedResourceCompilerTool" /> + <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" /> + <Tool Name="VCPreLinkEventTool" /> + <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239ST.lib" /> + <Tool Name="VCALinkTool" /> + <Tool Name="VCXDCMakeTool" /> + <Tool Name="VCBscMakeTool" /> + <Tool Name="VCFxCopTool" /> + <Tool Name="VCCodeSignTool" /> + <Tool Name="VCPostBuildEventTool" /> + <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles="" /> + <DebuggerTool /> + </Configuration> + <Configuration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" OutputDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)" IntermediateDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2"> + <Tool Name="VCPreBuildEventTool" /> + <Tool Name="VCCustomBuildTool" /> + <Tool Name="VCXMLDataGeneratorTool" /> + <Tool Name="VCWebServiceProxyGeneratorTool" /> + <Tool Name="VCMIDLTool" TargetEnvironment="1" /> + <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);WIN32;_LIB;FT2_BUILD_LIBRARY;NO_ERRNO_H" StringPooling="false" RuntimeLibrary="0" EnableFunctionLevelLinking="false" DisableLanguageExtensions="false" PrecompiledHeaderFile=".\..\..\..\objs\release_st/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\release_st/" ObjectFile=".\..\..\..\objs\release_st/" ProgramDataBaseFileName=".\..\..\..\objs\release_st/" WarningLevel="4" DebugInformationFormat="0" CompileAs="0" /> + <Tool Name="VCManagedResourceCompilerTool" /> + <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" /> + <Tool Name="VCPreLinkEventTool" /> + <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239ST.lib" /> + <Tool Name="VCALinkTool" /> + <Tool Name="VCXDCMakeTool" /> + <Tool Name="VCBscMakeTool" /> + <Tool Name="VCFxCopTool" /> + <Tool Name="VCCodeSignTool" /> + <Tool Name="VCPostBuildEventTool" /> + <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles="" /> + <DebuggerTool /> + </Configuration> + <Configuration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" OutputDirectory="Windows Mobile 6 Standard SDK (ARMV4I)\$(ConfigurationName)" IntermediateDirectory="Windows Mobile 6 Standard SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2"> + <Tool Name="VCPreBuildEventTool" /> + <Tool Name="VCCustomBuildTool" /> + <Tool Name="VCXMLDataGeneratorTool" /> + <Tool Name="VCWebServiceProxyGeneratorTool" /> + <Tool Name="VCMIDLTool" TargetEnvironment="1" /> + <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);WIN32;_LIB;FT2_BUILD_LIBRARY;NO_ERRNO_H" StringPooling="false" RuntimeLibrary="0" EnableFunctionLevelLinking="false" DisableLanguageExtensions="false" PrecompiledHeaderFile=".\..\..\..\objs\release_st/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\release_st/" ObjectFile=".\..\..\..\objs\release_st/" ProgramDataBaseFileName=".\..\..\..\objs\release_st/" WarningLevel="4" DebugInformationFormat="0" CompileAs="0" /> + <Tool Name="VCManagedResourceCompilerTool" /> + <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" /> + <Tool Name="VCPreLinkEventTool" /> + <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239ST.lib" /> + <Tool Name="VCALinkTool" /> + <Tool Name="VCXDCMakeTool" /> + <Tool Name="VCBscMakeTool" /> + <Tool Name="VCFxCopTool" /> + <Tool Name="VCCodeSignTool" /> + <Tool Name="VCPostBuildEventTool" /> + <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles="" /> + <DebuggerTool /> + </Configuration> + <Configuration Name="Debug|Pocket PC 2003 (ARMV4)" OutputDirectory="Pocket PC 2003 (ARMV4)\$(ConfigurationName)" IntermediateDirectory="Pocket PC 2003 (ARMV4)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2"> + <Tool Name="VCPreBuildEventTool" /> + <Tool Name="VCCustomBuildTool" /> + <Tool Name="VCXMLDataGeneratorTool" /> + <Tool Name="VCWebServiceProxyGeneratorTool" /> + <Tool Name="VCMIDLTool" TargetEnvironment="1" /> + <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="0" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;NO_ERRNO_H" RuntimeLibrary="3" DisableLanguageExtensions="false" PrecompiledHeaderFile=".\..\..\..\objs\debug/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\debug/" ObjectFile=".\..\..\..\objs\debug/" ProgramDataBaseFileName=".\..\..\..\objs\debug/" WarningLevel="4" DebugInformationFormat="3" CompileAs="0" /> + <Tool Name="VCManagedResourceCompilerTool" /> + <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" /> + <Tool Name="VCPreLinkEventTool" /> + <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239_D.lib" SuppressStartupBanner="true" /> + <Tool Name="VCALinkTool" /> + <Tool Name="VCXDCMakeTool" /> + <Tool Name="VCBscMakeTool" /> + <Tool Name="VCFxCopTool" /> + <Tool Name="VCCodeSignTool" /> + <Tool Name="VCPostBuildEventTool" /> + <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles="" /> + <DebuggerTool /> + </Configuration> + <Configuration Name="Debug|Smartphone 2003 (ARMV4)" OutputDirectory="Smartphone 2003 (ARMV4)\$(ConfigurationName)" IntermediateDirectory="Smartphone 2003 (ARMV4)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2"> + <Tool Name="VCPreBuildEventTool" /> + <Tool Name="VCCustomBuildTool" /> + <Tool Name="VCXMLDataGeneratorTool" /> + <Tool Name="VCWebServiceProxyGeneratorTool" /> + <Tool Name="VCMIDLTool" TargetEnvironment="1" /> + <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="0" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;NO_ERRNO_H" RuntimeLibrary="3" DisableLanguageExtensions="false" PrecompiledHeaderFile=".\..\..\..\objs\debug/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\debug/" ObjectFile=".\..\..\..\objs\debug/" ProgramDataBaseFileName=".\..\..\..\objs\debug/" WarningLevel="4" DebugInformationFormat="3" CompileAs="0" /> + <Tool Name="VCManagedResourceCompilerTool" /> + <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" /> + <Tool Name="VCPreLinkEventTool" /> + <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239_D.lib" SuppressStartupBanner="true" /> + <Tool Name="VCALinkTool" /> + <Tool Name="VCXDCMakeTool" /> + <Tool Name="VCBscMakeTool" /> + <Tool Name="VCFxCopTool" /> + <Tool Name="VCCodeSignTool" /> + <Tool Name="VCPostBuildEventTool" /> + <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles="" /> + <DebuggerTool /> + </Configuration> + <Configuration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" OutputDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)" IntermediateDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2"> + <Tool Name="VCPreBuildEventTool" /> + <Tool Name="VCCustomBuildTool" /> + <Tool Name="VCXMLDataGeneratorTool" /> + <Tool Name="VCWebServiceProxyGeneratorTool" /> + <Tool Name="VCMIDLTool" TargetEnvironment="1" /> + <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="0" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;NO_ERRNO_H" RuntimeLibrary="3" DisableLanguageExtensions="false" PrecompiledHeaderFile=".\..\..\..\objs\debug/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\debug/" ObjectFile=".\..\..\..\objs\debug/" ProgramDataBaseFileName=".\..\..\..\objs\debug/" WarningLevel="4" DebugInformationFormat="3" CompileAs="0" /> + <Tool Name="VCManagedResourceCompilerTool" /> + <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" /> + <Tool Name="VCPreLinkEventTool" /> + <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239_D.lib" SuppressStartupBanner="true" /> + <Tool Name="VCALinkTool" /> + <Tool Name="VCXDCMakeTool" /> + <Tool Name="VCBscMakeTool" /> + <Tool Name="VCFxCopTool" /> + <Tool Name="VCCodeSignTool" /> + <Tool Name="VCPostBuildEventTool" /> + <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles="" /> + <DebuggerTool /> + </Configuration> + <Configuration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" OutputDirectory="Windows Mobile 5.0 Smartphone SDK (ARMV4I)\$(ConfigurationName)" IntermediateDirectory="Windows Mobile 5.0 Smartphone SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2"> + <Tool Name="VCPreBuildEventTool" /> + <Tool Name="VCCustomBuildTool" /> + <Tool Name="VCXMLDataGeneratorTool" /> + <Tool Name="VCWebServiceProxyGeneratorTool" /> + <Tool Name="VCMIDLTool" TargetEnvironment="1" /> + <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="0" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;NO_ERRNO_H" RuntimeLibrary="3" DisableLanguageExtensions="false" PrecompiledHeaderFile=".\..\..\..\objs\debug/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\debug/" ObjectFile=".\..\..\..\objs\debug/" ProgramDataBaseFileName=".\..\..\..\objs\debug/" WarningLevel="4" DebugInformationFormat="3" CompileAs="0" /> + <Tool Name="VCManagedResourceCompilerTool" /> + <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" /> + <Tool Name="VCPreLinkEventTool" /> + <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239_D.lib" SuppressStartupBanner="true" /> + <Tool Name="VCALinkTool" /> + <Tool Name="VCXDCMakeTool" /> + <Tool Name="VCBscMakeTool" /> + <Tool Name="VCFxCopTool" /> + <Tool Name="VCCodeSignTool" /> + <Tool Name="VCPostBuildEventTool" /> + <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles="" /> + <DebuggerTool /> + </Configuration> + <Configuration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" OutputDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)" IntermediateDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2"> + <Tool Name="VCPreBuildEventTool" /> + <Tool Name="VCCustomBuildTool" /> + <Tool Name="VCXMLDataGeneratorTool" /> + <Tool Name="VCWebServiceProxyGeneratorTool" /> + <Tool Name="VCMIDLTool" TargetEnvironment="1" /> + <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="0" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;NO_ERRNO_H" RuntimeLibrary="3" DisableLanguageExtensions="false" PrecompiledHeaderFile=".\..\..\..\objs\debug/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\debug/" ObjectFile=".\..\..\..\objs\debug/" ProgramDataBaseFileName=".\..\..\..\objs\debug/" WarningLevel="4" DebugInformationFormat="3" CompileAs="0" /> + <Tool Name="VCManagedResourceCompilerTool" /> + <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" /> + <Tool Name="VCPreLinkEventTool" /> + <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239_D.lib" SuppressStartupBanner="true" /> + <Tool Name="VCALinkTool" /> + <Tool Name="VCXDCMakeTool" /> + <Tool Name="VCBscMakeTool" /> + <Tool Name="VCFxCopTool" /> + <Tool Name="VCCodeSignTool" /> + <Tool Name="VCPostBuildEventTool" /> + <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles="" /> + <DebuggerTool /> + </Configuration> + <Configuration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" OutputDirectory="Windows Mobile 6 Standard SDK (ARMV4I)\$(ConfigurationName)" IntermediateDirectory="Windows Mobile 6 Standard SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2"> + <Tool Name="VCPreBuildEventTool" /> + <Tool Name="VCCustomBuildTool" /> + <Tool Name="VCXMLDataGeneratorTool" /> + <Tool Name="VCWebServiceProxyGeneratorTool" /> + <Tool Name="VCMIDLTool" TargetEnvironment="1" /> + <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="0" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;NO_ERRNO_H" RuntimeLibrary="3" DisableLanguageExtensions="false" PrecompiledHeaderFile=".\..\..\..\objs\debug/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\debug/" ObjectFile=".\..\..\..\objs\debug/" ProgramDataBaseFileName=".\..\..\..\objs\debug/" WarningLevel="4" DebugInformationFormat="3" CompileAs="0" /> + <Tool Name="VCManagedResourceCompilerTool" /> + <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" /> + <Tool Name="VCPreLinkEventTool" /> + <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239_D.lib" SuppressStartupBanner="true" /> + <Tool Name="VCALinkTool" /> + <Tool Name="VCXDCMakeTool" /> + <Tool Name="VCBscMakeTool" /> + <Tool Name="VCFxCopTool" /> + <Tool Name="VCCodeSignTool" /> + <Tool Name="VCPostBuildEventTool" /> + <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles="" /> + <DebuggerTool /> + </Configuration> + <Configuration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" OutputDirectory="Pocket PC 2003 (ARMV4)\$(ConfigurationName)" IntermediateDirectory="Pocket PC 2003 (ARMV4)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2"> + <Tool Name="VCPreBuildEventTool" /> + <Tool Name="VCCustomBuildTool" /> + <Tool Name="VCXMLDataGeneratorTool" /> + <Tool Name="VCWebServiceProxyGeneratorTool" /> + <Tool Name="VCMIDLTool" TargetEnvironment="1" /> + <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="0" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_DEBUG;_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY" RuntimeLibrary="1" DisableLanguageExtensions="true" PrecompiledHeaderFile=".\..\..\..\objs\debug_st/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\debug_st/" ObjectFile=".\..\..\..\objs\debug_st/" ProgramDataBaseFileName=".\..\..\..\objs\debug_st/" WarningLevel="4" DebugInformationFormat="3" CompileAs="0" /> + <Tool Name="VCManagedResourceCompilerTool" /> + <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" /> + <Tool Name="VCPreLinkEventTool" /> + <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239ST_D.lib" SuppressStartupBanner="true" /> + <Tool Name="VCALinkTool" /> + <Tool Name="VCXDCMakeTool" /> + <Tool Name="VCBscMakeTool" /> + <Tool Name="VCFxCopTool" /> + <Tool Name="VCCodeSignTool" /> + <Tool Name="VCPostBuildEventTool" /> + <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles="" /> + <DebuggerTool /> + </Configuration> + <Configuration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" OutputDirectory="Smartphone 2003 (ARMV4)\$(ConfigurationName)" IntermediateDirectory="Smartphone 2003 (ARMV4)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2"> + <Tool Name="VCPreBuildEventTool" /> + <Tool Name="VCCustomBuildTool" /> + <Tool Name="VCXMLDataGeneratorTool" /> + <Tool Name="VCWebServiceProxyGeneratorTool" /> + <Tool Name="VCMIDLTool" TargetEnvironment="1" /> + <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="0" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_DEBUG;_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY" RuntimeLibrary="1" DisableLanguageExtensions="true" PrecompiledHeaderFile=".\..\..\..\objs\debug_st/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\debug_st/" ObjectFile=".\..\..\..\objs\debug_st/" ProgramDataBaseFileName=".\..\..\..\objs\debug_st/" WarningLevel="4" DebugInformationFormat="3" CompileAs="0" /> + <Tool Name="VCManagedResourceCompilerTool" /> + <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" /> + <Tool Name="VCPreLinkEventTool" /> + <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239ST_D.lib" SuppressStartupBanner="true" /> + <Tool Name="VCALinkTool" /> + <Tool Name="VCXDCMakeTool" /> + <Tool Name="VCBscMakeTool" /> + <Tool Name="VCFxCopTool" /> + <Tool Name="VCCodeSignTool" /> + <Tool Name="VCPostBuildEventTool" /> + <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles="" /> + <DebuggerTool /> + </Configuration> + <Configuration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" OutputDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)" IntermediateDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2"> + <Tool Name="VCPreBuildEventTool" /> + <Tool Name="VCCustomBuildTool" /> + <Tool Name="VCXMLDataGeneratorTool" /> + <Tool Name="VCWebServiceProxyGeneratorTool" /> + <Tool Name="VCMIDLTool" TargetEnvironment="1" /> + <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="0" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;NO_ERRNO_H" RuntimeLibrary="1" DisableLanguageExtensions="true" PrecompiledHeaderFile=".\..\..\..\objs\debug_st/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\debug_st/" ObjectFile=".\..\..\..\objs\debug_st/" ProgramDataBaseFileName=".\..\..\..\objs\debug_st/" WarningLevel="4" DebugInformationFormat="3" CompileAs="0" /> + <Tool Name="VCManagedResourceCompilerTool" /> + <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" /> + <Tool Name="VCPreLinkEventTool" /> + <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239ST_D.lib" SuppressStartupBanner="true" /> + <Tool Name="VCALinkTool" /> + <Tool Name="VCXDCMakeTool" /> + <Tool Name="VCBscMakeTool" /> + <Tool Name="VCFxCopTool" /> + <Tool Name="VCCodeSignTool" /> + <Tool Name="VCPostBuildEventTool" /> + <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles="" /> + <DebuggerTool /> + </Configuration> + <Configuration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" OutputDirectory="Windows Mobile 5.0 Smartphone SDK (ARMV4I)\$(ConfigurationName)" IntermediateDirectory="Windows Mobile 5.0 Smartphone SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2"> + <Tool Name="VCPreBuildEventTool" /> + <Tool Name="VCCustomBuildTool" /> + <Tool Name="VCXMLDataGeneratorTool" /> + <Tool Name="VCWebServiceProxyGeneratorTool" /> + <Tool Name="VCMIDLTool" TargetEnvironment="1" /> + <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="0" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_DEBUG;_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY" RuntimeLibrary="1" DisableLanguageExtensions="true" PrecompiledHeaderFile=".\..\..\..\objs\debug_st/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\debug_st/" ObjectFile=".\..\..\..\objs\debug_st/" ProgramDataBaseFileName=".\..\..\..\objs\debug_st/" WarningLevel="4" DebugInformationFormat="3" CompileAs="0" /> + <Tool Name="VCManagedResourceCompilerTool" /> + <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" /> + <Tool Name="VCPreLinkEventTool" /> + <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239ST_D.lib" SuppressStartupBanner="true" /> + <Tool Name="VCALinkTool" /> + <Tool Name="VCXDCMakeTool" /> + <Tool Name="VCBscMakeTool" /> + <Tool Name="VCFxCopTool" /> + <Tool Name="VCCodeSignTool" /> + <Tool Name="VCPostBuildEventTool" /> + <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles="" /> + <DebuggerTool /> + </Configuration> + <Configuration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" OutputDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)" IntermediateDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2"> + <Tool Name="VCPreBuildEventTool" /> + <Tool Name="VCCustomBuildTool" /> + <Tool Name="VCXMLDataGeneratorTool" /> + <Tool Name="VCWebServiceProxyGeneratorTool" /> + <Tool Name="VCMIDLTool" TargetEnvironment="1" /> + <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="0" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_DEBUG;_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY" RuntimeLibrary="1" DisableLanguageExtensions="true" PrecompiledHeaderFile=".\..\..\..\objs\debug_st/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\debug_st/" ObjectFile=".\..\..\..\objs\debug_st/" ProgramDataBaseFileName=".\..\..\..\objs\debug_st/" WarningLevel="4" DebugInformationFormat="3" CompileAs="0" /> + <Tool Name="VCManagedResourceCompilerTool" /> + <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" /> + <Tool Name="VCPreLinkEventTool" /> + <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239ST_D.lib" SuppressStartupBanner="true" /> + <Tool Name="VCALinkTool" /> + <Tool Name="VCXDCMakeTool" /> + <Tool Name="VCBscMakeTool" /> + <Tool Name="VCFxCopTool" /> + <Tool Name="VCCodeSignTool" /> + <Tool Name="VCPostBuildEventTool" /> + <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles="" /> + <DebuggerTool /> + </Configuration> + <Configuration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" OutputDirectory="Windows Mobile 6 Standard SDK (ARMV4I)\$(ConfigurationName)" IntermediateDirectory="Windows Mobile 6 Standard SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2"> + <Tool Name="VCPreBuildEventTool" /> + <Tool Name="VCCustomBuildTool" /> + <Tool Name="VCXMLDataGeneratorTool" /> + <Tool Name="VCWebServiceProxyGeneratorTool" /> + <Tool Name="VCMIDLTool" TargetEnvironment="1" /> + <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="0" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_DEBUG;_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY" RuntimeLibrary="1" DisableLanguageExtensions="true" PrecompiledHeaderFile=".\..\..\..\objs\debug_st/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\debug_st/" ObjectFile=".\..\..\..\objs\debug_st/" ProgramDataBaseFileName=".\..\..\..\objs\debug_st/" WarningLevel="4" DebugInformationFormat="3" CompileAs="0" /> + <Tool Name="VCManagedResourceCompilerTool" /> + <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" /> + <Tool Name="VCPreLinkEventTool" /> + <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239ST_D.lib" SuppressStartupBanner="true" /> + <Tool Name="VCALinkTool" /> + <Tool Name="VCXDCMakeTool" /> + <Tool Name="VCBscMakeTool" /> + <Tool Name="VCFxCopTool" /> + <Tool Name="VCCodeSignTool" /> + <Tool Name="VCPostBuildEventTool" /> + <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles="" /> + <DebuggerTool /> + </Configuration> + <Configuration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" OutputDirectory="Pocket PC 2003 (ARMV4)\$(ConfigurationName)" IntermediateDirectory="Pocket PC 2003 (ARMV4)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2"> + <Tool Name="VCPreBuildEventTool" /> + <Tool Name="VCCustomBuildTool" /> + <Tool Name="VCXMLDataGeneratorTool" /> + <Tool Name="VCWebServiceProxyGeneratorTool" /> + <Tool Name="VCMIDLTool" TargetEnvironment="1" /> + <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="0" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_DEBUG;_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;_CRT_SECURE_NO_DEPRECATE" GeneratePreprocessedFile="0" RuntimeLibrary="1" DisableLanguageExtensions="false" PrecompiledHeaderFile=".\..\..\..\objs\debug_mt/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\debug_mt/" ObjectFile=".\..\..\..\objs\debug_mt/" ProgramDataBaseFileName=".\..\..\..\objs\debug_mt/" WarningLevel="4" DebugInformationFormat="3" CompileAs="0" /> + <Tool Name="VCManagedResourceCompilerTool" /> + <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" /> + <Tool Name="VCPreLinkEventTool" /> + <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239MT_D.lib" SuppressStartupBanner="true" /> + <Tool Name="VCALinkTool" /> + <Tool Name="VCXDCMakeTool" /> + <Tool Name="VCBscMakeTool" /> + <Tool Name="VCFxCopTool" /> + <Tool Name="VCCodeSignTool" /> + <Tool Name="VCPostBuildEventTool" /> + <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles="" /> + <DebuggerTool /> + </Configuration> + <Configuration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" OutputDirectory="Smartphone 2003 (ARMV4)\$(ConfigurationName)" IntermediateDirectory="Smartphone 2003 (ARMV4)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2"> + <Tool Name="VCPreBuildEventTool" /> + <Tool Name="VCCustomBuildTool" /> + <Tool Name="VCXMLDataGeneratorTool" /> + <Tool Name="VCWebServiceProxyGeneratorTool" /> + <Tool Name="VCMIDLTool" TargetEnvironment="1" /> + <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="0" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_DEBUG;_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;_CRT_SECURE_NO_DEPRECATE" GeneratePreprocessedFile="0" RuntimeLibrary="1" DisableLanguageExtensions="false" PrecompiledHeaderFile=".\..\..\..\objs\debug_mt/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\debug_mt/" ObjectFile=".\..\..\..\objs\debug_mt/" ProgramDataBaseFileName=".\..\..\..\objs\debug_mt/" WarningLevel="4" DebugInformationFormat="3" CompileAs="0" /> + <Tool Name="VCManagedResourceCompilerTool" /> + <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" /> + <Tool Name="VCPreLinkEventTool" /> + <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239MT_D.lib" SuppressStartupBanner="true" /> + <Tool Name="VCALinkTool" /> + <Tool Name="VCXDCMakeTool" /> + <Tool Name="VCBscMakeTool" /> + <Tool Name="VCFxCopTool" /> + <Tool Name="VCCodeSignTool" /> + <Tool Name="VCPostBuildEventTool" /> + <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles="" /> + <DebuggerTool /> + </Configuration> + <Configuration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" OutputDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)" IntermediateDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2"> + <Tool Name="VCPreBuildEventTool" /> + <Tool Name="VCCustomBuildTool" /> + <Tool Name="VCXMLDataGeneratorTool" /> + <Tool Name="VCWebServiceProxyGeneratorTool" /> + <Tool Name="VCMIDLTool" TargetEnvironment="1" /> + <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="0" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_DEBUG;_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;_CRT_SECURE_NO_DEPRECATE;NO_ERRNO_H" GeneratePreprocessedFile="0" RuntimeLibrary="1" DisableLanguageExtensions="false" PrecompiledHeaderFile=".\..\..\..\objs\debug_mt/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\debug_mt/" ObjectFile=".\..\..\..\objs\debug_mt/" ProgramDataBaseFileName=".\..\..\..\objs\debug_mt/" WarningLevel="4" DebugInformationFormat="3" CompileAs="0" /> + <Tool Name="VCManagedResourceCompilerTool" /> + <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" /> + <Tool Name="VCPreLinkEventTool" /> + <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239MT_D.lib" SuppressStartupBanner="true" /> + <Tool Name="VCALinkTool" /> + <Tool Name="VCXDCMakeTool" /> + <Tool Name="VCBscMakeTool" /> + <Tool Name="VCFxCopTool" /> + <Tool Name="VCCodeSignTool" /> + <Tool Name="VCPostBuildEventTool" /> + <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles="" /> + <DebuggerTool /> + </Configuration> + <Configuration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" OutputDirectory="Windows Mobile 5.0 Smartphone SDK (ARMV4I)\$(ConfigurationName)" IntermediateDirectory="Windows Mobile 5.0 Smartphone SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2"> + <Tool Name="VCPreBuildEventTool" /> + <Tool Name="VCCustomBuildTool" /> + <Tool Name="VCXMLDataGeneratorTool" /> + <Tool Name="VCWebServiceProxyGeneratorTool" /> + <Tool Name="VCMIDLTool" TargetEnvironment="1" /> + <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="0" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_DEBUG;_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;_CRT_SECURE_NO_DEPRECATE" GeneratePreprocessedFile="0" RuntimeLibrary="1" DisableLanguageExtensions="false" PrecompiledHeaderFile=".\..\..\..\objs\debug_mt/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\debug_mt/" ObjectFile=".\..\..\..\objs\debug_mt/" ProgramDataBaseFileName=".\..\..\..\objs\debug_mt/" WarningLevel="4" DebugInformationFormat="3" CompileAs="0" /> + <Tool Name="VCManagedResourceCompilerTool" /> + <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" /> + <Tool Name="VCPreLinkEventTool" /> + <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239MT_D.lib" SuppressStartupBanner="true" /> + <Tool Name="VCALinkTool" /> + <Tool Name="VCXDCMakeTool" /> + <Tool Name="VCBscMakeTool" /> + <Tool Name="VCFxCopTool" /> + <Tool Name="VCCodeSignTool" /> + <Tool Name="VCPostBuildEventTool" /> + <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles="" /> + <DebuggerTool /> + </Configuration> + <Configuration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" OutputDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)" IntermediateDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2"> + <Tool Name="VCPreBuildEventTool" /> + <Tool Name="VCCustomBuildTool" /> + <Tool Name="VCXMLDataGeneratorTool" /> + <Tool Name="VCWebServiceProxyGeneratorTool" /> + <Tool Name="VCMIDLTool" TargetEnvironment="1" /> + <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="0" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_DEBUG;_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;_CRT_SECURE_NO_DEPRECATE" GeneratePreprocessedFile="0" RuntimeLibrary="1" DisableLanguageExtensions="false" PrecompiledHeaderFile=".\..\..\..\objs\debug_mt/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\debug_mt/" ObjectFile=".\..\..\..\objs\debug_mt/" ProgramDataBaseFileName=".\..\..\..\objs\debug_mt/" WarningLevel="4" DebugInformationFormat="3" CompileAs="0" /> + <Tool Name="VCManagedResourceCompilerTool" /> + <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" /> + <Tool Name="VCPreLinkEventTool" /> + <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239MT_D.lib" SuppressStartupBanner="true" /> + <Tool Name="VCALinkTool" /> + <Tool Name="VCXDCMakeTool" /> + <Tool Name="VCBscMakeTool" /> + <Tool Name="VCFxCopTool" /> + <Tool Name="VCCodeSignTool" /> + <Tool Name="VCPostBuildEventTool" /> + <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles="" /> + <DebuggerTool /> + </Configuration> + <Configuration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" OutputDirectory="Windows Mobile 6 Standard SDK (ARMV4I)\$(ConfigurationName)" IntermediateDirectory="Windows Mobile 6 Standard SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2"> + <Tool Name="VCPreBuildEventTool" /> + <Tool Name="VCCustomBuildTool" /> + <Tool Name="VCXMLDataGeneratorTool" /> + <Tool Name="VCWebServiceProxyGeneratorTool" /> + <Tool Name="VCMIDLTool" TargetEnvironment="1" /> + <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="0" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_DEBUG;_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;_CRT_SECURE_NO_DEPRECATE" GeneratePreprocessedFile="0" RuntimeLibrary="1" DisableLanguageExtensions="false" PrecompiledHeaderFile=".\..\..\..\objs\debug_mt/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\debug_mt/" ObjectFile=".\..\..\..\objs\debug_mt/" ProgramDataBaseFileName=".\..\..\..\objs\debug_mt/" WarningLevel="4" DebugInformationFormat="3" CompileAs="0" /> + <Tool Name="VCManagedResourceCompilerTool" /> + <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" /> + <Tool Name="VCPreLinkEventTool" /> + <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239MT_D.lib" SuppressStartupBanner="true" /> + <Tool Name="VCALinkTool" /> + <Tool Name="VCXDCMakeTool" /> + <Tool Name="VCBscMakeTool" /> + <Tool Name="VCFxCopTool" /> + <Tool Name="VCCodeSignTool" /> + <Tool Name="VCPostBuildEventTool" /> + <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles="" /> + <DebuggerTool /> + </Configuration> + <Configuration Name="Release Multithreaded|Win32" OutputDirectory=".\..\..\..\objs\release_mt" IntermediateDirectory=".\..\..\..\objs\release_mt" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2"> + <Tool Name="VCPreBuildEventTool" /> + <Tool Name="VCCustomBuildTool" /> + <Tool Name="VCXMLDataGeneratorTool" /> + <Tool Name="VCWebServiceProxyGeneratorTool" /> + <Tool Name="VCMIDLTool" /> + <Tool Name="VCCLCompilerTool" Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="NDEBUG;WIN32;_LIB;FT2_BUILD_LIBRARY" StringPooling="true" RuntimeLibrary="0" EnableFunctionLevelLinking="true" DisableLanguageExtensions="true" PrecompiledHeaderFile=".\..\..\..\objs\release_mt/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\release_mt/" ObjectFile=".\..\..\..\objs\release_mt/" ProgramDataBaseFileName=".\..\..\..\objs\release_mt/" WarningLevel="4" DebugInformationFormat="0" CompileAs="0" /> + <Tool Name="VCManagedResourceCompilerTool" /> + <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" /> + <Tool Name="VCPreLinkEventTool" /> + <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239MT.lib" SuppressStartupBanner="true" /> + <Tool Name="VCALinkTool" /> + <Tool Name="VCXDCMakeTool" /> + <Tool Name="VCBscMakeTool" /> + <Tool Name="VCFxCopTool" /> + <Tool Name="VCPostBuildEventTool" /> + </Configuration> + <Configuration Name="Debug Multithreaded|Win32" OutputDirectory=".\..\..\..\objs\debug_mt" IntermediateDirectory=".\..\..\..\objs\debug_mt" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2"> + <Tool Name="VCPreBuildEventTool" /> + <Tool Name="VCCustomBuildTool" /> + <Tool Name="VCXMLDataGeneratorTool" /> + <Tool Name="VCWebServiceProxyGeneratorTool" /> + <Tool Name="VCMIDLTool" /> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\..\..\include" PreprocessorDefinitions="_DEBUG;WIN32;_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;_CRT_SECURE_NO_DEPRECATE" GeneratePreprocessedFile="0" BasicRuntimeChecks="3" RuntimeLibrary="1" DisableLanguageExtensions="true" PrecompiledHeaderFile=".\..\..\..\objs\debug_mt/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\debug_mt/" ObjectFile=".\..\..\..\objs\debug_mt/" ProgramDataBaseFileName=".\..\..\..\objs\debug_mt/" WarningLevel="4" DebugInformationFormat="3" CompileAs="0" /> + <Tool Name="VCManagedResourceCompilerTool" /> + <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" /> + <Tool Name="VCPreLinkEventTool" /> + <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype239MT_D.lib" SuppressStartupBanner="true" /> + <Tool Name="VCALinkTool" /> + <Tool Name="VCXDCMakeTool" /> + <Tool Name="VCBscMakeTool" /> + <Tool Name="VCFxCopTool" /> + <Tool Name="VCPostBuildEventTool" /> + </Configuration> + </Configurations> + <References> + </References> + <Files> + <Filter Name="Source Files" Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"> + <File RelativePath="..\..\..\src\autofit\autofit.c"> + </File> + <File RelativePath="..\..\..\src\bdf\bdf.c"> + <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + </File> + <File RelativePath="..\..\..\src\cff\cff.c"> + <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + </File> + <File RelativePath="..\..\..\src\base\ftbase.c"> + <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + </File> + <File RelativePath="..\..\..\src\base\ftbitmap.c"> + </File> + <File RelativePath="..\..\..\src\cache\ftcache.c"> + <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + </File> + <File RelativePath="..\ftdebug.c"> + <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> + </FileConfiguration> + <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> + </FileConfiguration> + <FileConfiguration Name="Release|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" DisableLanguageExtensions="false" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" DisableLanguageExtensions="false" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" DisableLanguageExtensions="false" /> + </FileConfiguration> + </File> + <File RelativePath="..\..\..\src\base\ftfstype.c"> + </File> + <File RelativePath="..\..\..\src\base\ftgasp.c"> + </File> + <File RelativePath="..\..\..\src\base\ftglyph.c"> + <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + </File> + <File RelativePath="..\..\..\src\gzip\ftgzip.c"> + <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + </File> + <File RelativePath="..\..\..\src\base\ftinit.c"> + <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + </File> + <File RelativePath="..\..\..\src\lzw\ftlzw.c"> + <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + </File> + <File RelativePath="..\..\..\src\base\ftstroke.c"> + </File> + <File RelativePath="..\..\..\src\base\ftsystem.c"> + <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + </File> + <File RelativePath="..\..\..\src\smooth\smooth.c"> + <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + </File> + <Filter Name="FT_MODULES"> + <File RelativePath="..\..\..\src\base\ftbbox.c"> + </File> + <File RelativePath="..\..\..\src\base\ftmm.c"> + <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + </File> + <File RelativePath="..\..\..\src\base\ftpfr.c"> + </File> + <File RelativePath="..\..\..\src\base\ftsynth.c"> + </File> + <File RelativePath="..\..\..\src\base\fttype1.c"> + </File> + <File RelativePath="..\..\..\src\base\ftwinfnt.c"> + </File> + <File RelativePath="..\..\..\src\pcf\pcf.c"> + <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + </File> + <File RelativePath="..\..\..\src\pfr\pfr.c"> + <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + </File> + <File RelativePath="..\..\..\src\psaux\psaux.c"> + <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + </File> + <File RelativePath="..\..\..\src\pshinter\pshinter.c"> + <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + </File> + <File RelativePath="..\..\..\src\psnames\psmodule.c"> + <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + </File> + <File RelativePath="..\..\..\src\raster\raster.c"> + <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + </File> + <File RelativePath="..\..\..\src\sfnt\sfnt.c"> + <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + </File> + <File RelativePath="..\..\..\src\truetype\truetype.c"> + <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + </File> + <File RelativePath="..\..\..\src\type1\type1.c"> + <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + </File> + <File RelativePath="..\..\..\src\cid\type1cid.c"> + <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + </File> + <File RelativePath="..\..\..\src\type42\type42.c"> + <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + </File> + <File RelativePath="..\..\..\src\winfonts\winfnt.c"> + <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Release Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> + </FileConfiguration> + <FileConfiguration Name="Debug|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Singlethreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + <FileConfiguration Name="Debug Multithreaded|Win32"> + <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" /> + </FileConfiguration> + </File> + </Filter> + </Filter> + <Filter Name="Header Files" Filter="h;hpp;hxx;hm;inl"> + <File RelativePath="..\..\..\include\ft2build.h"> + </File> + <File RelativePath="..\..\..\include\freetype\config\ftconfig.h"> + </File> + <File RelativePath="..\..\..\include\freetype\config\ftheader.h"> + </File> + <File RelativePath="..\..\..\include\freetype\config\ftmodule.h"> + </File> + <File RelativePath="..\..\..\include\freetype\config\ftoption.h"> + </File> + <File RelativePath="..\..\..\include\freetype\config\ftstdlib.h"> + </File> + </Filter> + </Files> + <Globals> + </Globals> +</VisualStudioProject>
\ No newline at end of file diff --git a/src/3rdparty/freetype/builds/wince/vc2005-ce/index.html b/src/3rdparty/freetype/builds/wince/vc2005-ce/index.html new file mode 100644 index 0000000..780ce41 --- /dev/null +++ b/src/3rdparty/freetype/builds/wince/vc2005-ce/index.html @@ -0,0 +1,47 @@ +<html> +<header> +<title> + FreeType 2 Project Files for VS.NET 2005 + (Pocket PC) +</title> + +<body> +<h1> + FreeType 2 Project Files for VS.NET 2005 + (Pocket PC) +</h1> + +<p>This directory contains project files for Visual C++, named +<tt>freetype.vcproj</tt>, and Visual Studio, called <tt>freetype.sln</tt> for +the following targets: + +<ul> + <li>PPC/SP 2003 (Pocket PC 2003)</li> + <li>PPC/SP WM5 (Windows Mobile 5)</li> + <li>PPC/SP WM6 (Windows Mobile 6)</li> +</ul> + +It compiles the following libraries from the FreeType 2.3.9 sources:</p> + +<ul> + <pre> + freetype239.lib - release build; single threaded + freetype239_D.lib - debug build; single threaded + freetype239MT.lib - release build; multi-threaded + freetype239MT_D.lib - debug build; multi-threaded</pre> +</ul> + +<p>Be sure to extract the files with the Windows (CR+LF) line endings. ZIP +archives are already stored this way, so no further action is required. If +you use some <tt>.tar.*z</tt> archives, be sure to configure your extracting +tool to convert the line endings. For example, with <a +href="http://www.winzip.com">WinZip</a>, you should activate the <it>TAR +file smart CR/LF Conversion</it> option. Alternatively, you may consider +using the <tt>unix2dos</tt> or <tt>u2d</tt> utilities that are floating +around, which specifically deal with this particular problem. + +<p>Build directories are placed in the top-level <tt>objs</tt> +directory.</p> + +</body> +</html> diff --git a/src/3rdparty/freetype/builds/wince/vc2008-ce/freetype.sln b/src/3rdparty/freetype/builds/wince/vc2008-ce/freetype.sln new file mode 100644 index 0000000..0468e90 --- /dev/null +++ b/src/3rdparty/freetype/builds/wince/vc2008-ce/freetype.sln @@ -0,0 +1,158 @@ + +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "freetype", "freetype.vcproj", "{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + LIB Debug Multithreaded|Pocket PC 2003 (ARMV4) = LIB Debug Multithreaded|Pocket PC 2003 (ARMV4) + LIB Debug Multithreaded|Smartphone 2003 (ARMV4) = LIB Debug Multithreaded|Smartphone 2003 (ARMV4) + LIB Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) = LIB Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + LIB Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) = LIB Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + LIB Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) = LIB Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) + LIB Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) = LIB Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) + LIB Debug Singlethreaded|Pocket PC 2003 (ARMV4) = LIB Debug Singlethreaded|Pocket PC 2003 (ARMV4) + LIB Debug Singlethreaded|Smartphone 2003 (ARMV4) = LIB Debug Singlethreaded|Smartphone 2003 (ARMV4) + LIB Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) = LIB Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + LIB Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) = LIB Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + LIB Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) = LIB Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) + LIB Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) = LIB Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) + LIB Debug|Pocket PC 2003 (ARMV4) = LIB Debug|Pocket PC 2003 (ARMV4) + LIB Debug|Smartphone 2003 (ARMV4) = LIB Debug|Smartphone 2003 (ARMV4) + LIB Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) = LIB Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + LIB Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I) = LIB Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + LIB Debug|Windows Mobile 6 Professional SDK (ARMV4I) = LIB Debug|Windows Mobile 6 Professional SDK (ARMV4I) + LIB Debug|Windows Mobile 6 Standard SDK (ARMV4I) = LIB Debug|Windows Mobile 6 Standard SDK (ARMV4I) + LIB Release Multithreaded|Pocket PC 2003 (ARMV4) = LIB Release Multithreaded|Pocket PC 2003 (ARMV4) + LIB Release Multithreaded|Smartphone 2003 (ARMV4) = LIB Release Multithreaded|Smartphone 2003 (ARMV4) + LIB Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) = LIB Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + LIB Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) = LIB Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + LIB Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) = LIB Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) + LIB Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) = LIB Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) + LIB Release Singlethreaded|Pocket PC 2003 (ARMV4) = LIB Release Singlethreaded|Pocket PC 2003 (ARMV4) + LIB Release Singlethreaded|Smartphone 2003 (ARMV4) = LIB Release Singlethreaded|Smartphone 2003 (ARMV4) + LIB Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) = LIB Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + LIB Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) = LIB Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + LIB Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) = LIB Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) + LIB Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) = LIB Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) + LIB Release|Pocket PC 2003 (ARMV4) = LIB Release|Pocket PC 2003 (ARMV4) + LIB Release|Smartphone 2003 (ARMV4) = LIB Release|Smartphone 2003 (ARMV4) + LIB Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) = LIB Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + LIB Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I) = LIB Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + LIB Release|Windows Mobile 6 Professional SDK (ARMV4I) = LIB Release|Windows Mobile 6 Professional SDK (ARMV4I) + LIB Release|Windows Mobile 6 Standard SDK (ARMV4I) = LIB Release|Windows Mobile 6 Standard SDK (ARMV4I) + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Pocket PC 2003 (ARMV4).ActiveCfg = Debug Multithreaded|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Pocket PC 2003 (ARMV4).Build.0 = Debug Multithreaded|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Pocket PC 2003 (ARMV4).Deploy.0 = Debug Multithreaded|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Smartphone 2003 (ARMV4).ActiveCfg = Debug Multithreaded|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Smartphone 2003 (ARMV4).Build.0 = Debug Multithreaded|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Smartphone 2003 (ARMV4).Deploy.0 = Debug Multithreaded|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Pocket PC 2003 (ARMV4).ActiveCfg = Debug Singlethreaded|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Pocket PC 2003 (ARMV4).Build.0 = Debug Singlethreaded|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Pocket PC 2003 (ARMV4).Deploy.0 = Debug Singlethreaded|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Smartphone 2003 (ARMV4).ActiveCfg = Debug Singlethreaded|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Smartphone 2003 (ARMV4).Build.0 = Debug Singlethreaded|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Smartphone 2003 (ARMV4).Deploy.0 = Debug Singlethreaded|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Pocket PC 2003 (ARMV4).ActiveCfg = Debug|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Pocket PC 2003 (ARMV4).Build.0 = Debug|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Pocket PC 2003 (ARMV4).Deploy.0 = Debug|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Smartphone 2003 (ARMV4).ActiveCfg = Debug|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Smartphone 2003 (ARMV4).Build.0 = Debug|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Smartphone 2003 (ARMV4).Deploy.0 = Debug|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Debug|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Debug|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Pocket PC 2003 (ARMV4).ActiveCfg = Release Multithreaded|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Pocket PC 2003 (ARMV4).Build.0 = Release Multithreaded|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Pocket PC 2003 (ARMV4).Deploy.0 = Release Multithreaded|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Smartphone 2003 (ARMV4).ActiveCfg = Release Multithreaded|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Smartphone 2003 (ARMV4).Build.0 = Release Multithreaded|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Smartphone 2003 (ARMV4).Deploy.0 = Release Multithreaded|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Pocket PC 2003 (ARMV4).ActiveCfg = Release Singlethreaded|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Pocket PC 2003 (ARMV4).Build.0 = Release Singlethreaded|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Pocket PC 2003 (ARMV4).Deploy.0 = Release Singlethreaded|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Smartphone 2003 (ARMV4).ActiveCfg = Release Singlethreaded|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Smartphone 2003 (ARMV4).Build.0 = Release Singlethreaded|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Smartphone 2003 (ARMV4).Deploy.0 = Release Singlethreaded|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Pocket PC 2003 (ARMV4).ActiveCfg = Release|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Pocket PC 2003 (ARMV4).Build.0 = Release|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Pocket PC 2003 (ARMV4).Deploy.0 = Release|Pocket PC 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Smartphone 2003 (ARMV4).ActiveCfg = Release|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Smartphone 2003 (ARMV4).Build.0 = Release|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Smartphone 2003 (ARMV4).Deploy.0 = Release|Smartphone 2003 (ARMV4) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Release|Windows Mobile 6 Standard SDK (ARMV4I) + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.LIB Release|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 6 Standard SDK (ARMV4I) + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/src/3rdparty/freetype/builds/win32/visualce/freetype.vcproj b/src/3rdparty/freetype/builds/wince/vc2008-ce/freetype.vcproj index 109542f..2233577 100644 --- a/src/3rdparty/freetype/builds/win32/visualce/freetype.vcproj +++ b/src/3rdparty/freetype/builds/wince/vc2008-ce/freetype.vcproj @@ -1,15 +1,13 @@ <?xml version="1.0" encoding="Windows-1252"?> <VisualStudioProject ProjectType="Visual C++" - Version="8,00" + Version="9,00" Name="freetype" ProjectGUID="{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}" + TargetFrameworkVersion="0" > <Platforms> <Platform - Name="Win32" - /> - <Platform Name="Pocket PC 2003 (ARMV4)" /> <Platform @@ -32,9 +30,9 @@ </ToolFiles> <Configurations> <Configuration - Name="Release|Win32" - OutputDirectory=".\..\..\..\objs\release" - IntermediateDirectory=".\..\..\..\objs\release" + Name="Release|Pocket PC 2003 (ARMV4)" + OutputDirectory="Pocket PC 2003 (ARMV4)\$(ConfigurationName)" + IntermediateDirectory="Pocket PC 2003 (ARMV4)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" @@ -55,17 +53,20 @@ /> <Tool Name="VCMIDLTool" + TargetEnvironment="1" /> <Tool Name="VCCLCompilerTool" + ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="NDEBUG;WIN32;_LIB;FT2_BUILD_LIBRARY" - StringPooling="true" + PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT2_BUILD_LIBRARY;NO_ERRNO_H" + StringPooling="false" + MinimalRebuild="true" RuntimeLibrary="2" - EnableFunctionLevelLinking="true" - DisableLanguageExtensions="true" + EnableFunctionLevelLinking="false" + DisableLanguageExtensions="false" PrecompiledHeaderFile=".\..\..\..\objs\release/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\release/" ObjectFile=".\..\..\..\objs\release/" @@ -87,7 +88,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236.lib" + OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239.lib" SuppressStartupBanner="true" /> <Tool @@ -103,88 +104,24 @@ Name="VCFxCopTool" /> <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release Multithreaded|Win32" - OutputDirectory=".\..\..\..\objs\release_mt" - IntermediateDirectory=".\..\..\..\objs\release_mt" - ConfigurationType="4" - InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - InlineFunctionExpansion="1" - AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="NDEBUG;WIN32;_LIB;FT2_BUILD_LIBRARY" - StringPooling="true" - RuntimeLibrary="0" - EnableFunctionLevelLinking="true" - DisableLanguageExtensions="true" - PrecompiledHeaderFile=".\..\..\..\objs\release_mt/freetype.pch" - AssemblerListingLocation=".\..\..\..\objs\release_mt/" - ObjectFile=".\..\..\..\objs\release_mt/" - ProgramDataBaseFileName=".\..\..\..\objs\release_mt/" - WarningLevel="4" - DebugInformationFormat="0" - CompileAs="0" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="NDEBUG" - Culture="1033" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236MT.lib" - SuppressStartupBanner="true" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCXDCMakeTool" + Name="VCCodeSignTool" /> <Tool - Name="VCBscMakeTool" + Name="VCPostBuildEventTool" /> - <Tool - Name="VCFxCopTool" + <DeploymentTool + ForceDirty="-1" + RemoteDirectory="" + RegisterOutput="0" + AdditionalFiles="" /> - <Tool - Name="VCPostBuildEventTool" + <DebuggerTool /> </Configuration> <Configuration - Name="Release Singlethreaded|Win32" - OutputDirectory=".\..\..\..\objs\release_st" - IntermediateDirectory=".\..\..\..\objs\release_st" + Name="Release|Smartphone 2003 (ARMV4)" + OutputDirectory="Smartphone 2003 (ARMV4)\$(ConfigurationName)" + IntermediateDirectory="Smartphone 2003 (ARMV4)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" @@ -205,21 +142,24 @@ /> <Tool Name="VCMIDLTool" + TargetEnvironment="1" /> <Tool Name="VCCLCompilerTool" + ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="NDEBUG;WIN32;_LIB;FT2_BUILD_LIBRARY" - StringPooling="true" - RuntimeLibrary="0" - EnableFunctionLevelLinking="true" - DisableLanguageExtensions="true" - PrecompiledHeaderFile=".\..\..\..\objs\release_st/freetype.pch" - AssemblerListingLocation=".\..\..\..\objs\release_st/" - ObjectFile=".\..\..\..\objs\release_st/" - ProgramDataBaseFileName=".\..\..\..\objs\release_st/" + PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT2_BUILD_LIBRARY;NO_ERRNO_H" + StringPooling="false" + MinimalRebuild="true" + RuntimeLibrary="2" + EnableFunctionLevelLinking="false" + DisableLanguageExtensions="false" + PrecompiledHeaderFile=".\..\..\..\objs\release/freetype.pch" + AssemblerListingLocation=".\..\..\..\objs\release/" + ObjectFile=".\..\..\..\objs\release/" + ProgramDataBaseFileName=".\..\..\..\objs\release/" WarningLevel="4" DebugInformationFormat="0" CompileAs="0" @@ -237,7 +177,8 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236ST.lib" + OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239.lib" + SuppressStartupBanner="true" /> <Tool Name="VCALinkTool" @@ -252,86 +193,24 @@ Name="VCFxCopTool" /> <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Debug|Win32" - OutputDirectory=".\..\..\..\objs\debug" - IntermediateDirectory=".\..\..\..\objs\debug" - ConfigurationType="4" - InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="_DEBUG;WIN32;_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY" - BasicRuntimeChecks="3" - RuntimeLibrary="3" - DisableLanguageExtensions="true" - PrecompiledHeaderFile=".\..\..\..\objs\debug/freetype.pch" - AssemblerListingLocation=".\..\..\..\objs\debug/" - ObjectFile=".\..\..\..\objs\debug/" - ProgramDataBaseFileName=".\..\..\..\objs\debug/" - WarningLevel="4" - DebugInformationFormat="3" - CompileAs="0" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="_DEBUG" - Culture="1033" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236_D.lib" - SuppressStartupBanner="true" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCXDCMakeTool" + Name="VCCodeSignTool" /> <Tool - Name="VCBscMakeTool" + Name="VCPostBuildEventTool" /> - <Tool - Name="VCFxCopTool" + <DeploymentTool + ForceDirty="-1" + RemoteDirectory="" + RegisterOutput="0" + AdditionalFiles="" /> - <Tool - Name="VCPostBuildEventTool" + <DebuggerTool /> </Configuration> <Configuration - Name="Debug Singlethreaded|Win32" - OutputDirectory=".\..\..\..\objs\debug_st" - IntermediateDirectory=".\..\..\..\objs\debug_st" + Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + OutputDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)" + IntermediateDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" @@ -352,21 +231,26 @@ /> <Tool Name="VCMIDLTool" + TargetEnvironment="1" /> <Tool Name="VCCLCompilerTool" - Optimization="0" + ExecutionBucket="7" + Optimization="2" + InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="_DEBUG;WIN32;_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY" - BasicRuntimeChecks="3" - RuntimeLibrary="1" - DisableLanguageExtensions="true" - PrecompiledHeaderFile=".\..\..\..\objs\debug_st/freetype.pch" - AssemblerListingLocation=".\..\..\..\objs\debug_st/" - ObjectFile=".\..\..\..\objs\debug_st/" - ProgramDataBaseFileName=".\..\..\..\objs\debug_st/" + PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT2_BUILD_LIBRARY;NO_ERRNO_H" + StringPooling="false" + MinimalRebuild="true" + RuntimeLibrary="2" + EnableFunctionLevelLinking="false" + DisableLanguageExtensions="false" + PrecompiledHeaderFile=".\..\..\..\objs\release/freetype.pch" + AssemblerListingLocation=".\..\..\..\objs\release/" + ObjectFile=".\..\..\..\objs\release/" + ProgramDataBaseFileName=".\..\..\..\objs\release/" WarningLevel="4" - DebugInformationFormat="3" + DebugInformationFormat="0" CompileAs="0" /> <Tool @@ -374,7 +258,7 @@ /> <Tool Name="VCResourceCompilerTool" - PreprocessorDefinitions="_DEBUG" + PreprocessorDefinitions="NDEBUG" Culture="1033" /> <Tool @@ -382,7 +266,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236ST_D.lib" + OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239.lib" SuppressStartupBanner="true" /> <Tool @@ -398,87 +282,24 @@ Name="VCFxCopTool" /> <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Debug Multithreaded|Win32" - OutputDirectory=".\..\..\..\objs\debug_mt" - IntermediateDirectory=".\..\..\..\objs\debug_mt" - ConfigurationType="4" - InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="_DEBUG;WIN32;_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;_CRT_SECURE_NO_DEPRECATE" - GeneratePreprocessedFile="0" - BasicRuntimeChecks="3" - RuntimeLibrary="1" - DisableLanguageExtensions="true" - PrecompiledHeaderFile=".\..\..\..\objs\debug_mt/freetype.pch" - AssemblerListingLocation=".\..\..\..\objs\debug_mt/" - ObjectFile=".\..\..\..\objs\debug_mt/" - ProgramDataBaseFileName=".\..\..\..\objs\debug_mt/" - WarningLevel="4" - DebugInformationFormat="3" - CompileAs="0" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="_DEBUG" - Culture="1033" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236MT_D.lib" - SuppressStartupBanner="true" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCXDCMakeTool" + Name="VCCodeSignTool" /> <Tool - Name="VCBscMakeTool" + Name="VCPostBuildEventTool" /> - <Tool - Name="VCFxCopTool" + <DeploymentTool + ForceDirty="-1" + RemoteDirectory="" + RegisterOutput="0" + AdditionalFiles="" /> - <Tool - Name="VCPostBuildEventTool" + <DebuggerTool /> </Configuration> <Configuration - Name="Release|Pocket PC 2003 (ARMV4)" - OutputDirectory="Pocket PC 2003 (ARMV4)\$(ConfigurationName)" - IntermediateDirectory="Pocket PC 2003 (ARMV4)\$(ConfigurationName)" + Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + OutputDirectory="Windows Mobile 5.0 Smartphone SDK (ARMV4I)\$(ConfigurationName)" + IntermediateDirectory="Windows Mobile 5.0 Smartphone SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" @@ -507,7 +328,7 @@ Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT2_BUILD_LIBRARY" + PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT2_BUILD_LIBRARY;NO_ERRNO_H" StringPooling="false" MinimalRebuild="true" RuntimeLibrary="2" @@ -534,7 +355,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236.lib" + OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239.lib" SuppressStartupBanner="true" /> <Tool @@ -547,6 +368,9 @@ Name="VCBscMakeTool" /> <Tool + Name="VCFxCopTool" + /> + <Tool Name="VCCodeSignTool" /> <Tool @@ -562,9 +386,9 @@ /> </Configuration> <Configuration - Name="Release Multithreaded|Pocket PC 2003 (ARMV4)" - OutputDirectory="Pocket PC 2003 (ARMV4)\$(ConfigurationName)" - IntermediateDirectory="Pocket PC 2003 (ARMV4)\$(ConfigurationName)" + Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" + OutputDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)" + IntermediateDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" @@ -593,15 +417,16 @@ Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT2_BUILD_LIBRARY" - StringPooling="true" - RuntimeLibrary="0" - EnableFunctionLevelLinking="true" + PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT2_BUILD_LIBRARY;NO_ERRNO_H" + StringPooling="false" + MinimalRebuild="true" + RuntimeLibrary="2" + EnableFunctionLevelLinking="false" DisableLanguageExtensions="false" - PrecompiledHeaderFile=".\..\..\..\objs\release_mt/freetype.pch" - AssemblerListingLocation=".\..\..\..\objs\release_mt/" - ObjectFile=".\..\..\..\objs\release_mt/" - ProgramDataBaseFileName=".\..\..\..\objs\release_mt/" + PrecompiledHeaderFile=".\..\..\..\objs\release/freetype.pch" + AssemblerListingLocation=".\..\..\..\objs\release/" + ObjectFile=".\..\..\..\objs\release/" + ProgramDataBaseFileName=".\..\..\..\objs\release/" WarningLevel="4" DebugInformationFormat="0" CompileAs="0" @@ -619,7 +444,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236MT.lib" + OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239.lib" SuppressStartupBanner="true" /> <Tool @@ -632,6 +457,9 @@ Name="VCBscMakeTool" /> <Tool + Name="VCFxCopTool" + /> + <Tool Name="VCCodeSignTool" /> <Tool @@ -647,9 +475,9 @@ /> </Configuration> <Configuration - Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" - OutputDirectory="Pocket PC 2003 (ARMV4)\$(ConfigurationName)" - IntermediateDirectory="Pocket PC 2003 (ARMV4)\$(ConfigurationName)" + Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" + OutputDirectory="Windows Mobile 6 Standard SDK (ARMV4I)\$(ConfigurationName)" + IntermediateDirectory="Windows Mobile 6 Standard SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" @@ -678,15 +506,16 @@ Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);NDEBUG;WIN32;_LIB;FT2_BUILD_LIBRARY" + PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT2_BUILD_LIBRARY;NO_ERRNO_H" StringPooling="false" - RuntimeLibrary="0" + MinimalRebuild="true" + RuntimeLibrary="2" EnableFunctionLevelLinking="false" DisableLanguageExtensions="false" - PrecompiledHeaderFile=".\..\..\..\objs\release_st/freetype.pch" - AssemblerListingLocation=".\..\..\..\objs\release_st/" - ObjectFile=".\..\..\..\objs\release_st/" - ProgramDataBaseFileName=".\..\..\..\objs\release_st/" + PrecompiledHeaderFile=".\..\..\..\objs\release/freetype.pch" + AssemblerListingLocation=".\..\..\..\objs\release/" + ObjectFile=".\..\..\..\objs\release/" + ProgramDataBaseFileName=".\..\..\..\objs\release/" WarningLevel="4" DebugInformationFormat="0" CompileAs="0" @@ -704,7 +533,8 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236ST.lib" + OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239.lib" + SuppressStartupBanner="true" /> <Tool Name="VCALinkTool" @@ -716,6 +546,9 @@ Name="VCBscMakeTool" /> <Tool + Name="VCFxCopTool" + /> + <Tool Name="VCCodeSignTool" /> <Tool @@ -731,7 +564,7 @@ /> </Configuration> <Configuration - Name="Debug|Pocket PC 2003 (ARMV4)" + Name="Release Multithreaded|Pocket PC 2003 (ARMV4)" OutputDirectory="Pocket PC 2003 (ARMV4)\$(ConfigurationName)" IntermediateDirectory="Pocket PC 2003 (ARMV4)\$(ConfigurationName)" ConfigurationType="4" @@ -759,17 +592,20 @@ <Tool Name="VCCLCompilerTool" ExecutionBucket="7" - Optimization="0" + Optimization="2" + InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY" - RuntimeLibrary="3" + PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT2_BUILD_LIBRARY;NO_ERRNO_H" + StringPooling="true" + RuntimeLibrary="0" + EnableFunctionLevelLinking="true" DisableLanguageExtensions="false" - PrecompiledHeaderFile=".\..\..\..\objs\debug/freetype.pch" - AssemblerListingLocation=".\..\..\..\objs\debug/" - ObjectFile=".\..\..\..\objs\debug/" - ProgramDataBaseFileName=".\..\..\..\objs\debug/" + PrecompiledHeaderFile=".\..\..\..\objs\release_mt/freetype.pch" + AssemblerListingLocation=".\..\..\..\objs\release_mt/" + ObjectFile=".\..\..\..\objs\release_mt/" + ProgramDataBaseFileName=".\..\..\..\objs\release_mt/" WarningLevel="4" - DebugInformationFormat="3" + DebugInformationFormat="0" CompileAs="0" /> <Tool @@ -777,7 +613,7 @@ /> <Tool Name="VCResourceCompilerTool" - PreprocessorDefinitions="_DEBUG" + PreprocessorDefinitions="NDEBUG" Culture="1033" /> <Tool @@ -785,7 +621,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236_D.lib" + OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239MT.lib" SuppressStartupBanner="true" /> <Tool @@ -798,6 +634,9 @@ Name="VCBscMakeTool" /> <Tool + Name="VCFxCopTool" + /> + <Tool Name="VCCodeSignTool" /> <Tool @@ -813,9 +652,9 @@ /> </Configuration> <Configuration - Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" - OutputDirectory="Pocket PC 2003 (ARMV4)\$(ConfigurationName)" - IntermediateDirectory="Pocket PC 2003 (ARMV4)\$(ConfigurationName)" + Name="Release Multithreaded|Smartphone 2003 (ARMV4)" + OutputDirectory="Smartphone 2003 (ARMV4)\$(ConfigurationName)" + IntermediateDirectory="Smartphone 2003 (ARMV4)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" @@ -841,17 +680,20 @@ <Tool Name="VCCLCompilerTool" ExecutionBucket="7" - Optimization="0" + Optimization="2" + InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_DEBUG;_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY" - RuntimeLibrary="1" - DisableLanguageExtensions="true" - PrecompiledHeaderFile=".\..\..\..\objs\debug_st/freetype.pch" - AssemblerListingLocation=".\..\..\..\objs\debug_st/" - ObjectFile=".\..\..\..\objs\debug_st/" - ProgramDataBaseFileName=".\..\..\..\objs\debug_st/" + PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT2_BUILD_LIBRARY;NO_ERRNO_H" + StringPooling="true" + RuntimeLibrary="0" + EnableFunctionLevelLinking="true" + DisableLanguageExtensions="false" + PrecompiledHeaderFile=".\..\..\..\objs\release_mt/freetype.pch" + AssemblerListingLocation=".\..\..\..\objs\release_mt/" + ObjectFile=".\..\..\..\objs\release_mt/" + ProgramDataBaseFileName=".\..\..\..\objs\release_mt/" WarningLevel="4" - DebugInformationFormat="3" + DebugInformationFormat="0" CompileAs="0" /> <Tool @@ -859,7 +701,7 @@ /> <Tool Name="VCResourceCompilerTool" - PreprocessorDefinitions="_DEBUG" + PreprocessorDefinitions="NDEBUG" Culture="1033" /> <Tool @@ -867,7 +709,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236ST_D.lib" + OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239MT.lib" SuppressStartupBanner="true" /> <Tool @@ -880,6 +722,9 @@ Name="VCBscMakeTool" /> <Tool + Name="VCFxCopTool" + /> + <Tool Name="VCCodeSignTool" /> <Tool @@ -895,9 +740,9 @@ /> </Configuration> <Configuration - Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" - OutputDirectory="Pocket PC 2003 (ARMV4)\$(ConfigurationName)" - IntermediateDirectory="Pocket PC 2003 (ARMV4)\$(ConfigurationName)" + Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + OutputDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)" + IntermediateDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" @@ -923,18 +768,20 @@ <Tool Name="VCCLCompilerTool" ExecutionBucket="7" - Optimization="0" + Optimization="2" + InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_DEBUG;_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;_CRT_SECURE_NO_DEPRECATE" - GeneratePreprocessedFile="0" - RuntimeLibrary="1" + PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT2_BUILD_LIBRARY;NO_ERRNO_H" + StringPooling="true" + RuntimeLibrary="0" + EnableFunctionLevelLinking="true" DisableLanguageExtensions="false" - PrecompiledHeaderFile=".\..\..\..\objs\debug_mt/freetype.pch" - AssemblerListingLocation=".\..\..\..\objs\debug_mt/" - ObjectFile=".\..\..\..\objs\debug_mt/" - ProgramDataBaseFileName=".\..\..\..\objs\debug_mt/" + PrecompiledHeaderFile=".\..\..\..\objs\release_mt/freetype.pch" + AssemblerListingLocation=".\..\..\..\objs\release_mt/" + ObjectFile=".\..\..\..\objs\release_mt/" + ProgramDataBaseFileName=".\..\..\..\objs\release_mt/" WarningLevel="4" - DebugInformationFormat="3" + DebugInformationFormat="0" CompileAs="0" /> <Tool @@ -942,7 +789,7 @@ /> <Tool Name="VCResourceCompilerTool" - PreprocessorDefinitions="_DEBUG" + PreprocessorDefinitions="NDEBUG" Culture="1033" /> <Tool @@ -950,7 +797,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236MT_D.lib" + OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239MT.lib" SuppressStartupBanner="true" /> <Tool @@ -963,6 +810,9 @@ Name="VCBscMakeTool" /> <Tool + Name="VCFxCopTool" + /> + <Tool Name="VCCodeSignTool" /> <Tool @@ -978,9 +828,9 @@ /> </Configuration> <Configuration - Name="Release|Smartphone 2003 (ARMV4)" - OutputDirectory="Smartphone 2003 (ARMV4)\$(ConfigurationName)" - IntermediateDirectory="Smartphone 2003 (ARMV4)\$(ConfigurationName)" + Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + OutputDirectory="Windows Mobile 5.0 Smartphone SDK (ARMV4I)\$(ConfigurationName)" + IntermediateDirectory="Windows Mobile 5.0 Smartphone SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" @@ -1009,16 +859,15 @@ Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT2_BUILD_LIBRARY" - StringPooling="false" - MinimalRebuild="true" - RuntimeLibrary="2" - EnableFunctionLevelLinking="false" + PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT2_BUILD_LIBRARY;NO_ERRNO_H" + StringPooling="true" + RuntimeLibrary="0" + EnableFunctionLevelLinking="true" DisableLanguageExtensions="false" - PrecompiledHeaderFile=".\..\..\..\objs\release/freetype.pch" - AssemblerListingLocation=".\..\..\..\objs\release/" - ObjectFile=".\..\..\..\objs\release/" - ProgramDataBaseFileName=".\..\..\..\objs\release/" + PrecompiledHeaderFile=".\..\..\..\objs\release_mt/freetype.pch" + AssemblerListingLocation=".\..\..\..\objs\release_mt/" + ObjectFile=".\..\..\..\objs\release_mt/" + ProgramDataBaseFileName=".\..\..\..\objs\release_mt/" WarningLevel="4" DebugInformationFormat="0" CompileAs="0" @@ -1036,7 +885,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236.lib" + OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239MT.lib" SuppressStartupBanner="true" /> <Tool @@ -1049,6 +898,9 @@ Name="VCBscMakeTool" /> <Tool + Name="VCFxCopTool" + /> + <Tool Name="VCCodeSignTool" /> <Tool @@ -1064,9 +916,9 @@ /> </Configuration> <Configuration - Name="Release Multithreaded|Smartphone 2003 (ARMV4)" - OutputDirectory="Smartphone 2003 (ARMV4)\$(ConfigurationName)" - IntermediateDirectory="Smartphone 2003 (ARMV4)\$(ConfigurationName)" + Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + OutputDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)" + IntermediateDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" @@ -1095,7 +947,7 @@ Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT2_BUILD_LIBRARY" + PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT2_BUILD_LIBRARY;NO_ERRNO_H" StringPooling="true" RuntimeLibrary="0" EnableFunctionLevelLinking="true" @@ -1121,7 +973,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236MT.lib" + OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239MT.lib" SuppressStartupBanner="true" /> <Tool @@ -1134,6 +986,9 @@ Name="VCBscMakeTool" /> <Tool + Name="VCFxCopTool" + /> + <Tool Name="VCCodeSignTool" /> <Tool @@ -1149,9 +1004,9 @@ /> </Configuration> <Configuration - Name="Release Singlethreaded|Smartphone 2003 (ARMV4)" - OutputDirectory="Smartphone 2003 (ARMV4)\$(ConfigurationName)" - IntermediateDirectory="Smartphone 2003 (ARMV4)\$(ConfigurationName)" + Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + OutputDirectory="Windows Mobile 6 Standard SDK (ARMV4I)\$(ConfigurationName)" + IntermediateDirectory="Windows Mobile 6 Standard SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" @@ -1180,15 +1035,15 @@ Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);NDEBUG;WIN32;_LIB;FT2_BUILD_LIBRARY" - StringPooling="false" + PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT2_BUILD_LIBRARY;NO_ERRNO_H" + StringPooling="true" RuntimeLibrary="0" - EnableFunctionLevelLinking="false" + EnableFunctionLevelLinking="true" DisableLanguageExtensions="false" - PrecompiledHeaderFile=".\..\..\..\objs\release_st/freetype.pch" - AssemblerListingLocation=".\..\..\..\objs\release_st/" - ObjectFile=".\..\..\..\objs\release_st/" - ProgramDataBaseFileName=".\..\..\..\objs\release_st/" + PrecompiledHeaderFile=".\..\..\..\objs\release_mt/freetype.pch" + AssemblerListingLocation=".\..\..\..\objs\release_mt/" + ObjectFile=".\..\..\..\objs\release_mt/" + ProgramDataBaseFileName=".\..\..\..\objs\release_mt/" WarningLevel="4" DebugInformationFormat="0" CompileAs="0" @@ -1206,7 +1061,8 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236ST.lib" + OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239MT.lib" + SuppressStartupBanner="true" /> <Tool Name="VCALinkTool" @@ -1218,6 +1074,9 @@ Name="VCBscMakeTool" /> <Tool + Name="VCFxCopTool" + /> + <Tool Name="VCCodeSignTool" /> <Tool @@ -1233,9 +1092,9 @@ /> </Configuration> <Configuration - Name="Debug|Smartphone 2003 (ARMV4)" - OutputDirectory="Smartphone 2003 (ARMV4)\$(ConfigurationName)" - IntermediateDirectory="Smartphone 2003 (ARMV4)\$(ConfigurationName)" + Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" + OutputDirectory="Pocket PC 2003 (ARMV4)\$(ConfigurationName)" + IntermediateDirectory="Pocket PC 2003 (ARMV4)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" @@ -1261,17 +1120,20 @@ <Tool Name="VCCLCompilerTool" ExecutionBucket="7" - Optimization="0" + Optimization="2" + InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY" - RuntimeLibrary="3" + PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);WIN32;_LIB;FT2_BUILD_LIBRARY;NO_ERRNO_H" + StringPooling="false" + RuntimeLibrary="0" + EnableFunctionLevelLinking="false" DisableLanguageExtensions="false" - PrecompiledHeaderFile=".\..\..\..\objs\debug/freetype.pch" - AssemblerListingLocation=".\..\..\..\objs\debug/" - ObjectFile=".\..\..\..\objs\debug/" - ProgramDataBaseFileName=".\..\..\..\objs\debug/" + PrecompiledHeaderFile=".\..\..\..\objs\release_st/freetype.pch" + AssemblerListingLocation=".\..\..\..\objs\release_st/" + ObjectFile=".\..\..\..\objs\release_st/" + ProgramDataBaseFileName=".\..\..\..\objs\release_st/" WarningLevel="4" - DebugInformationFormat="3" + DebugInformationFormat="0" CompileAs="0" /> <Tool @@ -1279,7 +1141,7 @@ /> <Tool Name="VCResourceCompilerTool" - PreprocessorDefinitions="_DEBUG" + PreprocessorDefinitions="NDEBUG" Culture="1033" /> <Tool @@ -1287,8 +1149,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236_D.lib" - SuppressStartupBanner="true" + OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239ST.lib" /> <Tool Name="VCALinkTool" @@ -1300,6 +1161,9 @@ Name="VCBscMakeTool" /> <Tool + Name="VCFxCopTool" + /> + <Tool Name="VCCodeSignTool" /> <Tool @@ -1315,7 +1179,7 @@ /> </Configuration> <Configuration - Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" + Name="Release Singlethreaded|Smartphone 2003 (ARMV4)" OutputDirectory="Smartphone 2003 (ARMV4)\$(ConfigurationName)" IntermediateDirectory="Smartphone 2003 (ARMV4)\$(ConfigurationName)" ConfigurationType="4" @@ -1343,17 +1207,20 @@ <Tool Name="VCCLCompilerTool" ExecutionBucket="7" - Optimization="0" + Optimization="2" + InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_DEBUG;_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY" - RuntimeLibrary="1" - DisableLanguageExtensions="true" - PrecompiledHeaderFile=".\..\..\..\objs\debug_st/freetype.pch" - AssemblerListingLocation=".\..\..\..\objs\debug_st/" - ObjectFile=".\..\..\..\objs\debug_st/" - ProgramDataBaseFileName=".\..\..\..\objs\debug_st/" + PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);WIN32;_LIB;FT2_BUILD_LIBRARY;NO_ERRNO_H" + StringPooling="false" + RuntimeLibrary="0" + EnableFunctionLevelLinking="false" + DisableLanguageExtensions="false" + PrecompiledHeaderFile=".\..\..\..\objs\release_st/freetype.pch" + AssemblerListingLocation=".\..\..\..\objs\release_st/" + ObjectFile=".\..\..\..\objs\release_st/" + ProgramDataBaseFileName=".\..\..\..\objs\release_st/" WarningLevel="4" - DebugInformationFormat="3" + DebugInformationFormat="0" CompileAs="0" /> <Tool @@ -1361,7 +1228,7 @@ /> <Tool Name="VCResourceCompilerTool" - PreprocessorDefinitions="_DEBUG" + PreprocessorDefinitions="NDEBUG" Culture="1033" /> <Tool @@ -1369,8 +1236,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236ST_D.lib" - SuppressStartupBanner="true" + OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239ST.lib" /> <Tool Name="VCALinkTool" @@ -1382,6 +1248,9 @@ Name="VCBscMakeTool" /> <Tool + Name="VCFxCopTool" + /> + <Tool Name="VCCodeSignTool" /> <Tool @@ -1397,9 +1266,9 @@ /> </Configuration> <Configuration - Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" - OutputDirectory="Smartphone 2003 (ARMV4)\$(ConfigurationName)" - IntermediateDirectory="Smartphone 2003 (ARMV4)\$(ConfigurationName)" + Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + OutputDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)" + IntermediateDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" @@ -1425,18 +1294,20 @@ <Tool Name="VCCLCompilerTool" ExecutionBucket="7" - Optimization="0" + Optimization="2" + InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_DEBUG;_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;_CRT_SECURE_NO_DEPRECATE" - GeneratePreprocessedFile="0" - RuntimeLibrary="1" + PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);WIN32;_LIB;FT2_BUILD_LIBRARY;NO_ERRNO_H" + StringPooling="false" + RuntimeLibrary="0" + EnableFunctionLevelLinking="false" DisableLanguageExtensions="false" - PrecompiledHeaderFile=".\..\..\..\objs\debug_mt/freetype.pch" - AssemblerListingLocation=".\..\..\..\objs\debug_mt/" - ObjectFile=".\..\..\..\objs\debug_mt/" - ProgramDataBaseFileName=".\..\..\..\objs\debug_mt/" + PrecompiledHeaderFile=".\..\..\..\objs\release_st/freetype.pch" + AssemblerListingLocation=".\..\..\..\objs\release_st/" + ObjectFile=".\..\..\..\objs\release_st/" + ProgramDataBaseFileName=".\..\..\..\objs\release_st/" WarningLevel="4" - DebugInformationFormat="3" + DebugInformationFormat="0" CompileAs="0" /> <Tool @@ -1444,7 +1315,7 @@ /> <Tool Name="VCResourceCompilerTool" - PreprocessorDefinitions="_DEBUG" + PreprocessorDefinitions="NDEBUG" Culture="1033" /> <Tool @@ -1452,8 +1323,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236MT_D.lib" - SuppressStartupBanner="true" + OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239ST.lib" /> <Tool Name="VCALinkTool" @@ -1465,6 +1335,9 @@ Name="VCBscMakeTool" /> <Tool + Name="VCFxCopTool" + /> + <Tool Name="VCCodeSignTool" /> <Tool @@ -1480,9 +1353,9 @@ /> </Configuration> <Configuration - Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" - OutputDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)" - IntermediateDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)" + Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + OutputDirectory="Windows Mobile 5.0 Smartphone SDK (ARMV4I)\$(ConfigurationName)" + IntermediateDirectory="Windows Mobile 5.0 Smartphone SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" @@ -1511,16 +1384,15 @@ Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT2_BUILD_LIBRARY" + PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);WIN32;_LIB;FT2_BUILD_LIBRARY;NO_ERRNO_H" StringPooling="false" - MinimalRebuild="true" - RuntimeLibrary="2" + RuntimeLibrary="0" EnableFunctionLevelLinking="false" DisableLanguageExtensions="false" - PrecompiledHeaderFile=".\..\..\..\objs\release/freetype.pch" - AssemblerListingLocation=".\..\..\..\objs\release/" - ObjectFile=".\..\..\..\objs\release/" - ProgramDataBaseFileName=".\..\..\..\objs\release/" + PrecompiledHeaderFile=".\..\..\..\objs\release_st/freetype.pch" + AssemblerListingLocation=".\..\..\..\objs\release_st/" + ObjectFile=".\..\..\..\objs\release_st/" + ProgramDataBaseFileName=".\..\..\..\objs\release_st/" WarningLevel="4" DebugInformationFormat="0" CompileAs="0" @@ -1538,8 +1410,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236.lib" - SuppressStartupBanner="true" + OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239ST.lib" /> <Tool Name="VCALinkTool" @@ -1551,6 +1422,9 @@ Name="VCBscMakeTool" /> <Tool + Name="VCFxCopTool" + /> + <Tool Name="VCCodeSignTool" /> <Tool @@ -1566,9 +1440,9 @@ /> </Configuration> <Configuration - Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" - OutputDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)" - IntermediateDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)" + Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + OutputDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)" + IntermediateDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" @@ -1597,15 +1471,15 @@ Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT2_BUILD_LIBRARY" - StringPooling="true" + PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);WIN32;_LIB;FT2_BUILD_LIBRARY;NO_ERRNO_H" + StringPooling="false" RuntimeLibrary="0" - EnableFunctionLevelLinking="true" + EnableFunctionLevelLinking="false" DisableLanguageExtensions="false" - PrecompiledHeaderFile=".\..\..\..\objs\release_mt/freetype.pch" - AssemblerListingLocation=".\..\..\..\objs\release_mt/" - ObjectFile=".\..\..\..\objs\release_mt/" - ProgramDataBaseFileName=".\..\..\..\objs\release_mt/" + PrecompiledHeaderFile=".\..\..\..\objs\release_st/freetype.pch" + AssemblerListingLocation=".\..\..\..\objs\release_st/" + ObjectFile=".\..\..\..\objs\release_st/" + ProgramDataBaseFileName=".\..\..\..\objs\release_st/" WarningLevel="4" DebugInformationFormat="0" CompileAs="0" @@ -1623,8 +1497,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236MT.lib" - SuppressStartupBanner="true" + OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239ST.lib" /> <Tool Name="VCALinkTool" @@ -1636,6 +1509,9 @@ Name="VCBscMakeTool" /> <Tool + Name="VCFxCopTool" + /> + <Tool Name="VCCodeSignTool" /> <Tool @@ -1651,9 +1527,9 @@ /> </Configuration> <Configuration - Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" - OutputDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)" - IntermediateDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)" + Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + OutputDirectory="Windows Mobile 6 Standard SDK (ARMV4I)\$(ConfigurationName)" + IntermediateDirectory="Windows Mobile 6 Standard SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" @@ -1682,7 +1558,7 @@ Optimization="2" InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);NDEBUG;WIN32;_LIB;FT2_BUILD_LIBRARY" + PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);WIN32;_LIB;FT2_BUILD_LIBRARY;NO_ERRNO_H" StringPooling="false" RuntimeLibrary="0" EnableFunctionLevelLinking="false" @@ -1708,7 +1584,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236ST.lib" + OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239ST.lib" /> <Tool Name="VCALinkTool" @@ -1720,6 +1596,9 @@ Name="VCBscMakeTool" /> <Tool + Name="VCFxCopTool" + /> + <Tool Name="VCCodeSignTool" /> <Tool @@ -1735,9 +1614,9 @@ /> </Configuration> <Configuration - Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" - OutputDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)" - IntermediateDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)" + Name="Debug|Pocket PC 2003 (ARMV4)" + OutputDirectory="Pocket PC 2003 (ARMV4)\$(ConfigurationName)" + IntermediateDirectory="Pocket PC 2003 (ARMV4)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" @@ -1765,7 +1644,7 @@ ExecutionBucket="7" Optimization="0" AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY" + PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;NO_ERRNO_H" RuntimeLibrary="3" DisableLanguageExtensions="false" PrecompiledHeaderFile=".\..\..\..\objs\debug/freetype.pch" @@ -1789,7 +1668,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236_D.lib" + OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239_D.lib" SuppressStartupBanner="true" /> <Tool @@ -1802,6 +1681,9 @@ Name="VCBscMakeTool" /> <Tool + Name="VCFxCopTool" + /> + <Tool Name="VCCodeSignTool" /> <Tool @@ -1817,9 +1699,9 @@ /> </Configuration> <Configuration - Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" - OutputDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)" - IntermediateDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)" + Name="Debug|Smartphone 2003 (ARMV4)" + OutputDirectory="Smartphone 2003 (ARMV4)\$(ConfigurationName)" + IntermediateDirectory="Smartphone 2003 (ARMV4)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" @@ -1847,13 +1729,13 @@ ExecutionBucket="7" Optimization="0" AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_DEBUG;_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY" - RuntimeLibrary="1" - DisableLanguageExtensions="true" - PrecompiledHeaderFile=".\..\..\..\objs\debug_st/freetype.pch" - AssemblerListingLocation=".\..\..\..\objs\debug_st/" - ObjectFile=".\..\..\..\objs\debug_st/" - ProgramDataBaseFileName=".\..\..\..\objs\debug_st/" + PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;NO_ERRNO_H" + RuntimeLibrary="3" + DisableLanguageExtensions="false" + PrecompiledHeaderFile=".\..\..\..\objs\debug/freetype.pch" + AssemblerListingLocation=".\..\..\..\objs\debug/" + ObjectFile=".\..\..\..\objs\debug/" + ProgramDataBaseFileName=".\..\..\..\objs\debug/" WarningLevel="4" DebugInformationFormat="3" CompileAs="0" @@ -1871,7 +1753,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236ST_D.lib" + OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239_D.lib" SuppressStartupBanner="true" /> <Tool @@ -1884,6 +1766,9 @@ Name="VCBscMakeTool" /> <Tool + Name="VCFxCopTool" + /> + <Tool Name="VCCodeSignTool" /> <Tool @@ -1899,7 +1784,7 @@ /> </Configuration> <Configuration - Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" OutputDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)" IntermediateDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" @@ -1929,14 +1814,13 @@ ExecutionBucket="7" Optimization="0" AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_DEBUG;_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;_CRT_SECURE_NO_DEPRECATE" - GeneratePreprocessedFile="0" - RuntimeLibrary="1" + PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;NO_ERRNO_H" + RuntimeLibrary="3" DisableLanguageExtensions="false" - PrecompiledHeaderFile=".\..\..\..\objs\debug_mt/freetype.pch" - AssemblerListingLocation=".\..\..\..\objs\debug_mt/" - ObjectFile=".\..\..\..\objs\debug_mt/" - ProgramDataBaseFileName=".\..\..\..\objs\debug_mt/" + PrecompiledHeaderFile=".\..\..\..\objs\debug/freetype.pch" + AssemblerListingLocation=".\..\..\..\objs\debug/" + ObjectFile=".\..\..\..\objs\debug/" + ProgramDataBaseFileName=".\..\..\..\objs\debug/" WarningLevel="4" DebugInformationFormat="3" CompileAs="0" @@ -1954,7 +1838,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236MT_D.lib" + OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239_D.lib" SuppressStartupBanner="true" /> <Tool @@ -1967,6 +1851,9 @@ Name="VCBscMakeTool" /> <Tool + Name="VCFxCopTool" + /> + <Tool Name="VCCodeSignTool" /> <Tool @@ -1982,7 +1869,7 @@ /> </Configuration> <Configuration - Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" OutputDirectory="Windows Mobile 5.0 Smartphone SDK (ARMV4I)\$(ConfigurationName)" IntermediateDirectory="Windows Mobile 5.0 Smartphone SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" @@ -2010,21 +1897,17 @@ <Tool Name="VCCLCompilerTool" ExecutionBucket="7" - Optimization="2" - InlineFunctionExpansion="1" + Optimization="0" AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT2_BUILD_LIBRARY" - StringPooling="false" - MinimalRebuild="true" - RuntimeLibrary="2" - EnableFunctionLevelLinking="false" + PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;NO_ERRNO_H" + RuntimeLibrary="3" DisableLanguageExtensions="false" - PrecompiledHeaderFile=".\..\..\..\objs\release/freetype.pch" - AssemblerListingLocation=".\..\..\..\objs\release/" - ObjectFile=".\..\..\..\objs\release/" - ProgramDataBaseFileName=".\..\..\..\objs\release/" + PrecompiledHeaderFile=".\..\..\..\objs\debug/freetype.pch" + AssemblerListingLocation=".\..\..\..\objs\debug/" + ObjectFile=".\..\..\..\objs\debug/" + ProgramDataBaseFileName=".\..\..\..\objs\debug/" WarningLevel="4" - DebugInformationFormat="0" + DebugInformationFormat="3" CompileAs="0" /> <Tool @@ -2032,7 +1915,7 @@ /> <Tool Name="VCResourceCompilerTool" - PreprocessorDefinitions="NDEBUG" + PreprocessorDefinitions="_DEBUG" Culture="1033" /> <Tool @@ -2040,7 +1923,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236.lib" + OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239_D.lib" SuppressStartupBanner="true" /> <Tool @@ -2053,6 +1936,9 @@ Name="VCBscMakeTool" /> <Tool + Name="VCFxCopTool" + /> + <Tool Name="VCCodeSignTool" /> <Tool @@ -2068,9 +1954,9 @@ /> </Configuration> <Configuration - Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" - OutputDirectory="Windows Mobile 5.0 Smartphone SDK (ARMV4I)\$(ConfigurationName)" - IntermediateDirectory="Windows Mobile 5.0 Smartphone SDK (ARMV4I)\$(ConfigurationName)" + Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" + OutputDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)" + IntermediateDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" @@ -2096,20 +1982,17 @@ <Tool Name="VCCLCompilerTool" ExecutionBucket="7" - Optimization="2" - InlineFunctionExpansion="1" + Optimization="0" AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT2_BUILD_LIBRARY" - StringPooling="true" - RuntimeLibrary="0" - EnableFunctionLevelLinking="true" + PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;NO_ERRNO_H" + RuntimeLibrary="3" DisableLanguageExtensions="false" - PrecompiledHeaderFile=".\..\..\..\objs\release_mt/freetype.pch" - AssemblerListingLocation=".\..\..\..\objs\release_mt/" - ObjectFile=".\..\..\..\objs\release_mt/" - ProgramDataBaseFileName=".\..\..\..\objs\release_mt/" + PrecompiledHeaderFile=".\..\..\..\objs\debug/freetype.pch" + AssemblerListingLocation=".\..\..\..\objs\debug/" + ObjectFile=".\..\..\..\objs\debug/" + ProgramDataBaseFileName=".\..\..\..\objs\debug/" WarningLevel="4" - DebugInformationFormat="0" + DebugInformationFormat="3" CompileAs="0" /> <Tool @@ -2117,7 +2000,7 @@ /> <Tool Name="VCResourceCompilerTool" - PreprocessorDefinitions="NDEBUG" + PreprocessorDefinitions="_DEBUG" Culture="1033" /> <Tool @@ -2125,7 +2008,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236MT.lib" + OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239_D.lib" SuppressStartupBanner="true" /> <Tool @@ -2138,88 +2021,7 @@ Name="VCBscMakeTool" /> <Tool - Name="VCCodeSignTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - <DeploymentTool - ForceDirty="-1" - RemoteDirectory="" - RegisterOutput="0" - AdditionalFiles="" - /> - <DebuggerTool - /> - </Configuration> - <Configuration - Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" - OutputDirectory="Windows Mobile 5.0 Smartphone SDK (ARMV4I)\$(ConfigurationName)" - IntermediateDirectory="Windows Mobile 5.0 Smartphone SDK (ARMV4I)\$(ConfigurationName)" - ConfigurationType="4" - InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="false" - CharacterSet="2" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - TargetEnvironment="1" - /> - <Tool - Name="VCCLCompilerTool" - ExecutionBucket="7" - Optimization="2" - InlineFunctionExpansion="1" - AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);NDEBUG;WIN32;_LIB;FT2_BUILD_LIBRARY" - StringPooling="false" - RuntimeLibrary="0" - EnableFunctionLevelLinking="false" - DisableLanguageExtensions="false" - PrecompiledHeaderFile=".\..\..\..\objs\release_st/freetype.pch" - AssemblerListingLocation=".\..\..\..\objs\release_st/" - ObjectFile=".\..\..\..\objs\release_st/" - ProgramDataBaseFileName=".\..\..\..\objs\release_st/" - WarningLevel="4" - DebugInformationFormat="0" - CompileAs="0" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="NDEBUG" - Culture="1033" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236ST.lib" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" + Name="VCFxCopTool" /> <Tool Name="VCCodeSignTool" @@ -2237,9 +2039,9 @@ /> </Configuration> <Configuration - Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" - OutputDirectory="Windows Mobile 5.0 Smartphone SDK (ARMV4I)\$(ConfigurationName)" - IntermediateDirectory="Windows Mobile 5.0 Smartphone SDK (ARMV4I)\$(ConfigurationName)" + Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" + OutputDirectory="Windows Mobile 6 Standard SDK (ARMV4I)\$(ConfigurationName)" + IntermediateDirectory="Windows Mobile 6 Standard SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" @@ -2267,7 +2069,7 @@ ExecutionBucket="7" Optimization="0" AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY" + PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;NO_ERRNO_H" RuntimeLibrary="3" DisableLanguageExtensions="false" PrecompiledHeaderFile=".\..\..\..\objs\debug/freetype.pch" @@ -2291,7 +2093,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236_D.lib" + OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239_D.lib" SuppressStartupBanner="true" /> <Tool @@ -2304,6 +2106,9 @@ Name="VCBscMakeTool" /> <Tool + Name="VCFxCopTool" + /> + <Tool Name="VCCodeSignTool" /> <Tool @@ -2319,9 +2124,9 @@ /> </Configuration> <Configuration - Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" - OutputDirectory="Windows Mobile 5.0 Smartphone SDK (ARMV4I)\$(ConfigurationName)" - IntermediateDirectory="Windows Mobile 5.0 Smartphone SDK (ARMV4I)\$(ConfigurationName)" + Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" + OutputDirectory="Pocket PC 2003 (ARMV4)\$(ConfigurationName)" + IntermediateDirectory="Pocket PC 2003 (ARMV4)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" @@ -2373,7 +2178,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236ST_D.lib" + OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239ST_D.lib" SuppressStartupBanner="true" /> <Tool @@ -2386,6 +2191,9 @@ Name="VCBscMakeTool" /> <Tool + Name="VCFxCopTool" + /> + <Tool Name="VCCodeSignTool" /> <Tool @@ -2401,9 +2209,9 @@ /> </Configuration> <Configuration - Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" - OutputDirectory="Windows Mobile 5.0 Smartphone SDK (ARMV4I)\$(ConfigurationName)" - IntermediateDirectory="Windows Mobile 5.0 Smartphone SDK (ARMV4I)\$(ConfigurationName)" + Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" + OutputDirectory="Smartphone 2003 (ARMV4)\$(ConfigurationName)" + IntermediateDirectory="Smartphone 2003 (ARMV4)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" @@ -2431,14 +2239,13 @@ ExecutionBucket="7" Optimization="0" AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_DEBUG;_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;_CRT_SECURE_NO_DEPRECATE" - GeneratePreprocessedFile="0" + PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_DEBUG;_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY" RuntimeLibrary="1" - DisableLanguageExtensions="false" - PrecompiledHeaderFile=".\..\..\..\objs\debug_mt/freetype.pch" - AssemblerListingLocation=".\..\..\..\objs\debug_mt/" - ObjectFile=".\..\..\..\objs\debug_mt/" - ProgramDataBaseFileName=".\..\..\..\objs\debug_mt/" + DisableLanguageExtensions="true" + PrecompiledHeaderFile=".\..\..\..\objs\debug_st/freetype.pch" + AssemblerListingLocation=".\..\..\..\objs\debug_st/" + ObjectFile=".\..\..\..\objs\debug_st/" + ProgramDataBaseFileName=".\..\..\..\objs\debug_st/" WarningLevel="4" DebugInformationFormat="3" CompileAs="0" @@ -2456,7 +2263,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236MT_D.lib" + OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239ST_D.lib" SuppressStartupBanner="true" /> <Tool @@ -2469,6 +2276,9 @@ Name="VCBscMakeTool" /> <Tool + Name="VCFxCopTool" + /> + <Tool Name="VCCodeSignTool" /> <Tool @@ -2484,9 +2294,9 @@ /> </Configuration> <Configuration - Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" - OutputDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)" - IntermediateDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)" + Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + OutputDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)" + IntermediateDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" @@ -2512,21 +2322,17 @@ <Tool Name="VCCLCompilerTool" ExecutionBucket="7" - Optimization="2" - InlineFunctionExpansion="1" + Optimization="0" AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT2_BUILD_LIBRARY" - StringPooling="false" - MinimalRebuild="true" - RuntimeLibrary="2" - EnableFunctionLevelLinking="false" - DisableLanguageExtensions="false" - PrecompiledHeaderFile=".\..\..\..\objs\release/freetype.pch" - AssemblerListingLocation=".\..\..\..\objs\release/" - ObjectFile=".\..\..\..\objs\release/" - ProgramDataBaseFileName=".\..\..\..\objs\release/" + PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;NO_ERRNO_H" + RuntimeLibrary="1" + DisableLanguageExtensions="true" + PrecompiledHeaderFile=".\..\..\..\objs\debug_st/freetype.pch" + AssemblerListingLocation=".\..\..\..\objs\debug_st/" + ObjectFile=".\..\..\..\objs\debug_st/" + ProgramDataBaseFileName=".\..\..\..\objs\debug_st/" WarningLevel="4" - DebugInformationFormat="0" + DebugInformationFormat="3" CompileAs="0" /> <Tool @@ -2534,7 +2340,7 @@ /> <Tool Name="VCResourceCompilerTool" - PreprocessorDefinitions="NDEBUG" + PreprocessorDefinitions="_DEBUG" Culture="1033" /> <Tool @@ -2542,7 +2348,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236.lib" + OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239ST_D.lib" SuppressStartupBanner="true" /> <Tool @@ -2555,6 +2361,9 @@ Name="VCBscMakeTool" /> <Tool + Name="VCFxCopTool" + /> + <Tool Name="VCCodeSignTool" /> <Tool @@ -2570,9 +2379,9 @@ /> </Configuration> <Configuration - Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" - OutputDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)" - IntermediateDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)" + Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + OutputDirectory="Windows Mobile 5.0 Smartphone SDK (ARMV4I)\$(ConfigurationName)" + IntermediateDirectory="Windows Mobile 5.0 Smartphone SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" @@ -2598,20 +2407,17 @@ <Tool Name="VCCLCompilerTool" ExecutionBucket="7" - Optimization="2" - InlineFunctionExpansion="1" + Optimization="0" AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT2_BUILD_LIBRARY" - StringPooling="true" - RuntimeLibrary="0" - EnableFunctionLevelLinking="true" - DisableLanguageExtensions="false" - PrecompiledHeaderFile=".\..\..\..\objs\release_mt/freetype.pch" - AssemblerListingLocation=".\..\..\..\objs\release_mt/" - ObjectFile=".\..\..\..\objs\release_mt/" - ProgramDataBaseFileName=".\..\..\..\objs\release_mt/" + PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_DEBUG;_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY" + RuntimeLibrary="1" + DisableLanguageExtensions="true" + PrecompiledHeaderFile=".\..\..\..\objs\debug_st/freetype.pch" + AssemblerListingLocation=".\..\..\..\objs\debug_st/" + ObjectFile=".\..\..\..\objs\debug_st/" + ProgramDataBaseFileName=".\..\..\..\objs\debug_st/" WarningLevel="4" - DebugInformationFormat="0" + DebugInformationFormat="3" CompileAs="0" /> <Tool @@ -2619,7 +2425,7 @@ /> <Tool Name="VCResourceCompilerTool" - PreprocessorDefinitions="NDEBUG" + PreprocessorDefinitions="_DEBUG" Culture="1033" /> <Tool @@ -2627,7 +2433,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236MT.lib" + OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239ST_D.lib" SuppressStartupBanner="true" /> <Tool @@ -2640,6 +2446,9 @@ Name="VCBscMakeTool" /> <Tool + Name="VCFxCopTool" + /> + <Tool Name="VCCodeSignTool" /> <Tool @@ -2655,7 +2464,7 @@ /> </Configuration> <Configuration - Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" OutputDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)" IntermediateDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" @@ -2683,20 +2492,17 @@ <Tool Name="VCCLCompilerTool" ExecutionBucket="7" - Optimization="2" - InlineFunctionExpansion="1" + Optimization="0" AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);NDEBUG;WIN32;_LIB;FT2_BUILD_LIBRARY" - StringPooling="false" - RuntimeLibrary="0" - EnableFunctionLevelLinking="false" - DisableLanguageExtensions="false" - PrecompiledHeaderFile=".\..\..\..\objs\release_st/freetype.pch" - AssemblerListingLocation=".\..\..\..\objs\release_st/" - ObjectFile=".\..\..\..\objs\release_st/" - ProgramDataBaseFileName=".\..\..\..\objs\release_st/" + PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_DEBUG;_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY" + RuntimeLibrary="1" + DisableLanguageExtensions="true" + PrecompiledHeaderFile=".\..\..\..\objs\debug_st/freetype.pch" + AssemblerListingLocation=".\..\..\..\objs\debug_st/" + ObjectFile=".\..\..\..\objs\debug_st/" + ProgramDataBaseFileName=".\..\..\..\objs\debug_st/" WarningLevel="4" - DebugInformationFormat="0" + DebugInformationFormat="3" CompileAs="0" /> <Tool @@ -2704,7 +2510,7 @@ /> <Tool Name="VCResourceCompilerTool" - PreprocessorDefinitions="NDEBUG" + PreprocessorDefinitions="_DEBUG" Culture="1033" /> <Tool @@ -2712,7 +2518,8 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236ST.lib" + OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239ST_D.lib" + SuppressStartupBanner="true" /> <Tool Name="VCALinkTool" @@ -2724,6 +2531,9 @@ Name="VCBscMakeTool" /> <Tool + Name="VCFxCopTool" + /> + <Tool Name="VCCodeSignTool" /> <Tool @@ -2739,9 +2549,9 @@ /> </Configuration> <Configuration - Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" - OutputDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)" - IntermediateDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)" + Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + OutputDirectory="Windows Mobile 6 Standard SDK (ARMV4I)\$(ConfigurationName)" + IntermediateDirectory="Windows Mobile 6 Standard SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" @@ -2769,13 +2579,13 @@ ExecutionBucket="7" Optimization="0" AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY" - RuntimeLibrary="3" - DisableLanguageExtensions="false" - PrecompiledHeaderFile=".\..\..\..\objs\debug/freetype.pch" - AssemblerListingLocation=".\..\..\..\objs\debug/" - ObjectFile=".\..\..\..\objs\debug/" - ProgramDataBaseFileName=".\..\..\..\objs\debug/" + PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_DEBUG;_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY" + RuntimeLibrary="1" + DisableLanguageExtensions="true" + PrecompiledHeaderFile=".\..\..\..\objs\debug_st/freetype.pch" + AssemblerListingLocation=".\..\..\..\objs\debug_st/" + ObjectFile=".\..\..\..\objs\debug_st/" + ProgramDataBaseFileName=".\..\..\..\objs\debug_st/" WarningLevel="4" DebugInformationFormat="3" CompileAs="0" @@ -2793,7 +2603,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236_D.lib" + OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239ST_D.lib" SuppressStartupBanner="true" /> <Tool @@ -2806,6 +2616,9 @@ Name="VCBscMakeTool" /> <Tool + Name="VCFxCopTool" + /> + <Tool Name="VCCodeSignTool" /> <Tool @@ -2821,9 +2634,9 @@ /> </Configuration> <Configuration - Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" - OutputDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)" - IntermediateDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)" + Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" + OutputDirectory="Pocket PC 2003 (ARMV4)\$(ConfigurationName)" + IntermediateDirectory="Pocket PC 2003 (ARMV4)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" @@ -2851,13 +2664,14 @@ ExecutionBucket="7" Optimization="0" AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_DEBUG;_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY" + PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_DEBUG;_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;_CRT_SECURE_NO_DEPRECATE" + GeneratePreprocessedFile="0" RuntimeLibrary="1" - DisableLanguageExtensions="true" - PrecompiledHeaderFile=".\..\..\..\objs\debug_st/freetype.pch" - AssemblerListingLocation=".\..\..\..\objs\debug_st/" - ObjectFile=".\..\..\..\objs\debug_st/" - ProgramDataBaseFileName=".\..\..\..\objs\debug_st/" + DisableLanguageExtensions="false" + PrecompiledHeaderFile=".\..\..\..\objs\debug_mt/freetype.pch" + AssemblerListingLocation=".\..\..\..\objs\debug_mt/" + ObjectFile=".\..\..\..\objs\debug_mt/" + ProgramDataBaseFileName=".\..\..\..\objs\debug_mt/" WarningLevel="4" DebugInformationFormat="3" CompileAs="0" @@ -2875,7 +2689,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236ST_D.lib" + OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239MT_D.lib" SuppressStartupBanner="true" /> <Tool @@ -2888,6 +2702,9 @@ Name="VCBscMakeTool" /> <Tool + Name="VCFxCopTool" + /> + <Tool Name="VCCodeSignTool" /> <Tool @@ -2903,9 +2720,9 @@ /> </Configuration> <Configuration - Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" - OutputDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)" - IntermediateDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)" + Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" + OutputDirectory="Smartphone 2003 (ARMV4)\$(ConfigurationName)" + IntermediateDirectory="Smartphone 2003 (ARMV4)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" @@ -2958,7 +2775,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236MT_D.lib" + OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239MT_D.lib" SuppressStartupBanner="true" /> <Tool @@ -2971,6 +2788,9 @@ Name="VCBscMakeTool" /> <Tool + Name="VCFxCopTool" + /> + <Tool Name="VCCodeSignTool" /> <Tool @@ -2986,9 +2806,9 @@ /> </Configuration> <Configuration - Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" - OutputDirectory="Windows Mobile 6 Standard SDK (ARMV4I)\$(ConfigurationName)" - IntermediateDirectory="Windows Mobile 6 Standard SDK (ARMV4I)\$(ConfigurationName)" + Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + OutputDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)" + IntermediateDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" @@ -3014,21 +2834,18 @@ <Tool Name="VCCLCompilerTool" ExecutionBucket="7" - Optimization="2" - InlineFunctionExpansion="1" + Optimization="0" AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT2_BUILD_LIBRARY" - StringPooling="false" - MinimalRebuild="true" - RuntimeLibrary="2" - EnableFunctionLevelLinking="false" + PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_DEBUG;_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;_CRT_SECURE_NO_DEPRECATE;NO_ERRNO_H" + GeneratePreprocessedFile="0" + RuntimeLibrary="1" DisableLanguageExtensions="false" - PrecompiledHeaderFile=".\..\..\..\objs\release/freetype.pch" - AssemblerListingLocation=".\..\..\..\objs\release/" - ObjectFile=".\..\..\..\objs\release/" - ProgramDataBaseFileName=".\..\..\..\objs\release/" + PrecompiledHeaderFile=".\..\..\..\objs\debug_mt/freetype.pch" + AssemblerListingLocation=".\..\..\..\objs\debug_mt/" + ObjectFile=".\..\..\..\objs\debug_mt/" + ProgramDataBaseFileName=".\..\..\..\objs\debug_mt/" WarningLevel="4" - DebugInformationFormat="0" + DebugInformationFormat="3" CompileAs="0" /> <Tool @@ -3036,7 +2853,7 @@ /> <Tool Name="VCResourceCompilerTool" - PreprocessorDefinitions="NDEBUG" + PreprocessorDefinitions="_DEBUG" Culture="1033" /> <Tool @@ -3044,7 +2861,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236.lib" + OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239MT_D.lib" SuppressStartupBanner="true" /> <Tool @@ -3057,6 +2874,9 @@ Name="VCBscMakeTool" /> <Tool + Name="VCFxCopTool" + /> + <Tool Name="VCCodeSignTool" /> <Tool @@ -3072,9 +2892,9 @@ /> </Configuration> <Configuration - Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" - OutputDirectory="Windows Mobile 6 Standard SDK (ARMV4I)\$(ConfigurationName)" - IntermediateDirectory="Windows Mobile 6 Standard SDK (ARMV4I)\$(ConfigurationName)" + Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + OutputDirectory="Windows Mobile 5.0 Smartphone SDK (ARMV4I)\$(ConfigurationName)" + IntermediateDirectory="Windows Mobile 5.0 Smartphone SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" @@ -3100,20 +2920,18 @@ <Tool Name="VCCLCompilerTool" ExecutionBucket="7" - Optimization="2" - InlineFunctionExpansion="1" + Optimization="0" AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT2_BUILD_LIBRARY" - StringPooling="true" - RuntimeLibrary="0" - EnableFunctionLevelLinking="true" + PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_DEBUG;_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;_CRT_SECURE_NO_DEPRECATE" + GeneratePreprocessedFile="0" + RuntimeLibrary="1" DisableLanguageExtensions="false" - PrecompiledHeaderFile=".\..\..\..\objs\release_mt/freetype.pch" - AssemblerListingLocation=".\..\..\..\objs\release_mt/" - ObjectFile=".\..\..\..\objs\release_mt/" - ProgramDataBaseFileName=".\..\..\..\objs\release_mt/" + PrecompiledHeaderFile=".\..\..\..\objs\debug_mt/freetype.pch" + AssemblerListingLocation=".\..\..\..\objs\debug_mt/" + ObjectFile=".\..\..\..\objs\debug_mt/" + ProgramDataBaseFileName=".\..\..\..\objs\debug_mt/" WarningLevel="4" - DebugInformationFormat="0" + DebugInformationFormat="3" CompileAs="0" /> <Tool @@ -3121,7 +2939,7 @@ /> <Tool Name="VCResourceCompilerTool" - PreprocessorDefinitions="NDEBUG" + PreprocessorDefinitions="_DEBUG" Culture="1033" /> <Tool @@ -3129,7 +2947,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236MT.lib" + OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239MT_D.lib" SuppressStartupBanner="true" /> <Tool @@ -3142,6 +2960,9 @@ Name="VCBscMakeTool" /> <Tool + Name="VCFxCopTool" + /> + <Tool Name="VCCodeSignTool" /> <Tool @@ -3157,9 +2978,9 @@ /> </Configuration> <Configuration - Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" - OutputDirectory="Windows Mobile 6 Standard SDK (ARMV4I)\$(ConfigurationName)" - IntermediateDirectory="Windows Mobile 6 Standard SDK (ARMV4I)\$(ConfigurationName)" + Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + OutputDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)" + IntermediateDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" @@ -3185,20 +3006,18 @@ <Tool Name="VCCLCompilerTool" ExecutionBucket="7" - Optimization="2" - InlineFunctionExpansion="1" + Optimization="0" AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;NDEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);NDEBUG;WIN32;_LIB;FT2_BUILD_LIBRARY" - StringPooling="false" - RuntimeLibrary="0" - EnableFunctionLevelLinking="false" + PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_DEBUG;_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;_CRT_SECURE_NO_DEPRECATE" + GeneratePreprocessedFile="0" + RuntimeLibrary="1" DisableLanguageExtensions="false" - PrecompiledHeaderFile=".\..\..\..\objs\release_st/freetype.pch" - AssemblerListingLocation=".\..\..\..\objs\release_st/" - ObjectFile=".\..\..\..\objs\release_st/" - ProgramDataBaseFileName=".\..\..\..\objs\release_st/" + PrecompiledHeaderFile=".\..\..\..\objs\debug_mt/freetype.pch" + AssemblerListingLocation=".\..\..\..\objs\debug_mt/" + ObjectFile=".\..\..\..\objs\debug_mt/" + ProgramDataBaseFileName=".\..\..\..\objs\debug_mt/" WarningLevel="4" - DebugInformationFormat="0" + DebugInformationFormat="3" CompileAs="0" /> <Tool @@ -3206,7 +3025,7 @@ /> <Tool Name="VCResourceCompilerTool" - PreprocessorDefinitions="NDEBUG" + PreprocessorDefinitions="_DEBUG" Culture="1033" /> <Tool @@ -3214,7 +3033,8 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236ST.lib" + OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239MT_D.lib" + SuppressStartupBanner="true" /> <Tool Name="VCALinkTool" @@ -3226,6 +3046,9 @@ Name="VCBscMakeTool" /> <Tool + Name="VCFxCopTool" + /> + <Tool Name="VCCodeSignTool" /> <Tool @@ -3241,7 +3064,7 @@ /> </Configuration> <Configuration - Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" OutputDirectory="Windows Mobile 6 Standard SDK (ARMV4I)\$(ConfigurationName)" IntermediateDirectory="Windows Mobile 6 Standard SDK (ARMV4I)\$(ConfigurationName)" ConfigurationType="4" @@ -3271,13 +3094,14 @@ ExecutionBucket="7" Optimization="0" AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY" - RuntimeLibrary="3" + PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_DEBUG;_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;_CRT_SECURE_NO_DEPRECATE" + GeneratePreprocessedFile="0" + RuntimeLibrary="1" DisableLanguageExtensions="false" - PrecompiledHeaderFile=".\..\..\..\objs\debug/freetype.pch" - AssemblerListingLocation=".\..\..\..\objs\debug/" - ObjectFile=".\..\..\..\objs\debug/" - ProgramDataBaseFileName=".\..\..\..\objs\debug/" + PrecompiledHeaderFile=".\..\..\..\objs\debug_mt/freetype.pch" + AssemblerListingLocation=".\..\..\..\objs\debug_mt/" + ObjectFile=".\..\..\..\objs\debug_mt/" + ProgramDataBaseFileName=".\..\..\..\objs\debug_mt/" WarningLevel="4" DebugInformationFormat="3" CompileAs="0" @@ -3295,7 +3119,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236_D.lib" + OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239MT_D.lib" SuppressStartupBanner="true" /> <Tool @@ -3308,6 +3132,9 @@ Name="VCBscMakeTool" /> <Tool + Name="VCFxCopTool" + /> + <Tool Name="VCCodeSignTool" /> <Tool @@ -3323,9 +3150,9 @@ /> </Configuration> <Configuration - Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" - OutputDirectory="Windows Mobile 6 Standard SDK (ARMV4I)\$(ConfigurationName)" - IntermediateDirectory="Windows Mobile 6 Standard SDK (ARMV4I)\$(ConfigurationName)" + Name="Release Multithreaded|Win32" + OutputDirectory=".\..\..\..\objs\release_mt" + IntermediateDirectory=".\..\..\..\objs\release_mt" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" @@ -3346,22 +3173,23 @@ /> <Tool Name="VCMIDLTool" - TargetEnvironment="1" /> <Tool Name="VCCLCompilerTool" - ExecutionBucket="7" - Optimization="0" + Optimization="2" + InlineFunctionExpansion="1" AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_DEBUG;_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY" - RuntimeLibrary="1" + PreprocessorDefinitions="NDEBUG;WIN32;_LIB;FT2_BUILD_LIBRARY" + StringPooling="true" + RuntimeLibrary="0" + EnableFunctionLevelLinking="true" DisableLanguageExtensions="true" - PrecompiledHeaderFile=".\..\..\..\objs\debug_st/freetype.pch" - AssemblerListingLocation=".\..\..\..\objs\debug_st/" - ObjectFile=".\..\..\..\objs\debug_st/" - ProgramDataBaseFileName=".\..\..\..\objs\debug_st/" + PrecompiledHeaderFile=".\..\..\..\objs\release_mt/freetype.pch" + AssemblerListingLocation=".\..\..\..\objs\release_mt/" + ObjectFile=".\..\..\..\objs\release_mt/" + ProgramDataBaseFileName=".\..\..\..\objs\release_mt/" WarningLevel="4" - DebugInformationFormat="3" + DebugInformationFormat="0" CompileAs="0" /> <Tool @@ -3369,7 +3197,7 @@ /> <Tool Name="VCResourceCompilerTool" - PreprocessorDefinitions="_DEBUG" + PreprocessorDefinitions="NDEBUG" Culture="1033" /> <Tool @@ -3377,7 +3205,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236ST_D.lib" + OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239MT.lib" SuppressStartupBanner="true" /> <Tool @@ -3390,24 +3218,16 @@ Name="VCBscMakeTool" /> <Tool - Name="VCCodeSignTool" + Name="VCFxCopTool" /> <Tool Name="VCPostBuildEventTool" /> - <DeploymentTool - ForceDirty="-1" - RemoteDirectory="" - RegisterOutput="0" - AdditionalFiles="" - /> - <DebuggerTool - /> </Configuration> <Configuration - Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" - OutputDirectory="Windows Mobile 6 Standard SDK (ARMV4I)\$(ConfigurationName)" - IntermediateDirectory="Windows Mobile 6 Standard SDK (ARMV4I)\$(ConfigurationName)" + Name="Debug Multithreaded|Win32" + OutputDirectory=".\..\..\..\objs\debug_mt" + IntermediateDirectory=".\..\..\..\objs\debug_mt" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" @@ -3428,17 +3248,16 @@ /> <Tool Name="VCMIDLTool" - TargetEnvironment="1" /> <Tool Name="VCCLCompilerTool" - ExecutionBucket="7" Optimization="0" AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;_DEBUG;$(PLATFORMDEFINES);$(ARCHFAM);$(_ARCHFAM_);_DEBUG;_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;_CRT_SECURE_NO_DEPRECATE" + PreprocessorDefinitions="_DEBUG;WIN32;_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;_CRT_SECURE_NO_DEPRECATE" GeneratePreprocessedFile="0" + BasicRuntimeChecks="3" RuntimeLibrary="1" - DisableLanguageExtensions="false" + DisableLanguageExtensions="true" PrecompiledHeaderFile=".\..\..\..\objs\debug_mt/freetype.pch" AssemblerListingLocation=".\..\..\..\objs\debug_mt/" ObjectFile=".\..\..\..\objs\debug_mt/" @@ -3460,7 +3279,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype236MT_D.lib" + OutputFile="..\..\..\objs\wince\vc2008-ce\freetype239MT_D.lib" SuppressStartupBanner="true" /> <Tool @@ -3473,19 +3292,11 @@ Name="VCBscMakeTool" /> <Tool - Name="VCCodeSignTool" + Name="VCFxCopTool" /> <Tool Name="VCPostBuildEventTool" /> - <DeploymentTool - ForceDirty="-1" - RemoteDirectory="" - RegisterOutput="0" - AdditionalFiles="" - /> - <DebuggerTool - /> </Configuration> </Configurations> <References> @@ -3503,7 +3314,7 @@ RelativePath="..\..\..\src\bdf\bdf.c" > <FileConfiguration - Name="Release|Win32" + Name="Release|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -3513,7 +3324,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Win32" + Name="Release|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -3523,7 +3334,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Win32" + Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -3533,40 +3344,27 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug Singlethreaded|Win32" + Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" - BasicRuntimeChecks="3" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Win32" + Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" - BasicRuntimeChecks="3" /> </FileConfiguration> <FileConfiguration - Name="Release|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -3586,7 +3384,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release Multithreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -3596,37 +3394,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Pocket PC 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -3636,7 +3434,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Smartphone 2003 (ARMV4)" + Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -3656,37 +3454,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Smartphone 2003 (ARMV4)" + Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" + Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" + Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -3696,21 +3494,21 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Debug|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Debug|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> @@ -3726,7 +3524,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -3736,7 +3534,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -3746,37 +3544,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -3796,7 +3594,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -3806,37 +3604,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -3846,7 +3644,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -3866,37 +3664,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" - > - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" - > - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" - > - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -3906,23 +3674,24 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Release Singlethreaded|Win32" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Singlethreaded|Win32" > <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" + BasicRuntimeChecks="3" /> </FileConfiguration> </File> @@ -3930,7 +3699,7 @@ RelativePath="..\..\..\src\cff\cff.c" > <FileConfiguration - Name="Release|Win32" + Name="Release|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -3940,7 +3709,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Win32" + Name="Release|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -3950,7 +3719,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Win32" + Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -3960,40 +3729,27 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug Singlethreaded|Win32" + Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" - BasicRuntimeChecks="3" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Win32" + Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" - BasicRuntimeChecks="3" /> </FileConfiguration> <FileConfiguration - Name="Release|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -4013,7 +3769,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release Multithreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -4023,37 +3779,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Pocket PC 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -4063,7 +3819,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Smartphone 2003 (ARMV4)" + Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -4083,37 +3839,17 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Smartphone 2003 (ARMV4)" - > - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" - > - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" + Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -4123,7 +3859,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -4133,7 +3869,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -4143,7 +3879,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Debug|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -4153,7 +3889,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Debug|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -4163,7 +3899,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -4173,36 +3909,6 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" - > - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" - > - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" - > - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool @@ -4213,7 +3919,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -4223,7 +3929,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -4233,37 +3939,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -4283,7 +3989,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -4293,37 +3999,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -4333,7 +4039,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -4357,7 +4063,7 @@ RelativePath="..\..\..\src\base\ftbase.c" > <FileConfiguration - Name="Release|Win32" + Name="Release|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -4367,7 +4073,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Win32" + Name="Release|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -4377,7 +4083,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Win32" + Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -4387,40 +4093,27 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug Singlethreaded|Win32" + Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" - BasicRuntimeChecks="3" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Win32" + Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" - BasicRuntimeChecks="3" /> </FileConfiguration> <FileConfiguration - Name="Release|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -4440,7 +4133,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release Multithreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -4450,37 +4143,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Pocket PC 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -4490,7 +4183,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Smartphone 2003 (ARMV4)" + Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -4510,37 +4203,17 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Smartphone 2003 (ARMV4)" - > - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" - > - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" + Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -4550,7 +4223,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -4560,7 +4233,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -4570,7 +4243,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Debug|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -4580,7 +4253,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Debug|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -4590,7 +4263,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -4600,36 +4273,6 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" - > - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" - > - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" - > - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool @@ -4640,7 +4283,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -4650,7 +4293,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -4660,37 +4303,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -4710,7 +4353,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -4720,37 +4363,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -4760,7 +4403,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -4788,7 +4431,7 @@ RelativePath="..\..\..\src\cache\ftcache.c" > <FileConfiguration - Name="Release|Win32" + Name="Release|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -4798,7 +4441,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Win32" + Name="Release|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -4808,7 +4451,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Win32" + Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -4818,40 +4461,27 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug Singlethreaded|Win32" + Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" - BasicRuntimeChecks="3" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Win32" + Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" - BasicRuntimeChecks="3" /> </FileConfiguration> <FileConfiguration - Name="Release|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -4871,7 +4501,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release Multithreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -4881,37 +4511,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Pocket PC 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -4921,7 +4551,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Smartphone 2003 (ARMV4)" + Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -4941,37 +4571,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Smartphone 2003 (ARMV4)" + Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" + Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" + Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -4981,21 +4611,21 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Debug|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Debug|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> @@ -5011,7 +4641,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -5021,7 +4651,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -5031,37 +4661,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -5081,7 +4711,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -5091,37 +4721,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -5131,7 +4761,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -5151,37 +4781,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" - > - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" - > - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" - > - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -5191,23 +4791,25 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Singlethreaded|Win32" > <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" + BasicRuntimeChecks="3" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Win32" > <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" + BasicRuntimeChecks="3" /> </FileConfiguration> </File> @@ -5215,7 +4817,7 @@ RelativePath="..\ftdebug.c" > <FileConfiguration - Name="Release|Win32" + Name="Release|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -5226,7 +4828,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Win32" + Name="Release|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -5237,7 +4839,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Win32" + Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -5248,43 +4850,29 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3" - DisableLanguageExtensions="false" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug Singlethreaded|Win32" + Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" - BasicRuntimeChecks="3" DisableLanguageExtensions="false" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Win32" + Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" - BasicRuntimeChecks="3" DisableLanguageExtensions="false" /> </FileConfiguration> <FileConfiguration - Name="Release|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -5306,7 +4894,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release Multithreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -5317,40 +4905,40 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Pocket PC 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> </FileConfiguration> <FileConfiguration - Name="Release|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -5361,7 +4949,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Smartphone 2003 (ARMV4)" + Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -5383,40 +4971,18 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Smartphone 2003 (ARMV4)" - > - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - DisableLanguageExtensions="false" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" - > - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - DisableLanguageExtensions="false" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" + Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -5427,7 +4993,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -5438,7 +5004,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -5449,7 +5015,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Debug|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -5460,7 +5026,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Debug|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -5471,7 +5037,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -5482,39 +5048,6 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" - > - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - DisableLanguageExtensions="false" - /> - </FileConfiguration> - <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" - > - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - DisableLanguageExtensions="false" - /> - </FileConfiguration> - <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" - > - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - DisableLanguageExtensions="false" - /> - </FileConfiguration> - <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool @@ -5526,7 +5059,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -5537,7 +5070,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -5548,40 +5081,40 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -5603,7 +5136,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -5614,40 +5147,40 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -5658,7 +5191,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -5679,14 +5212,6 @@ DisableLanguageExtensions="false" /> </FileConfiguration> - </File> - <File - RelativePath="..\..\..\src\base\ftgasp.c" - > - </File> - <File - RelativePath="..\..\..\src\base\ftglyph.c" - > <FileConfiguration Name="Release|Win32" > @@ -5695,6 +5220,7 @@ Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" + DisableLanguageExtensions="false" /> </FileConfiguration> <FileConfiguration @@ -5705,6 +5231,7 @@ Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" + DisableLanguageExtensions="false" /> </FileConfiguration> <FileConfiguration @@ -5715,6 +5242,7 @@ Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" + DisableLanguageExtensions="false" /> </FileConfiguration> <FileConfiguration @@ -5726,6 +5254,7 @@ AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" + DisableLanguageExtensions="false" /> </FileConfiguration> <FileConfiguration @@ -5737,6 +5266,7 @@ AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" + DisableLanguageExtensions="false" /> </FileConfiguration> <FileConfiguration @@ -5748,8 +5278,21 @@ AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" + DisableLanguageExtensions="false" /> </FileConfiguration> + </File> + <File + RelativePath="..\..\..\src\base\ftfstype.c" + > + </File> + <File + RelativePath="..\..\..\src\base\ftgasp.c" + > + </File> + <File + RelativePath="..\..\..\src\base\ftglyph.c" + > <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)" > @@ -5761,7 +5304,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -5771,7 +5314,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -5781,37 +5324,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -5831,7 +5374,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -5841,37 +5384,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -5881,7 +5424,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -5901,61 +5444,61 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> @@ -5971,7 +5514,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -5981,7 +5524,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -5991,37 +5534,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -6041,7 +5584,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -6051,37 +5594,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -6091,7 +5634,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -6110,10 +5653,6 @@ PreprocessorDefinitions="" /> </FileConfiguration> - </File> - <File - RelativePath="..\..\..\src\gzip\ftgzip.c" - > <FileConfiguration Name="Release|Win32" > @@ -6177,6 +5716,10 @@ BasicRuntimeChecks="3" /> </FileConfiguration> + </File> + <File + RelativePath="..\..\..\src\gzip\ftgzip.c" + > <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)" > @@ -6188,7 +5731,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -6198,7 +5741,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -6208,37 +5751,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -6258,7 +5801,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -6268,37 +5811,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -6308,7 +5851,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -6328,61 +5871,61 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> @@ -6398,7 +5941,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -6408,7 +5951,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -6418,37 +5961,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -6468,7 +6011,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -6478,37 +6021,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -6518,7 +6061,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -6537,10 +6080,6 @@ PreprocessorDefinitions="" /> </FileConfiguration> - </File> - <File - RelativePath="..\..\..\src\base\ftinit.c" - > <FileConfiguration Name="Release|Win32" > @@ -6604,6 +6143,10 @@ BasicRuntimeChecks="3" /> </FileConfiguration> + </File> + <File + RelativePath="..\..\..\src\base\ftinit.c" + > <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)" > @@ -6615,7 +6158,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -6625,7 +6168,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -6635,37 +6178,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -6685,7 +6228,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -6695,37 +6238,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -6735,7 +6278,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -6755,61 +6298,61 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> @@ -6825,7 +6368,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -6835,7 +6378,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -6845,37 +6388,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -6895,7 +6438,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -6905,37 +6448,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -6945,7 +6488,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -6964,10 +6507,6 @@ PreprocessorDefinitions="" /> </FileConfiguration> - </File> - <File - RelativePath="..\..\..\src\lzw\ftlzw.c" - > <FileConfiguration Name="Release|Win32" > @@ -7031,6 +6570,10 @@ BasicRuntimeChecks="3" /> </FileConfiguration> + </File> + <File + RelativePath="..\..\..\src\lzw\ftlzw.c" + > <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)" > @@ -7042,7 +6585,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -7052,7 +6595,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -7062,37 +6605,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -7112,7 +6655,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -7122,37 +6665,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -7162,7 +6705,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -7182,61 +6725,61 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> @@ -7252,7 +6795,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -7262,7 +6805,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -7272,37 +6815,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -7322,7 +6865,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -7332,37 +6875,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -7372,7 +6915,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -7391,14 +6934,6 @@ PreprocessorDefinitions="" /> </FileConfiguration> - </File> - <File - RelativePath="..\..\..\src\base\ftstroke.c" - > - </File> - <File - RelativePath="..\..\..\src\base\ftsystem.c" - > <FileConfiguration Name="Release|Win32" > @@ -7462,6 +6997,14 @@ BasicRuntimeChecks="3" /> </FileConfiguration> + </File> + <File + RelativePath="..\..\..\src\base\ftstroke.c" + > + </File> + <File + RelativePath="..\..\..\src\base\ftsystem.c" + > <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)" > @@ -7473,7 +7016,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -7483,7 +7026,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -7493,37 +7036,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -7543,7 +7086,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -7553,37 +7096,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -7593,7 +7136,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -7613,61 +7156,61 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> @@ -7683,7 +7226,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -7693,7 +7236,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -7703,37 +7246,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -7753,7 +7296,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -7763,37 +7306,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -7803,7 +7346,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -7822,10 +7365,6 @@ PreprocessorDefinitions="" /> </FileConfiguration> - </File> - <File - RelativePath="..\..\..\src\smooth\smooth.c" - > <FileConfiguration Name="Release|Win32" > @@ -7889,6 +7428,10 @@ BasicRuntimeChecks="3" /> </FileConfiguration> + </File> + <File + RelativePath="..\..\..\src\smooth\smooth.c" + > <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)" > @@ -7900,7 +7443,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -7910,7 +7453,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -7920,37 +7463,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -7970,7 +7513,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -7980,37 +7523,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -8020,7 +7563,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -8040,6 +7583,56 @@ /> </FileConfiguration> <FileConfiguration + Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + > + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + /> + </FileConfiguration> + <FileConfiguration + Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + > + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + /> + </FileConfiguration> + <FileConfiguration + Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + > + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + /> + </FileConfiguration> + <FileConfiguration + Name="Debug|Pocket PC 2003 (ARMV4)" + > + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + /> + </FileConfiguration> + <FileConfiguration + Name="Debug|Smartphone 2003 (ARMV4)" + > + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool @@ -8050,7 +7643,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -8060,7 +7653,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -8070,37 +7663,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -8120,7 +7713,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -8130,37 +7723,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -8170,7 +7763,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -8190,7 +7783,17 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + > + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + /> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32" > <Tool Name="VCCLCompilerTool" @@ -8200,7 +7803,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Release Multithreaded|Win32" > <Tool Name="VCCLCompilerTool" @@ -8210,7 +7813,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Release Singlethreaded|Win32" > <Tool Name="VCCLCompilerTool" @@ -8220,33 +7823,36 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug|Win32" > <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" + BasicRuntimeChecks="3" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Singlethreaded|Win32" > <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" + BasicRuntimeChecks="3" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Win32" > <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" + BasicRuntimeChecks="3" /> </FileConfiguration> </File> @@ -8261,7 +7867,7 @@ RelativePath="..\..\..\src\base\ftmm.c" > <FileConfiguration - Name="Release|Win32" + Name="Release|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -8271,7 +7877,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Win32" + Name="Release|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -8281,7 +7887,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Win32" + Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -8291,40 +7897,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Win32" + Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" - BasicRuntimeChecks="3" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Win32" + Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" - BasicRuntimeChecks="3" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Win32" + Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" - BasicRuntimeChecks="3" /> </FileConfiguration> <FileConfiguration - Name="Release|Pocket PC 2003 (ARMV4)" + Name="Release Multithreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -8334,7 +7937,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Pocket PC 2003 (ARMV4)" + Name="Release Multithreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -8344,7 +7947,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -8354,37 +7957,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Pocket PC 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Smartphone 2003 (ARMV4)" + Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -8394,7 +7997,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Smartphone 2003 (ARMV4)" + Name="Release Singlethreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -8404,7 +8007,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Smartphone 2003 (ARMV4)" + Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -8414,67 +8017,67 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Smartphone 2003 (ARMV4)" + Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" + Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" + Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Debug|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Debug|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -8484,7 +8087,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -8494,7 +8097,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -8504,37 +8107,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -8544,7 +8147,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -8554,7 +8157,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -8564,37 +8167,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -8604,7 +8207,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -8614,7 +8217,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -8624,7 +8227,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Release|Win32" > <Tool Name="VCCLCompilerTool" @@ -8634,7 +8237,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Release Multithreaded|Win32" > <Tool Name="VCCLCompilerTool" @@ -8644,7 +8247,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Release Singlethreaded|Win32" > <Tool Name="VCCLCompilerTool" @@ -8654,33 +8257,36 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug|Win32" > <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" + BasicRuntimeChecks="3" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Singlethreaded|Win32" > <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" + BasicRuntimeChecks="3" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Win32" > <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" + BasicRuntimeChecks="3" /> </FileConfiguration> </File> @@ -8704,7 +8310,7 @@ RelativePath="..\..\..\src\pcf\pcf.c" > <FileConfiguration - Name="Release|Win32" + Name="Release|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -8714,7 +8320,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Win32" + Name="Release|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -8724,7 +8330,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Win32" + Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -8734,40 +8340,27 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug Singlethreaded|Win32" + Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" - BasicRuntimeChecks="3" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Win32" + Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" - BasicRuntimeChecks="3" /> </FileConfiguration> <FileConfiguration - Name="Release|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -8787,7 +8380,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release Multithreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -8797,37 +8390,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Pocket PC 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -8837,7 +8430,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Smartphone 2003 (ARMV4)" + Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -8857,37 +8450,17 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Smartphone 2003 (ARMV4)" - > - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" - > - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - <FileConfiguration - Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" + Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -8897,7 +8470,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -8907,7 +8480,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -8917,7 +8490,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Debug|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -8927,7 +8500,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Debug|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -8937,7 +8510,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -8947,36 +8520,6 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" - > - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" - > - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" - > - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - /> - </FileConfiguration> - <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool @@ -8987,7 +8530,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -8997,7 +8540,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -9007,37 +8550,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -9057,7 +8600,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -9067,37 +8610,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -9107,7 +8650,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -9126,10 +8669,6 @@ PreprocessorDefinitions="" /> </FileConfiguration> - </File> - <File - RelativePath="..\..\..\src\pfr\pfr.c" - > <FileConfiguration Name="Release|Win32" > @@ -9193,6 +8732,10 @@ BasicRuntimeChecks="3" /> </FileConfiguration> + </File> + <File + RelativePath="..\..\..\src\pfr\pfr.c" + > <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)" > @@ -9204,7 +8747,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -9214,7 +8757,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -9224,37 +8767,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -9274,7 +8817,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -9284,37 +8827,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -9324,7 +8867,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -9344,61 +8887,61 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> @@ -9414,7 +8957,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -9424,7 +8967,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -9434,37 +8977,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -9484,7 +9027,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -9494,37 +9037,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -9534,7 +9077,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -9553,10 +9096,6 @@ PreprocessorDefinitions="" /> </FileConfiguration> - </File> - <File - RelativePath="..\..\..\src\psaux\psaux.c" - > <FileConfiguration Name="Release|Win32" > @@ -9620,6 +9159,10 @@ BasicRuntimeChecks="3" /> </FileConfiguration> + </File> + <File + RelativePath="..\..\..\src\psaux\psaux.c" + > <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)" > @@ -9631,7 +9174,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -9641,7 +9184,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -9651,37 +9194,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -9701,7 +9244,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -9711,37 +9254,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -9751,7 +9294,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -9771,61 +9314,61 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> @@ -9841,7 +9384,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -9851,7 +9394,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -9861,37 +9404,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -9911,7 +9454,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -9921,37 +9464,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -9961,7 +9504,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -9980,10 +9523,6 @@ PreprocessorDefinitions="" /> </FileConfiguration> - </File> - <File - RelativePath="..\..\..\src\pshinter\pshinter.c" - > <FileConfiguration Name="Release|Win32" > @@ -10047,6 +9586,10 @@ BasicRuntimeChecks="3" /> </FileConfiguration> + </File> + <File + RelativePath="..\..\..\src\pshinter\pshinter.c" + > <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)" > @@ -10058,7 +9601,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -10068,7 +9611,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -10078,37 +9621,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -10128,7 +9671,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -10138,37 +9681,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -10178,7 +9721,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -10198,61 +9741,61 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> @@ -10268,7 +9811,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -10278,7 +9821,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -10288,37 +9831,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -10338,7 +9881,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -10348,37 +9891,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -10388,7 +9931,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -10407,10 +9950,6 @@ PreprocessorDefinitions="" /> </FileConfiguration> - </File> - <File - RelativePath="..\..\..\src\psnames\psmodule.c" - > <FileConfiguration Name="Release|Win32" > @@ -10474,6 +10013,10 @@ BasicRuntimeChecks="3" /> </FileConfiguration> + </File> + <File + RelativePath="..\..\..\src\psnames\psmodule.c" + > <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)" > @@ -10485,7 +10028,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -10495,7 +10038,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -10505,37 +10048,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -10555,7 +10098,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -10565,37 +10108,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -10605,7 +10148,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -10625,61 +10168,61 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> @@ -10695,7 +10238,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -10705,7 +10248,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -10715,37 +10258,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -10765,7 +10308,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -10775,37 +10318,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -10815,7 +10358,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -10834,10 +10377,6 @@ PreprocessorDefinitions="" /> </FileConfiguration> - </File> - <File - RelativePath="..\..\..\src\raster\raster.c" - > <FileConfiguration Name="Release|Win32" > @@ -10901,6 +10440,10 @@ BasicRuntimeChecks="3" /> </FileConfiguration> + </File> + <File + RelativePath="..\..\..\src\raster\raster.c" + > <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)" > @@ -10912,7 +10455,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -10922,7 +10465,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -10932,37 +10475,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -10982,7 +10525,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -10992,37 +10535,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -11032,7 +10575,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -11052,61 +10595,61 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> @@ -11122,7 +10665,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -11132,7 +10675,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -11142,37 +10685,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -11192,7 +10735,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -11202,37 +10745,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -11242,7 +10785,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -11261,10 +10804,6 @@ PreprocessorDefinitions="" /> </FileConfiguration> - </File> - <File - RelativePath="..\..\..\src\sfnt\sfnt.c" - > <FileConfiguration Name="Release|Win32" > @@ -11328,6 +10867,10 @@ BasicRuntimeChecks="3" /> </FileConfiguration> + </File> + <File + RelativePath="..\..\..\src\sfnt\sfnt.c" + > <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)" > @@ -11339,7 +10882,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -11349,7 +10892,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -11359,37 +10902,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -11409,7 +10952,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -11419,37 +10962,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -11459,7 +11002,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -11479,61 +11022,61 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> @@ -11549,7 +11092,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -11559,7 +11102,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -11569,37 +11112,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -11619,7 +11162,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -11629,37 +11172,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -11669,7 +11212,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -11688,10 +11231,6 @@ PreprocessorDefinitions="" /> </FileConfiguration> - </File> - <File - RelativePath="..\..\..\src\truetype\truetype.c" - > <FileConfiguration Name="Release|Win32" > @@ -11755,6 +11294,10 @@ BasicRuntimeChecks="3" /> </FileConfiguration> + </File> + <File + RelativePath="..\..\..\src\truetype\truetype.c" + > <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)" > @@ -11766,7 +11309,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -11776,7 +11319,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -11786,37 +11329,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -11836,7 +11379,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -11846,37 +11389,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -11886,7 +11429,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -11906,61 +11449,61 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> @@ -11976,7 +11519,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -11986,7 +11529,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -11996,37 +11539,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -12046,7 +11589,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -12056,37 +11599,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -12096,7 +11639,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -12115,10 +11658,6 @@ PreprocessorDefinitions="" /> </FileConfiguration> - </File> - <File - RelativePath="..\..\..\src\type1\type1.c" - > <FileConfiguration Name="Release|Win32" > @@ -12182,6 +11721,10 @@ BasicRuntimeChecks="3" /> </FileConfiguration> + </File> + <File + RelativePath="..\..\..\src\type1\type1.c" + > <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)" > @@ -12193,7 +11736,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -12203,7 +11746,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -12213,37 +11756,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -12263,7 +11806,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -12273,37 +11816,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -12313,7 +11856,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -12333,61 +11876,61 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> @@ -12403,7 +11946,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -12413,7 +11956,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -12423,37 +11966,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -12473,7 +12016,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -12483,37 +12026,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -12523,7 +12066,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -12542,10 +12085,6 @@ PreprocessorDefinitions="" /> </FileConfiguration> - </File> - <File - RelativePath="..\..\..\src\cid\type1cid.c" - > <FileConfiguration Name="Release|Win32" > @@ -12609,6 +12148,10 @@ BasicRuntimeChecks="3" /> </FileConfiguration> + </File> + <File + RelativePath="..\..\..\src\cid\type1cid.c" + > <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)" > @@ -12620,7 +12163,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -12630,7 +12173,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -12640,37 +12183,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -12690,7 +12233,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -12700,37 +12243,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -12740,7 +12283,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -12760,61 +12303,61 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> @@ -12830,7 +12373,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -12840,7 +12383,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -12850,37 +12393,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -12900,7 +12443,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -12910,37 +12453,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -12950,7 +12493,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -12969,10 +12512,6 @@ PreprocessorDefinitions="" /> </FileConfiguration> - </File> - <File - RelativePath="..\..\..\src\type42\type42.c" - > <FileConfiguration Name="Release|Win32" > @@ -13036,6 +12575,10 @@ BasicRuntimeChecks="3" /> </FileConfiguration> + </File> + <File + RelativePath="..\..\..\src\type42\type42.c" + > <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)" > @@ -13047,7 +12590,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -13057,7 +12600,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -13067,37 +12610,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -13117,7 +12660,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -13127,37 +12670,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -13167,7 +12710,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -13187,61 +12730,61 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> @@ -13257,7 +12800,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -13267,7 +12810,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -13277,37 +12820,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -13327,7 +12870,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -13337,37 +12880,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -13377,7 +12920,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -13396,10 +12939,6 @@ PreprocessorDefinitions="" /> </FileConfiguration> - </File> - <File - RelativePath="..\..\..\src\winfonts\winfnt.c" - > <FileConfiguration Name="Release|Win32" > @@ -13463,6 +13002,10 @@ BasicRuntimeChecks="3" /> </FileConfiguration> + </File> + <File + RelativePath="..\..\..\src\winfonts\winfnt.c" + > <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)" > @@ -13474,7 +13017,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -13484,7 +13027,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -13494,37 +13037,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" + Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -13544,7 +13087,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -13554,37 +13097,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" + Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -13594,7 +13137,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release Singlethreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" @@ -13614,6 +13157,56 @@ /> </FileConfiguration> <FileConfiguration + Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + > + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + /> + </FileConfiguration> + <FileConfiguration + Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + > + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + /> + </FileConfiguration> + <FileConfiguration + Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + > + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + /> + </FileConfiguration> + <FileConfiguration + Name="Debug|Pocket PC 2003 (ARMV4)" + > + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + /> + </FileConfiguration> + <FileConfiguration + Name="Debug|Smartphone 2003 (ARMV4)" + > + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + /> + </FileConfiguration> + <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool @@ -13624,7 +13217,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -13634,7 +13227,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -13644,37 +13237,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -13694,7 +13287,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -13704,37 +13297,37 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Multithreaded|Smartphone 2003 (ARMV4)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -13744,7 +13337,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" @@ -13764,7 +13357,17 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + > + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + /> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32" > <Tool Name="VCCLCompilerTool" @@ -13774,7 +13377,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Release Multithreaded|Win32" > <Tool Name="VCCLCompilerTool" @@ -13784,7 +13387,7 @@ /> </FileConfiguration> <FileConfiguration - Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Release Singlethreaded|Win32" > <Tool Name="VCCLCompilerTool" @@ -13794,33 +13397,36 @@ /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug|Win32" > <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" + BasicRuntimeChecks="3" /> </FileConfiguration> <FileConfiguration - Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Singlethreaded|Win32" > <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" + BasicRuntimeChecks="3" /> </FileConfiguration> <FileConfiguration - Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="Debug Multithreaded|Win32" > <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" + BasicRuntimeChecks="3" /> </FileConfiguration> </File> diff --git a/src/3rdparty/freetype/builds/win32/visualce/index.html b/src/3rdparty/freetype/builds/wince/vc2008-ce/index.html index 39a2ba5..20e576f 100644 --- a/src/3rdparty/freetype/builds/win32/visualce/index.html +++ b/src/3rdparty/freetype/builds/wince/vc2008-ce/index.html @@ -1,13 +1,13 @@ <html> <header> <title> - FreeType 2 Project Files for Visual C++ and VS.NET 2005 + FreeType 2 Project Files for VS.NET 2008 (Pocket PC) </title> <body> <h1> - FreeType 2 Project Files for Visual C++ and VS.NET 2005 + FreeType 2 Project Files for VS.NET 2008 (Pocket PC) </h1> @@ -21,14 +21,14 @@ the following targets: <li>PPC/SP WM6 (Windows Mobile 6)</li> </ul> -It compiles the following libraries from the FreeType 2.3.6 sources:</p> +It compiles the following libraries from the FreeType 2.3.9 sources:</p> <ul> <pre> - freetype236.lib - release build; single threaded - freetype236_D.lib - debug build; single threaded - freetype236MT.lib - release build; multi-threaded - freetype236MT_D.lib - debug build; multi-threaded</pre> + freetype239.lib - release build; single threaded + freetype239_D.lib - debug build; single threaded + freetype239MT.lib - release build; multi-threaded + freetype239MT_D.lib - debug build; multi-threaded</pre> </ul> <p>Be sure to extract the files with the Windows (CR+LF) line endings. ZIP diff --git a/src/3rdparty/freetype/configure b/src/3rdparty/freetype/configure index c72e44b..b59d35d 100755 --- a/src/3rdparty/freetype/configure +++ b/src/3rdparty/freetype/configure @@ -1,6 +1,6 @@ #!/bin/sh # -# Copyright 2002, 2003, 2004, 2005, 2006 by +# Copyright 2002, 2003, 2004, 2005, 2006, 2008 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, @@ -21,7 +21,7 @@ fi if test -z "`$GNUMAKE -v 2>/dev/null | grep GNU`"; then if test -z "`$GNUMAKE -v 2>/dev/null | grep makepp`"; then - echo "GNU make (>= 3.79.1) or makepp (>= 1.19) is required to build FreeType2." >&2 + echo "GNU make (>= 3.80) or makepp (>= 1.19) is required to build FreeType2." >&2 echo "Please try" >&2 echo " \`GNUMAKE=<GNU make command name> $0'." >&2 echo "or >&2" @@ -92,9 +92,13 @@ fi # call make CFG= -for x in ${1+"$@"}; do - CFG="$CFG '$x'" -done +# work around zsh bug which doesn't like `${1+"$@"}' +case $# in +0) ;; +*) for x in "$@"; do + CFG="$CFG '$x'" + done ;; +esac CFG=$CFG $GNUMAKE setup unix # eof diff --git a/src/3rdparty/freetype/devel/ftoption.h b/src/3rdparty/freetype/devel/ftoption.h index b3bace1..f7f7fcc 100644 --- a/src/3rdparty/freetype/devel/ftoption.h +++ b/src/3rdparty/freetype/devel/ftoption.h @@ -117,6 +117,27 @@ FT_BEGIN_HEADER /*************************************************************************/ /* */ + /* If this macro is defined, do not try to use an assembler version of */ + /* performance-critical functions (e.g. FT_MulFix). You should only do */ + /* that to verify that the assembler function works properly, or to */ + /* execute benchmark tests of the various implementations. */ +/* #define FT_CONFIG_OPTION_NO_ASSEMBLER */ + + + /*************************************************************************/ + /* */ + /* If this macro is defined, try to use an inlined assembler version of */ + /* the `FT_MulFix' function, which is a `hotspot' when loading and */ + /* hinting glyphs, and which should be executed as fast as possible. */ + /* */ + /* Note that if your compiler or CPU is not supported, this will default */ + /* to the standard and portable implementation found in `ftcalc.c'. */ + /* */ +#define FT_CONFIG_OPTION_INLINE_MULFIX + + + /*************************************************************************/ + /* */ /* LZW-compressed file support. */ /* */ /* FreeType now handles font files that have been compressed with the */ @@ -224,7 +245,7 @@ FT_BEGIN_HEADER /* if you build it to support postscript names in the TrueType */ /* `post' table. */ /* */ - /* - The Type 1 driver will not be able to synthetize a Unicode */ + /* - The Type 1 driver will not be able to synthesize a Unicode */ /* charmap out of the glyphs found in the fonts. */ /* */ /* You would normally undefine this configuration macro when building */ @@ -240,12 +261,12 @@ FT_BEGIN_HEADER /* By default, FreeType 2 is built with the `PSNames' module compiled */ /* in. Among other things, the module is used to convert a glyph name */ /* into a Unicode value. This is especially useful in order to */ - /* synthetize on the fly a Unicode charmap from the CFF/Type 1 driver */ + /* synthesize on the fly a Unicode charmap from the CFF/Type 1 driver */ /* through a big table named the `Adobe Glyph List' (AGL). */ /* */ /* Undefine this macro if you do not want the Adobe Glyph List */ /* compiled in your `PSNames' module. The Type 1 driver will not be */ - /* able to synthetize a Unicode charmap out of the glyphs found in the */ + /* able to synthesize a Unicode charmap out of the glyphs found in the */ /* fonts. */ /* */ #define FT_CONFIG_OPTION_ADOBE_GLYPH_LIST @@ -467,9 +488,9 @@ FT_BEGIN_HEADER /* If you define TT_CONFIG_OPTION_UNPATENTED_HINTING, a special version */ /* of the TrueType bytecode interpreter is used that doesn't implement */ /* any of the patented opcodes and algorithms. Note that the */ - /* the TT_CONFIG_OPTION_UNPATENTED_HINTING macro is *ignored* if you */ - /* define TT_CONFIG_OPTION_BYTECODE_INTERPRETER; with other words, */ - /* either define TT_CONFIG_OPTION_BYTECODE_INTERPRETER or */ + /* TT_CONFIG_OPTION_UNPATENTED_HINTING macro is *ignored* if you define */ + /* TT_CONFIG_OPTION_BYTECODE_INTERPRETER; in other words, either define */ + /* TT_CONFIG_OPTION_BYTECODE_INTERPRETER or */ /* TT_CONFIG_OPTION_UNPATENTED_HINTING but not both at the same time. */ /* */ /* This macro is only useful for a small number of font files (mostly */ @@ -659,6 +680,7 @@ FT_BEGIN_HEADER */ #ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER #define TT_USE_BYTECODE_INTERPRETER +#undef TT_CONFIG_OPTION_UNPATENTED_HINTING #elif defined TT_CONFIG_OPTION_UNPATENTED_HINTING #define TT_USE_BYTECODE_INTERPRETER #endif diff --git a/src/3rdparty/freetype/docs/CHANGES b/src/3rdparty/freetype/docs/CHANGES index 8129ec7..9eb68c2 100644 --- a/src/3rdparty/freetype/docs/CHANGES +++ b/src/3rdparty/freetype/docs/CHANGES @@ -1,3 +1,172 @@ +CHANGES BETWEEN 2.3.9 and 2.3.8 + + I. IMPORTANT BUG FIXES + + - Very unfortunately, FreeType 2.3.8 contained a change that broke + its official ABI. The end result is that programs compiled + against previous versions of the library, but dynamically linked + to 2.3.8 can experience memory corruption if they call the + `FT_Get_PS_Font_Info' function. + + We recommend all users to upgrade to 2.3.9 as soon as possible, + or to downgrade to a previous release of the library if this is + not an option. + + The origin of the bug is that a new field was added to the + publicly defined `PS_FontInfoRec' structure. Unfortunately, + objects of this type can be stack or heap allocated by callers + of `FT_Get_PS_Font_Info', resulting in a memory buffer + overwrite with its implementation in 2.3.8. + + If you want to know whether your code is vulnerable to this + issue, simply search for the substrings `PS_FontInfo' and + `PS_Font_Info' in your source code. If none is found, your code + is safe and is not affected. + + The FreeType team apologizes for the problem. + + - The POSIX support of MacOS resource-fork fonts (Suitcase fonts + and LaserWriter Type1 PostScript fonts) was broken in 2.3.8. If + FreeType2 is built without Carbon framework, these fonts are not + handled correctly. Version 2.3.7 didn't have this bug. + + - `FT_Get_Advance' (and `FT_Get_Advances') returned bad values for + almost all font formats except TrueType fonts. + + - Fix a bug in the SFNT kerning table loader/parser which could + crash the engine if certain malformed tables were encountered. + + - Composite SFNT bitmaps are now handled correctly. + + + II. IMPORTANT CHANGES + + - The new functions `FT_Get_CID_Is_Internally_CID_keyed' and + `FT_Get_CID_From_Glyph_Index' can be used to access CID-keyed + CFF fonts via CID values. This code has been contributed by + Michael Toftdal. + + + III. MISCELLANEOUS + + - `FT_Outline_Get_InsideBorder' returns FT_STROKER_BORDER_RIGHT + for empty outlines. This was incorrectly documented. + + - The `ftview' demo program now supports UTF-8 encoded strings. + + +====================================================================== + +CHANGES BETWEEN 2.3.8 and 2.3.7 + + I. IMPORTANT BUG FIXES + + - CID-keyed fonts in an SFNT wrapper were not handled correctly. + + - The smooth renderer produced truncated images (on the right) for + outline parts with negative horizontal values. Most fonts don't + contain outlines left to the y coordinate axis, but the effect + was very noticeable for outlines processed with FT_Glyph_Stroke, + using thick strokes. + + - `FT_Get_TrueType_Engine_Type' returned a wrong value if both + configuration macros TT_CONFIG_OPTION_BYTECODE_INTERPRETER and + TT_CONFIG_OPTION_UNPATENTED_HINTING were defined. + + - The `face_index' field in the `FT_Face' structure wasn't + initialized properly after calling FT_Open_Face and friends with + a positive face index for CFFs, WinFNTs, and, most importantly, + for TrueType Collections (TTCs). + + + II. IMPORTANT CHANGES + + - Rudimentary support for Type 1 fonts and CID-keyed Type 1 fonts + in an SFNT wrapper has been added -- such fonts are used on the + Mac. The core SFNT tables `TYP1' and `CID ' are passed to the + PS Type 1 and CID-keyed PS font drivers; other tables (`ALMX', + `BBOX', etc.) are not supported yet. + + - A new interface to extract advance values of glyphs without + loading their outlines has been added. The functions are called + `FT_Get_Advance' and `FT_Get_Advances'; they are defined in file + `ftadvanc.h' (to be accessed as FT_ADVANCES_H). + + - A new function `FT_Get_FSType_Flags' (in FT_FREETYPE_H) has been + contributed by David Bevan to access the embedding and + subsetting restriction information of fonts. + + + III. MISCELLANEOUS + + - FT_MulFix is now an inlined function; by default, assembler code + is provided for x86 and ARM. See FT_CONFIG_OPTION_INLINE_MULFIX + and FT_CONFIG_OPTION_NO_ASSEMBLER (in ftoption.h) for more. + + - The handling of `tricky' fonts (this is, fonts which don't work + with the autohinter, needing the font format's hinting engine) + has been generalized and changed slightly: + + . A new face flag FT_FACE_FLAG_TRICKY indicates that the font + format's hinting engine is necessary for correct rendering. + The macro FT_IS_TRICKY can be used to check this flag. + + . FT_LOAD_NO_HINTING is now ignored for tricky fonts. To really + force raw loading of such fonts (without hinting), both + FT_LOAD_NO_HINTING and FT_LOAD_NO_AUTOHINT must be used -- + this is something which you probably never want to do. + + . Tricky TrueType fonts always use the bytecode interpreter, + either the patented or unpatented version. + + - The function `FT_GlyphSlot_Own_Bitmap' has been moved from + FT_SYNTHESIS_H to FT_BITMAP_H; it is now part of the `official' + API. (The functions in FT_SYNTHESIS_H are still subject to + change, however.) + + - In the `ftdiff' demo program you can now toggle the use of + FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH with key `a'. + + +====================================================================== + +CHANGES BETWEEN 2.3.7 and 2.3.6 + + I. IMPORTANT BUG FIXES + + - If the library was compiled on an i386 platform using gcc, and + compiler option -O3 was given, `FT_MulFix' sometimes returned + incorrect results which could have caused problems with + `FT_Request_Metrics' and `FT_Select_Metrics', returning an + incorrect descender size. + + - Pure CFFs without subfonts were scaled incorrectly if the font + matrix was non-standard. This bug has been introduced in + version 2.3.6. + + - The `style_name' field in the `FT_FaceRec' structure often + contained a wrong value for Type 1 fonts. This misbehaviour + has been introduced in version 2.3.6 while trying to fix + another problem. [Note, however, that this value is + informative only since the used algorithm to extract it is + very simplistic.] + + + II. IMPORTANT CHANGES + + - Two new macros, FT_OUTLINE_SMART_DROPOUTS and + FT_OUTLINE_EXCLUDE_STUBS, have been introduced. Together with + FT_OUTLINE_IGNORE_DROPOUTS (which was ignored previously) it is + now possible to control the dropout mode of the `raster' module + (for B&W rasterization), using the `flags' field in the + `FT_Outline' structure. + + - The TrueType bytecode interpreter now passes the dropout mode to + the B&W rasterizer. This greatly increases the output for small + ppem values of many fonts like `pala.ttf'. + + +====================================================================== CHANGES BETWEEN 2.3.6 and 2.3.5 @@ -3130,7 +3299,7 @@ Extensions support: ------------------------------------------------------------------------ -Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by +Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by David Turner, Robert Wilhelm, and Werner Lemberg. This file is part of the FreeType project, and may only be used, diff --git a/src/3rdparty/freetype/docs/INSTALL b/src/3rdparty/freetype/docs/INSTALL index 585c4db..de50d0c 100644 --- a/src/3rdparty/freetype/docs/INSTALL +++ b/src/3rdparty/freetype/docs/INSTALL @@ -20,6 +20,8 @@ I. Normal installation and upgrades Make for automatic compilation, since other make tools won't work (this includes BSD Make). + GNU Make VERSION 3.80 OR NEWER IS NEEDED! + 3. On VMS with the `mms' build tool @@ -76,7 +78,7 @@ II. Custom builds of the library ---------------------------------------------------------------------- -Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 by +Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by David Turner, Robert Wilhelm, and Werner Lemberg. This file is part of the FreeType project, and may only be used, diff --git a/src/3rdparty/freetype/docs/INSTALL.ANY b/src/3rdparty/freetype/docs/INSTALL.ANY index 06f65d7..86e94d5 100644 --- a/src/3rdparty/freetype/docs/INSTALL.ANY +++ b/src/3rdparty/freetype/docs/INSTALL.ANY @@ -38,14 +38,20 @@ I. Standard procedure src/base/ftbdf.c -- optional, see <freetype/ftbdf.h> src/base/ftbitmap.c -- optional, see <freetype/ftbitmap.h> + src/base/ftcid.c -- optional, see <freetype/ftcid.h> + src/base/ftfstype.c -- optional + src/base/ftgasp.c -- optional, see <freetype/ftgasp.h> src/base/ftgxval.c -- optional, see <freetype/ftgxval.h> + src/base/ftlcdfil.c -- optional, see <freetype/ftlcdfil.h> src/base/ftmm.c -- optional, see <freetype/ftmm.h> src/base/ftotval.c -- optional, see <freetype/ftotval.h> + src/base/ftpatent.c -- optional src/base/ftpfr.c -- optional, see <freetype/ftpfr.h> src/base/ftstroke.c -- optional, see <freetype/ftstroke.h> src/base/ftsynth.c -- optional, see <freetype/ftsynth.h> src/base/fttype1.c -- optional, see <freetype/t1tables.h> src/base/ftwinfnt.c -- optional, see <freetype/ftwinfnt.h> + src/base/ftxf86.c -- optional, see <freetype/ftxf86.h> src/base/ftmac.c -- only on the Macintosh @@ -63,8 +69,8 @@ I. Standard procedure src/type42/type42.c -- Type 42 font driver src/winfonts/winfnt.c -- Windows FONT / FNT font driver - -- rasterizers (optional; at least one is needed for - vector formats) + -- rasterizers (optional; at least one is needed for vector + formats) src/raster/raster.c -- monochrome rasterizer src/smooth/smooth.c -- anti-aliasing rasterizer @@ -84,6 +90,12 @@ I. Standard procedure Notes: + `ftcache.c' needs `ftglyph.c' + `ftfstype.c' needs `fttype1.c' + `ftglyph.c' needs `ftbitmap.c' + `ftstroke.c' needs `ftglyph.c' + `ftsynth.c' needs `ftbitmap.c' + `cff.c' needs `sfnt.c', `pshinter.c', and `psnames.c' `truetype.c' needs `sfnt.c' and `psnames.c' `type1.c' needs `psaux.c' `pshinter.c', and `psnames.c' @@ -126,7 +138,7 @@ II. Support for flat-directory compilation ---------------------------------------------------------------------- -Copyright 2003, 2005, 2006 by +Copyright 2003, 2005, 2006, 2009 by David Turner, Robert Wilhelm, and Werner Lemberg. This file is part of the FreeType project, and may only be used, diff --git a/src/3rdparty/freetype/docs/INSTALL.CROSS b/src/3rdparty/freetype/docs/INSTALL.CROSS index 1a0c00c..3def12c 100644 --- a/src/3rdparty/freetype/docs/INSTALL.CROSS +++ b/src/3rdparty/freetype/docs/INSTALL.CROSS @@ -8,7 +8,7 @@ INSTALL.UNIX for required tools and the basic self-building procedure. ----------------- For self-building the FreeType library on a Unix system, GNU Make - 3.78.1 or newer is required. INSTALL.UNIX contains hints how to + 3.80 or newer is required. INSTALL.UNIX contains hints how to check the installed `make'. The GNU C compiler to cross-build the target system is required. @@ -121,7 +121,7 @@ INSTALL.UNIX for required tools and the basic self-building procedure. ---------------------------------------------------------------------- -Copyright 2006 by suzuki toshiya +Copyright 2006, 2008 by suzuki toshiya David Turner, Robert Wilhelm, and Werner Lemberg. diff --git a/src/3rdparty/freetype/docs/INSTALL.GNU b/src/3rdparty/freetype/docs/INSTALL.GNU index 7b588cb..72df50a 100644 --- a/src/3rdparty/freetype/docs/INSTALL.GNU +++ b/src/3rdparty/freetype/docs/INSTALL.GNU @@ -35,7 +35,7 @@ in the file INSTALL.UNIX instead. to display its version number. - VERSION 3.78.1 OR NEWER IS NEEDED! + VERSION 3.80 OR NEWER IS NEEDED! 2. Invoke `make' @@ -146,7 +146,7 @@ in the file INSTALL.UNIX instead. ---------------------------------------------------------------------- -Copyright 2003, 2004, 2005, 2006 by +Copyright 2003, 2004, 2005, 2006, 2008 by David Turner, Robert Wilhelm, and Werner Lemberg. This file is part of the FreeType project, and may only be used, diff --git a/src/3rdparty/freetype/docs/INSTALL.UNIX b/src/3rdparty/freetype/docs/INSTALL.UNIX index 3ddfb8e..1d5af99 100644 --- a/src/3rdparty/freetype/docs/INSTALL.UNIX +++ b/src/3rdparty/freetype/docs/INSTALL.UNIX @@ -19,7 +19,7 @@ or MSys on Win32: GNU Make <version number> Copyright (C) <year> Free Software Foundation Inc. - Note that version 3.78.1 or higher is *required* or the build will + Note that version 3.80 or higher is *required* or the build will fail. It is also fine to have GNU Make under another name (e.g. 'gmake') diff --git a/src/3rdparty/freetype/docs/VERSION.DLL b/src/3rdparty/freetype/docs/VERSION.DLL index 5275431..6b028b1 100644 --- a/src/3rdparty/freetype/docs/VERSION.DLL +++ b/src/3rdparty/freetype/docs/VERSION.DLL @@ -53,6 +53,9 @@ systems, but not all of them: release libtool so ------------------------------- + 2.3.9 9.20.3 6.3.20 + 2.3.8 9.19.3 6.3.19 + 2.3.7 9.18.3 6.3.18 2.3.6 9.17.3 6.3.17 2.3.5 9.16.3 6.3.16 2.3.4 9.15.3 6.3.15 @@ -119,7 +122,7 @@ other release numbers. ------------------------------------------------------------------------ -Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008 by +Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by David Turner, Robert Wilhelm, and Werner Lemberg. This file is part of the FreeType project, and may only be used, diff --git a/src/3rdparty/freetype/docs/formats.txt b/src/3rdparty/freetype/docs/formats.txt index 2f7c3d9..571f5ff 100644 --- a/src/3rdparty/freetype/docs/formats.txt +++ b/src/3rdparty/freetype/docs/formats.txt @@ -51,12 +51,14 @@ type format format type access driver documents --- --- BDF --- --- bdf 5005.BDF_Spec.pdf, X11 ---- SFNT PS TYPE_1 --- --- Type 1 GX Font Format - (for the Mac) -MAC SFNT PS TYPE_1 --- --- Type 1 GX Font Format - (for the Mac) ---- SFNT PS TYPE_1 CID --- 5180.sfnt.pdf (for the Mac) -MAC SFNT PS TYPE_1 CID --- 5180.sfnt.pdf (for the Mac) +--- SFNT PS TYPE_1 --- type1 Type 1 GX Font Format + (for the Mac) [3] +MAC SFNT PS TYPE_1 --- type1 Type 1 GX Font Format + (for the Mac) [3] +--- SFNT PS TYPE_1 CID cid 5180.sfnt.pdf (for the Mac) + [3] +MAC SFNT PS TYPE_1 CID cid 5180.sfnt.pdf (for the Mac) + [3] --- SFNT PS CFF --- cff OT spec, 5176.CFF.pdf (`OTTO' format) MAC SFNT PS CFF --- cff OT spec, 5176.CFF.pdf @@ -109,8 +111,8 @@ MAC --- PS TYPE_1 --- type1 T1_SPEC.pdf --- ? ? CEF ? cff ? ---- --- PCF --- --- pcf X11 ---- LZW PCF --- --- pcf X11 +--- --- PCF --- --- pcf X11, [4] +--- LZW PCF --- --- pcf X11, [4] --- --- PFR PFR0 --- pfr [2] @@ -139,9 +141,17 @@ MAC --- PS TYPE_1 --- type1 T1_SPEC.pdf (free registration required). +[3] Support is rudimentary currently; some tables are not loaded yet. + +[4] There is no formal PCF specification; you have to deduce the exact + format from the source code within X11. George Williams did this for + his FontForge editor: + + http://fontforge.sourceforge.net/pcf-format.html + ------------------------------------------------------------------------ -Copyright 2004, 2005 by +Copyright 2004, 2005, 2008, 2009 by David Turner, Robert Wilhelm, and Werner Lemberg. This file is part of the FreeType project, and may only be used, diff --git a/src/3rdparty/freetype/docs/reference/ft2-base_interface.html b/src/3rdparty/freetype/docs/reference/ft2-base_interface.html index 34e8a5e..27f454b 100644 --- a/src/3rdparty/freetype/docs/reference/ft2-base_interface.html +++ b/src/3rdparty/freetype/docs/reference/ft2-base_interface.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.3.6 API Reference</title> +<title>FreeType-2.3.9 API Reference</title> <style type="text/css"> body { font-family: Verdana, Geneva, Arial, Helvetica, serif; color: #000000; @@ -31,56 +31,53 @@ </style> </head> <body> -<center><h1>FreeType-2.3.6 API Reference</h1></center> + +<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td> +<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> +<center><h1>FreeType-2.3.9 API Reference</h1></center> <center><h1> Base Interface </h1></center> <h2>Synopsis</h2> <table align=center cellspacing=5 cellpadding=0 border=0> -<tr><td></td><td><a href="#FT_Library">FT_Library</a></td><td></td><td><a href="#FT_IS_CID_KEYED">FT_IS_CID_KEYED</a></td><td></td><td><a href="#FT_Load_Char">FT_Load_Char</a></td></tr> -<tr><td></td><td><a href="#FT_Face">FT_Face</a></td><td></td><td><a href="#FT_STYLE_FLAG_XXX">FT_STYLE_FLAG_XXX</a></td><td></td><td><a href="#FT_LOAD_XXX">FT_LOAD_XXX</a></td></tr> -<tr><td></td><td><a href="#FT_Size">FT_Size</a></td><td></td><td><a href="#FT_Size_Internal">FT_Size_Internal</a></td><td></td><td><a href="#FT_LOAD_TARGET_XXX">FT_LOAD_TARGET_XXX</a></td></tr> -<tr><td></td><td><a href="#FT_GlyphSlot">FT_GlyphSlot</a></td><td></td><td><a href="#FT_Size_Metrics">FT_Size_Metrics</a></td><td></td><td><a href="#FT_LOAD_TARGET_MODE">FT_LOAD_TARGET_MODE</a></td></tr> -<tr><td></td><td><a href="#FT_CharMap">FT_CharMap</a></td><td></td><td><a href="#FT_SizeRec">FT_SizeRec</a></td><td></td><td><a href="#FT_Set_Transform">FT_Set_Transform</a></td></tr> -<tr><td></td><td><a href="#FT_Encoding">FT_Encoding</a></td><td></td><td><a href="#FT_SubGlyph">FT_SubGlyph</a></td><td></td><td><a href="#FT_Render_Mode">FT_Render_Mode</a></td></tr> -<tr><td></td><td><a href="#FT_Glyph_Metrics">FT_Glyph_Metrics</a></td><td></td><td><a href="#FT_Slot_Internal">FT_Slot_Internal</a></td><td></td><td><a href="#ft_render_mode_xxx">ft_render_mode_xxx</a></td></tr> -<tr><td></td><td><a href="#FT_Bitmap_Size">FT_Bitmap_Size</a></td><td></td><td><a href="#FT_GlyphSlotRec">FT_GlyphSlotRec</a></td><td></td><td><a href="#FT_Render_Glyph">FT_Render_Glyph</a></td></tr> -<tr><td></td><td><a href="#FT_Module">FT_Module</a></td><td></td><td><a href="#FT_Init_FreeType">FT_Init_FreeType</a></td><td></td><td><a href="#FT_Kerning_Mode">FT_Kerning_Mode</a></td></tr> -<tr><td></td><td><a href="#FT_Driver">FT_Driver</a></td><td></td><td><a href="#FT_Done_FreeType">FT_Done_FreeType</a></td><td></td><td><a href="#ft_kerning_default">ft_kerning_default</a></td></tr> -<tr><td></td><td><a href="#FT_Renderer">FT_Renderer</a></td><td></td><td><a href="#FT_OPEN_XXX">FT_OPEN_XXX</a></td><td></td><td><a href="#ft_kerning_unfitted">ft_kerning_unfitted</a></td></tr> -<tr><td></td><td><a href="#FT_ENC_TAG">FT_ENC_TAG</a></td><td></td><td><a href="#FT_Parameter">FT_Parameter</a></td><td></td><td><a href="#ft_kerning_unscaled">ft_kerning_unscaled</a></td></tr> -<tr><td></td><td><a href="#ft_encoding_xxx">ft_encoding_xxx</a></td><td></td><td><a href="#FT_Open_Args">FT_Open_Args</a></td><td></td><td><a href="#FT_Get_Kerning">FT_Get_Kerning</a></td></tr> -<tr><td></td><td><a href="#FT_CharMapRec">FT_CharMapRec</a></td><td></td><td><a href="#FT_New_Face">FT_New_Face</a></td><td></td><td><a href="#FT_Get_Track_Kerning">FT_Get_Track_Kerning</a></td></tr> -<tr><td></td><td><a href="#FT_Face_Internal">FT_Face_Internal</a></td><td></td><td><a href="#FT_New_Memory_Face">FT_New_Memory_Face</a></td><td></td><td><a href="#FT_Get_Glyph_Name">FT_Get_Glyph_Name</a></td></tr> -<tr><td></td><td><a href="#FT_FaceRec">FT_FaceRec</a></td><td></td><td><a href="#FT_Open_Face">FT_Open_Face</a></td><td></td><td><a href="#FT_Get_Postscript_Name">FT_Get_Postscript_Name</a></td></tr> -<tr><td></td><td><a href="#FT_FACE_FLAG_XXX">FT_FACE_FLAG_XXX</a></td><td></td><td><a href="#FT_Attach_File">FT_Attach_File</a></td><td></td><td><a href="#FT_Select_Charmap">FT_Select_Charmap</a></td></tr> -<tr><td></td><td><a href="#FT_HAS_HORIZONTAL">FT_HAS_HORIZONTAL</a></td><td></td><td><a href="#FT_Attach_Stream">FT_Attach_Stream</a></td><td></td><td><a href="#FT_Set_Charmap">FT_Set_Charmap</a></td></tr> -<tr><td></td><td><a href="#FT_HAS_VERTICAL">FT_HAS_VERTICAL</a></td><td></td><td><a href="#FT_Done_Face">FT_Done_Face</a></td><td></td><td><a href="#FT_Get_Charmap_Index">FT_Get_Charmap_Index</a></td></tr> -<tr><td></td><td><a href="#FT_HAS_KERNING">FT_HAS_KERNING</a></td><td></td><td><a href="#FT_Select_Size">FT_Select_Size</a></td><td></td><td><a href="#FT_Get_Char_Index">FT_Get_Char_Index</a></td></tr> -<tr><td></td><td><a href="#FT_IS_SCALABLE">FT_IS_SCALABLE</a></td><td></td><td><a href="#FT_Size_Request_Type">FT_Size_Request_Type</a></td><td></td><td><a href="#FT_Get_First_Char">FT_Get_First_Char</a></td></tr> -<tr><td></td><td><a href="#FT_IS_SFNT">FT_IS_SFNT</a></td><td></td><td><a href="#FT_Size_RequestRec">FT_Size_RequestRec</a></td><td></td><td><a href="#FT_Get_Next_Char">FT_Get_Next_Char</a></td></tr> -<tr><td></td><td><a href="#FT_IS_FIXED_WIDTH">FT_IS_FIXED_WIDTH</a></td><td></td><td><a href="#FT_Size_Request">FT_Size_Request</a></td><td></td><td><a href="#FT_Get_Name_Index">FT_Get_Name_Index</a></td></tr> -<tr><td></td><td><a href="#FT_HAS_FIXED_SIZES">FT_HAS_FIXED_SIZES</a></td><td></td><td><a href="#FT_Request_Size">FT_Request_Size</a></td><td></td><td><a href="#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_XXX</a></td></tr> -<tr><td></td><td><a href="#FT_HAS_FAST_GLYPHS">FT_HAS_FAST_GLYPHS</a></td><td></td><td><a href="#FT_Set_Char_Size">FT_Set_Char_Size</a></td><td></td><td><a href="#FT_Get_SubGlyph_Info">FT_Get_SubGlyph_Info</a></td></tr> -<tr><td></td><td><a href="#FT_HAS_GLYPH_NAMES">FT_HAS_GLYPH_NAMES</a></td><td></td><td><a href="#FT_Set_Pixel_Sizes">FT_Set_Pixel_Sizes</a></td><td></td><td></td></tr> +<tr><td></td><td><a href="#FT_Library">FT_Library</a></td><td></td><td><a href="#FT_IS_TRICKY">FT_IS_TRICKY</a></td><td></td><td><a href="#FT_LOAD_XXX">FT_LOAD_XXX</a></td></tr> +<tr><td></td><td><a href="#FT_Face">FT_Face</a></td><td></td><td><a href="#FT_STYLE_FLAG_XXX">FT_STYLE_FLAG_XXX</a></td><td></td><td><a href="#FT_LOAD_TARGET_XXX">FT_LOAD_TARGET_XXX</a></td></tr> +<tr><td></td><td><a href="#FT_Size">FT_Size</a></td><td></td><td><a href="#FT_Size_Internal">FT_Size_Internal</a></td><td></td><td><a href="#FT_LOAD_TARGET_MODE">FT_LOAD_TARGET_MODE</a></td></tr> +<tr><td></td><td><a href="#FT_GlyphSlot">FT_GlyphSlot</a></td><td></td><td><a href="#FT_Size_Metrics">FT_Size_Metrics</a></td><td></td><td><a href="#FT_Set_Transform">FT_Set_Transform</a></td></tr> +<tr><td></td><td><a href="#FT_CharMap">FT_CharMap</a></td><td></td><td><a href="#FT_SizeRec">FT_SizeRec</a></td><td></td><td><a href="#FT_Render_Mode">FT_Render_Mode</a></td></tr> +<tr><td></td><td><a href="#FT_Encoding">FT_Encoding</a></td><td></td><td><a href="#FT_SubGlyph">FT_SubGlyph</a></td><td></td><td><a href="#ft_render_mode_xxx">ft_render_mode_xxx</a></td></tr> +<tr><td></td><td><a href="#FT_Glyph_Metrics">FT_Glyph_Metrics</a></td><td></td><td><a href="#FT_Slot_Internal">FT_Slot_Internal</a></td><td></td><td><a href="#FT_Render_Glyph">FT_Render_Glyph</a></td></tr> +<tr><td></td><td><a href="#FT_Bitmap_Size">FT_Bitmap_Size</a></td><td></td><td><a href="#FT_GlyphSlotRec">FT_GlyphSlotRec</a></td><td></td><td><a href="#FT_Kerning_Mode">FT_Kerning_Mode</a></td></tr> +<tr><td></td><td><a href="#FT_Module">FT_Module</a></td><td></td><td><a href="#FT_Init_FreeType">FT_Init_FreeType</a></td><td></td><td><a href="#ft_kerning_default">ft_kerning_default</a></td></tr> +<tr><td></td><td><a href="#FT_Driver">FT_Driver</a></td><td></td><td><a href="#FT_Done_FreeType">FT_Done_FreeType</a></td><td></td><td><a href="#ft_kerning_unfitted">ft_kerning_unfitted</a></td></tr> +<tr><td></td><td><a href="#FT_Renderer">FT_Renderer</a></td><td></td><td><a href="#FT_OPEN_XXX">FT_OPEN_XXX</a></td><td></td><td><a href="#ft_kerning_unscaled">ft_kerning_unscaled</a></td></tr> +<tr><td></td><td><a href="#FT_ENC_TAG">FT_ENC_TAG</a></td><td></td><td><a href="#FT_Parameter">FT_Parameter</a></td><td></td><td><a href="#FT_Get_Kerning">FT_Get_Kerning</a></td></tr> +<tr><td></td><td><a href="#ft_encoding_xxx">ft_encoding_xxx</a></td><td></td><td><a href="#FT_Open_Args">FT_Open_Args</a></td><td></td><td><a href="#FT_Get_Track_Kerning">FT_Get_Track_Kerning</a></td></tr> +<tr><td></td><td><a href="#FT_CharMapRec">FT_CharMapRec</a></td><td></td><td><a href="#FT_New_Face">FT_New_Face</a></td><td></td><td><a href="#FT_Get_Glyph_Name">FT_Get_Glyph_Name</a></td></tr> +<tr><td></td><td><a href="#FT_Face_Internal">FT_Face_Internal</a></td><td></td><td><a href="#FT_New_Memory_Face">FT_New_Memory_Face</a></td><td></td><td><a href="#FT_Get_Postscript_Name">FT_Get_Postscript_Name</a></td></tr> +<tr><td></td><td><a href="#FT_FaceRec">FT_FaceRec</a></td><td></td><td><a href="#FT_Open_Face">FT_Open_Face</a></td><td></td><td><a href="#FT_Select_Charmap">FT_Select_Charmap</a></td></tr> +<tr><td></td><td><a href="#FT_FACE_FLAG_XXX">FT_FACE_FLAG_XXX</a></td><td></td><td><a href="#FT_Attach_File">FT_Attach_File</a></td><td></td><td><a href="#FT_Set_Charmap">FT_Set_Charmap</a></td></tr> +<tr><td></td><td><a href="#FT_HAS_HORIZONTAL">FT_HAS_HORIZONTAL</a></td><td></td><td><a href="#FT_Attach_Stream">FT_Attach_Stream</a></td><td></td><td><a href="#FT_Get_Charmap_Index">FT_Get_Charmap_Index</a></td></tr> +<tr><td></td><td><a href="#FT_HAS_VERTICAL">FT_HAS_VERTICAL</a></td><td></td><td><a href="#FT_Done_Face">FT_Done_Face</a></td><td></td><td><a href="#FT_Get_Char_Index">FT_Get_Char_Index</a></td></tr> +<tr><td></td><td><a href="#FT_HAS_KERNING">FT_HAS_KERNING</a></td><td></td><td><a href="#FT_Select_Size">FT_Select_Size</a></td><td></td><td><a href="#FT_Get_First_Char">FT_Get_First_Char</a></td></tr> +<tr><td></td><td><a href="#FT_IS_SCALABLE">FT_IS_SCALABLE</a></td><td></td><td><a href="#FT_Size_Request_Type">FT_Size_Request_Type</a></td><td></td><td><a href="#FT_Get_Next_Char">FT_Get_Next_Char</a></td></tr> +<tr><td></td><td><a href="#FT_IS_SFNT">FT_IS_SFNT</a></td><td></td><td><a href="#FT_Size_RequestRec">FT_Size_RequestRec</a></td><td></td><td><a href="#FT_Get_Name_Index">FT_Get_Name_Index</a></td></tr> +<tr><td></td><td><a href="#FT_IS_FIXED_WIDTH">FT_IS_FIXED_WIDTH</a></td><td></td><td><a href="#FT_Size_Request">FT_Size_Request</a></td><td></td><td><a href="#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_XXX</a></td></tr> +<tr><td></td><td><a href="#FT_HAS_FIXED_SIZES">FT_HAS_FIXED_SIZES</a></td><td></td><td><a href="#FT_Request_Size">FT_Request_Size</a></td><td></td><td><a href="#FT_Get_SubGlyph_Info">FT_Get_SubGlyph_Info</a></td></tr> +<tr><td></td><td><a href="#FT_HAS_FAST_GLYPHS">FT_HAS_FAST_GLYPHS</a></td><td></td><td><a href="#FT_Set_Char_Size">FT_Set_Char_Size</a></td><td></td><td><a href="#FT_FSTYPE_XXX">FT_FSTYPE_XXX</a></td></tr> +<tr><td></td><td><a href="#FT_HAS_GLYPH_NAMES">FT_HAS_GLYPH_NAMES</a></td><td></td><td><a href="#FT_Set_Pixel_Sizes">FT_Set_Pixel_Sizes</a></td><td></td><td><a href="#FT_Get_FSType_Flags">FT_Get_FSType_Flags</a></td></tr> <tr><td></td><td><a href="#FT_HAS_MULTIPLE_MASTERS">FT_HAS_MULTIPLE_MASTERS</a></td><td></td><td><a href="#FT_Load_Glyph">FT_Load_Glyph</a></td><td></td><td></td></tr> +<tr><td></td><td><a href="#FT_IS_CID_KEYED">FT_IS_CID_KEYED</a></td><td></td><td><a href="#FT_Load_Char">FT_Load_Char</a></td><td></td><td></td></tr> </table><br><br> <table align=center width="87%"><tr><td> -<p>This section describes the public high-level API of FreeType 2.</p> +<p>This section describes the public high-level API of FreeType 2.</p> </td></tr></table><br> <table align=center width="75%"><tr><td> <h4><a name="FT_Library">FT_Library</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_FREETYPE_H (freetype/freetype.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_LibraryRec_ *<b>FT_Library</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>A handle to a FreeType library instance. Each ‘library’ is completely independent from the others; it is the ‘root’ of a set of objects like fonts, faces, sizes, etc.</p> <p>It also embeds a memory manager (see <a href="ft2-system_interface.html#FT_Memory">FT_Memory</a>), as well as a scan-line converter object (see <a href="ft2-raster.html#FT_Raster">FT_Raster</a>).</p> <p>For multi-threading applications each thread should have its own FT_Library object.</p> @@ -97,14 +94,6 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <table align=center width="75%"><tr><td> <h4><a name="FT_Face">FT_Face</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_FREETYPE_H (freetype/freetype.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_FaceRec_* <b>FT_Face</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>A handle to a given typographic face object. A face object models a given typeface, in a given style.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> @@ -113,7 +102,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <p>Use <a href="ft2-base_interface.html#FT_Done_Face">FT_Done_Face</a> to destroy it (along with its slot and sizes).</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>also</b></em></td></tr><tr><td> -<p>The <a href="ft2-base_interface.html#FT_FaceRec">FT_FaceRec</a> details the publicly accessible fields of a given face object.</p> +<p>See <a href="ft2-base_interface.html#FT_FaceRec">FT_FaceRec</a> for the publicly accessible fields of a given face object.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -124,14 +113,6 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <table align=center width="75%"><tr><td> <h4><a name="FT_Size">FT_Size</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_FREETYPE_H (freetype/freetype.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_SizeRec_* <b>FT_Size</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>A handle to an object used to model a face scaled to a given character size.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> @@ -140,7 +121,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <p>You can use <a href="ft2-sizes_management.html#FT_New_Size">FT_New_Size</a> to create additional size objects for a given <a href="ft2-base_interface.html#FT_Face">FT_Face</a>, but they won't be used by other functions until you activate it through <a href="ft2-sizes_management.html#FT_Activate_Size">FT_Activate_Size</a>. Only one size can be activated at any given time per face.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>also</b></em></td></tr><tr><td> -<p>The <a href="ft2-base_interface.html#FT_SizeRec">FT_SizeRec</a> structure details the publicly accessible fields of a given size object.</p> +<p>See <a href="ft2-base_interface.html#FT_SizeRec">FT_SizeRec</a> for the publicly accessible fields of a given size object.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -151,19 +132,11 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <table align=center width="75%"><tr><td> <h4><a name="FT_GlyphSlot">FT_GlyphSlot</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_FREETYPE_H (freetype/freetype.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_GlyphSlotRec_* <b>FT_GlyphSlot</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> -<p>A handle to a given ‘glyph slot’. A slot is a container where it is possible to load any one of the glyphs contained in its parent face.</p> +<p>A handle to a given ‘glyph slot’. A slot is a container where it is possible to load any of the glyphs contained in its parent face.</p> <p>In other words, each time you call <a href="ft2-base_interface.html#FT_Load_Glyph">FT_Load_Glyph</a> or <a href="ft2-base_interface.html#FT_Load_Char">FT_Load_Char</a>, the slot's content is erased by the new glyph data, i.e., the glyph's metrics, its image (bitmap or outline), and other control information.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>also</b></em></td></tr><tr><td> -<p><a href="ft2-base_interface.html#FT_GlyphSlotRec">FT_GlyphSlotRec</a> details the publicly accessible glyph fields.</p> +<p>See <a href="ft2-base_interface.html#FT_GlyphSlotRec">FT_GlyphSlotRec</a> for the publicly accessible glyph fields.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -174,14 +147,6 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <table align=center width="75%"><tr><td> <h4><a name="FT_CharMap">FT_CharMap</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_FREETYPE_H (freetype/freetype.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_CharMapRec_* <b>FT_CharMap</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>A handle to a given character map. A charmap is used to translate character codes in a given encoding into glyph indexes for its parent's face. Some font formats may provide several charmaps per font.</p> <p>Each face object owns zero or more charmaps, but only one of them can be ‘active’ and used by <a href="ft2-base_interface.html#FT_Get_Char_Index">FT_Get_Char_Index</a> or <a href="ft2-base_interface.html#FT_Load_Char">FT_Load_Char</a>.</p> <p>The list of available charmaps in a face is available through the ‘face->num_charmaps’ and ‘face->charmaps’ fields of <a href="ft2-base_interface.html#FT_FaceRec">FT_FaceRec</a>.</p> @@ -191,7 +156,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <p>When a new face is created (either through <a href="ft2-base_interface.html#FT_New_Face">FT_New_Face</a> or <a href="ft2-base_interface.html#FT_Open_Face">FT_Open_Face</a>), the library looks for a Unicode charmap within the list and automatically activates it.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>also</b></em></td></tr><tr><td> -<p>The <a href="ft2-base_interface.html#FT_CharMapRec">FT_CharMapRec</a> details the publicly accessible fields of a given character map.</p> +<p>See <a href="ft2-base_interface.html#FT_CharMapRec">FT_CharMapRec</a> for the publicly accessible fields of a given character map.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -250,7 +215,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <p></p> <table cellpadding=3 border=0> <tr valign=top><td><b>FT_ENCODING_NONE</b></td><td> -<p>The encoding value 0 is reserved.</p> +<p>The encoding value 0 is reserved.</p> </td></tr> <tr valign=top><td><b>FT_ENCODING_UNICODE</b></td><td> <p>Corresponds to the Unicode character set. This value covers all versions of the Unicode repertoire, including ASCII and Latin-1. Most fonts include a Unicode charmap, but not all of them.</p> @@ -271,23 +236,23 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <p>Corresponds to the Korean encoding system known as Wansung. For more information see ‘http://www.microsoft.com/typography/unicode/949.txt’.</p> </td></tr> <tr valign=top><td><b>FT_ENCODING_JOHAB</b></td><td> -<p>The Korean standard character set (KS C-5601-1992), which corresponds to MS Windows code page 1361. This character set includes all possible Hangeul character combinations.</p> +<p>The Korean standard character set (KS C 5601-1992), which corresponds to MS Windows code page 1361. This character set includes all possible Hangeul character combinations.</p> </td></tr> <tr valign=top><td colspan=0><b>FT_ENCODING_ADOBE_LATIN_1</b></td></tr> <tr valign=top><td></td><td> -<p>Corresponds to a Latin-1 encoding as defined in a Type 1 Postscript font. It is limited to 256 character codes.</p> +<p>Corresponds to a Latin-1 encoding as defined in a Type 1 PostScript font. It is limited to 256 character codes.</p> </td></tr> <tr valign=top><td colspan=0><b>FT_ENCODING_ADOBE_STANDARD</b></td></tr> <tr valign=top><td></td><td> -<p>Corresponds to the Adobe Standard encoding, as found in Type 1, CFF, and OpenType/CFF fonts. It is limited to 256 character codes.</p> +<p>Corresponds to the Adobe Standard encoding, as found in Type 1, CFF, and OpenType/CFF fonts. It is limited to 256 character codes.</p> </td></tr> <tr valign=top><td colspan=0><b>FT_ENCODING_ADOBE_EXPERT</b></td></tr> <tr valign=top><td></td><td> -<p>Corresponds to the Adobe Expert encoding, as found in Type 1, CFF, and OpenType/CFF fonts. It is limited to 256 character codes.</p> +<p>Corresponds to the Adobe Expert encoding, as found in Type 1, CFF, and OpenType/CFF fonts. It is limited to 256 character codes.</p> </td></tr> <tr valign=top><td colspan=0><b>FT_ENCODING_ADOBE_CUSTOM</b></td></tr> <tr valign=top><td></td><td> -<p>Corresponds to a custom encoding, as found in Type 1, CFF, and OpenType/CFF fonts. It is limited to 256 character codes.</p> +<p>Corresponds to a custom encoding, as found in Type 1, CFF, and OpenType/CFF fonts. It is limited to 256 character codes.</p> </td></tr> <tr valign=top><td colspan=0><b>FT_ENCODING_APPLE_ROMAN</b></td></tr> <tr valign=top><td></td><td> @@ -315,13 +280,13 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> -<p>By default, FreeType automatically synthetizes a Unicode charmap for Postscript fonts, using their glyph names dictionaries. However, it also reports the encodings defined explicitly in the font file, for the cases when they are needed, with the Adobe values as well.</p> +<p>By default, FreeType automatically synthesizes a Unicode charmap for PostScript fonts, using their glyph names dictionaries. However, it also reports the encodings defined explicitly in the font file, for the cases when they are needed, with the Adobe values as well.</p> <p>FT_ENCODING_NONE is set by the BDF and PCF drivers if the charmap is neither Unicode nor ISO-8859-1 (otherwise it is set to FT_ENCODING_UNICODE). Use <a href="ft2-bdf_fonts.html#FT_Get_BDF_Charset_ID">FT_Get_BDF_Charset_ID</a> to find out which encoding is really present. If, for example, the ‘cs_registry’ field is ‘KOI8’ and the ‘cs_encoding’ field is ‘R’, the font is encoded in KOI8-R.</p> <p>FT_ENCODING_NONE is always set (with a single exception) by the winfonts driver. Use <a href="ft2-winfnt_fonts.html#FT_Get_WinFNT_Header">FT_Get_WinFNT_Header</a> and examine the ‘charset’ field of the <a href="ft2-winfnt_fonts.html#FT_WinFNT_HeaderRec">FT_WinFNT_HeaderRec</a> structure to find out which encoding is really present. For example, <a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP1251</a> (204) means Windows code page 1251 (for Russian).</p> <p>FT_ENCODING_NONE is set if ‘platform_id’ is <a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_MACINTOSH</a> and ‘encoding_id’ is not <a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_ROMAN</a> (otherwise it is set to FT_ENCODING_APPLE_ROMAN).</p> -<p>If ‘platform_id’ is <a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_MACINTOSH</a>, use the function c <a href="ft2-truetype_tables.html#FT_Get_CMap_Language_ID">FT_Get_CMap_Language_ID</a> to query the Mac language ID which may be needed to be able to distinguish Apple encoding variants. See</p> +<p>If ‘platform_id’ is <a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_MACINTOSH</a>, use the function <a href="ft2-truetype_tables.html#FT_Get_CMap_Language_ID">FT_Get_CMap_Language_ID</a> to query the Mac language ID which may be needed to be able to distinguish Apple encoding variants. See</p> <p>http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/README.TXT</p> -<p>to get an idea how to do that. Basically, if the language ID is 0, don't use it, otherwise subtract 1 from the language ID. Then examine ‘encoding_id’. If, for example, ‘encoding_id’ is <a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_ROMAN</a> and the language ID (minus 1) is ‘TT_MAC_LANGID_GREEK’, it is the Greek encoding, not Roman. <a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_ARABIC</a> with ‘TT_MAC_LANGID_FARSI’ means the Farsi variant the Arabic encoding.</p> +<p>to get an idea how to do that. Basically, if the language ID is 0, don't use it, otherwise subtract 1 from the language ID. Then examine ‘encoding_id’. If, for example, ‘encoding_id’ is <a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_ROMAN</a> and the language ID (minus 1) is ‘TT_MAC_LANGID_GREEK’, it is the Greek encoding, not Roman. <a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_ARABIC</a> with ‘TT_MAC_LANGID_FARSI’ means the Farsi variant the Arabic encoding.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -446,14 +411,6 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <table align=center width="75%"><tr><td> <h4><a name="FT_Module">FT_Module</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_FREETYPE_H (freetype/freetype.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_ModuleRec_* <b>FT_Module</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>A handle to a given FreeType module object. Each module can be a font driver, a renderer, or anything else that provides services to the formers.</p> </td></tr></table><br> </td></tr></table> @@ -465,14 +422,6 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <table align=center width="75%"><tr><td> <h4><a name="FT_Driver">FT_Driver</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_FREETYPE_H (freetype/freetype.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_DriverRec_* <b>FT_Driver</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>A handle to a given FreeType font driver object. Each font driver is a special module capable of creating faces from font files.</p> </td></tr></table><br> </td></tr></table> @@ -484,14 +433,6 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <table align=center width="75%"><tr><td> <h4><a name="FT_Renderer">FT_Renderer</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_FREETYPE_H (freetype/freetype.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_RendererRec_* <b>FT_Renderer</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>A handle to a given FreeType renderer. A renderer is a special module in charge of converting a glyph image to a bitmap, when necessary. Each renderer supports a given glyph image format, and one or more target surface depths.</p> </td></tr></table><br> </td></tr></table> @@ -521,7 +462,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <p>This macro converts four-letter tags into an unsigned long. It is used to define ‘encoding’ identifiers (see <a href="ft2-base_interface.html#FT_Encoding">FT_Encoding</a>).</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> -<p>Since many 16bit compilers don't like 32bit enumerations, you should redefine this macro in case of problems to something like this:</p> +<p>Since many 16-bit compilers don't like 32-bit enumerations, you should redefine this macro in case of problems to something like this:</p> <pre class="colored"> #define FT_ENC_TAG( value, a, b, c, d ) value </pre> @@ -612,16 +553,8 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <table align=center width="75%"><tr><td> <h4><a name="FT_Face_Internal">FT_Face_Internal</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_FREETYPE_H (freetype/freetype.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_Face_InternalRec_* <b>FT_Face_Internal</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>An opaque handle to an ‘FT_Face_InternalRec’ structure, used to model private data of a given <a href="ft2-base_interface.html#FT_Face">FT_Face</a> object.</p> -<p>This structure might change between releases of FreeType 2 and is not generally available to client applications.</p> +<p>This structure might change between releases of FreeType 2 and is not generally available to client applications.</p> </td></tr></table><br> </td></tr></table> <hr width="75%"> @@ -705,7 +638,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <p>The number of faces in the font file. Some font formats can have multiple faces in a font file.</p> </td></tr> <tr valign=top><td><b>face_index</b></td><td> -<p>The index of the face in the font file. It is set to 0 if there is only one face in the font file.</p> +<p>The index of the face in the font file. It is set to 0 if there is only one face in the font file.</p> </td></tr> <tr valign=top><td><b>face_flags</b></td><td> <p>A set of bit flags that give important information about the face; see <a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_XXX</a> for the details.</p> @@ -715,6 +648,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). </td></tr> <tr valign=top><td><b>num_glyphs</b></td><td> <p>The number of glyphs in the face. If the face is scalable and has sbits (see ‘num_fixed_sizes’), it is set to the number of outline glyphs.</p> +<p>For CID-keyed fonts, this value gives the highest CID used in the font.</p> </td></tr> <tr valign=top><td><b>family_name</b></td><td> <p>The face's family name. This is an ASCII string, usually in English, which describes the typeface's family (like ‘Times New Roman’, ‘Bodoni’, ‘Garamond’, etc). This is a least common denominator used to list fonts. Some formats (TrueType & OpenType) provide localized and Unicode versions of this string. Applications should use the format specific interface to access them. Can be NULL (e.g., in fonts embedded in a PDF file).</p> @@ -739,9 +673,10 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). </td></tr> <tr valign=top><td><b>bbox</b></td><td> <p>The font bounding box. Coordinates are expressed in font units (see ‘units_per_EM’). The box is large enough to contain any glyph from the font. Thus, ‘bbox.yMax’ can be seen as the ‘maximal ascender’, and ‘bbox.yMin’ as the ‘minimal descender’. Only relevant for scalable formats.</p> +<p>Note that the bounding box might be off by (at least) one pixel for hinted fonts. See <a href="ft2-base_interface.html#FT_Size_Metrics">FT_Size_Metrics</a> for further discussion.</p> </td></tr> <tr valign=top><td><b>units_per_EM</b></td><td> -<p>The number of font units per EM square for this face. This is typically 2048 for TrueType fonts, and 1000 for Type 1 fonts. Only relevant for scalable formats.</p> +<p>The number of font units per EM square for this face. This is typically 2048 for TrueType fonts, and 1000 for Type 1 fonts. Only relevant for scalable formats.</p> </td></tr> <tr valign=top><td><b>ascender</b></td><td> <p>The typographic ascender of the face, expressed in font units. For font formats not having this information, it is set to ‘bbox.yMax’. Only relevant for scalable formats.</p> @@ -759,7 +694,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <p>The maximal advance height, in font units, for all glyphs in this face. This is only relevant for vertical layouts, and is set to ‘height’ for fonts that do not provide vertical metrics. Only relevant for scalable formats.</p> </td></tr> <tr valign=top><td><b>underline_position</b></td><td> -<p>The position, in font units, of the underline line for this face. It's the center of the underlining stem. Only relevant for scalable formats.</p> +<p>The position, in font units, of the underline line for this face. It is the center of the underlining stem. Only relevant for scalable formats.</p> </td></tr> <tr valign=top><td><b>underline_thickness</b></td><td> <p>The thickness, in font units, of the underline for this face. Only relevant for scalable formats.</p> @@ -804,6 +739,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). #define <a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_EXTERNAL_STREAM</a> ( 1L << 10 ) #define <a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_HINTER</a> ( 1L << 11 ) #define <a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_CID_KEYED</a> ( 1L << 12 ) +#define <a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_TRICKY</a> ( 1L << 13 ) </pre></table><br> <table align=center width="87%"><tr><td> @@ -857,6 +793,12 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). </td></tr> <tr valign=top><td><b>FT_FACE_FLAG_CID_KEYED</b></td><td> <p>Set if the font is CID-keyed. In that case, the font is not accessed by glyph indices but by CID values. For subsetted CID-keyed fonts this has the consequence that not all index values are a valid argument to FT_Load_Glyph. Only the CID values for which corresponding glyphs in the subsetted font exist make FT_Load_Glyph return successfully; in all other cases you get an ‘FT_Err_Invalid_Argument’ error.</p> +<p>Note that CID-keyed fonts which are in an SFNT wrapper don't have this flag set since the glyphs are accessed in the normal way (using contiguous indices); the ‘CID-ness’ isn't visible to the application.</p> +</td></tr> +<tr valign=top><td><b>FT_FACE_FLAG_TRICKY</b></td><td> +<p>Set if the font is ‘tricky’, this is, it always needs the font format's native hinting engine to get a reasonable result. A typical example is the Chinese font ‘mingli.ttf’ which uses TrueType bytecode instructions to move and scale all of its subglyphs.</p> +<p>It is not possible to autohint such fonts using <a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_FORCE_AUTOHINT</a>; it will also ignore <a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_NO_HINTING</a>. You have to set both FT_LOAD_NO_HINTING and <a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_NO_AUTOHINT</a> to really disable hinting; however, you probably never want this except for demonstration purposes.</p> +<p>Currently, there are six TrueType fonts in the list of tricky fonts; they are hard-coded in file ‘ttobjs.c’.</p> </td></tr> </table> </td></tr></table> @@ -941,7 +883,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>A macro that returns true whenever a face object contains a scalable font face (true for TrueType, Type 1, Type 42, CID, OpenType/CFF, and PFR font formats.</p> +<p>A macro that returns true whenever a face object contains a scalable font face (true for TrueType, Type 1, Type 42, CID, OpenType/CFF, and PFR font formats.</p> </td></tr></table><br> </td></tr></table> <hr width="75%"> @@ -1013,14 +955,6 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <table align=center width="75%"><tr><td> <h4><a name="FT_HAS_FAST_GLYPHS">FT_HAS_FAST_GLYPHS</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_FREETYPE_H (freetype/freetype.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_HAS_FAST_GLYPHS</b>( face ) 0 - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>Deprecated.</p> </td></tr></table><br> </td></tr></table> @@ -1091,6 +1025,26 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <td><font size=-2>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> <table align=center width="75%"><tr><td> +<h4><a name="FT_IS_TRICKY">FT_IS_TRICKY</a></h4> +<table align=center width="87%"><tr><td> +Defined in FT_FREETYPE_H (freetype/freetype.h). +</td></tr></table><br> +<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> + +#define <b>FT_IS_TRICKY</b>( face ) \ + ( face->face_flags & <a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_TRICKY</a> ) + +</pre></table><br> +<table align=center width="87%"><tr><td> +<p>A macro that returns true whenever a face represents a ‘tricky’ font. See the discussion of <a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_TRICKY</a> for more details.</p> +</td></tr></table><br> +</td></tr></table> +<hr width="75%"> +<table align=center width="75%"><tr><td><font size=-2>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td> +<td><font size=-2>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> + +<table align=center width="75%"><tr><td> <h4><a name="FT_STYLE_FLAG_XXX">FT_STYLE_FLAG_XXX</a></h4> <table align=center width="87%"><tr><td> Defined in FT_FREETYPE_H (freetype/freetype.h). @@ -1127,14 +1081,6 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <table align=center width="75%"><tr><td> <h4><a name="FT_Size_Internal">FT_Size_Internal</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_FREETYPE_H (freetype/freetype.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_Size_InternalRec_* <b>FT_Size_Internal</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>An opaque handle to an ‘FT_Size_InternalRec’ structure, used to model private data of a given <a href="ft2-base_interface.html#FT_Size">FT_Size</a> object.</p> </td></tr></table><br> </td></tr></table> @@ -1253,14 +1199,6 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <table align=center width="75%"><tr><td> <h4><a name="FT_SubGlyph">FT_SubGlyph</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_FREETYPE_H (freetype/freetype.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_SubGlyphRec_* <b>FT_SubGlyph</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>The subglyph structure is an internal object used to describe subglyphs (for example, in the case of composites).</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> @@ -1276,14 +1214,6 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <table align=center width="75%"><tr><td> <h4><a name="FT_Slot_Internal">FT_Slot_Internal</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_FREETYPE_H (freetype/freetype.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_Slot_InternalRec_* <b>FT_Slot_Internal</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>An opaque handle to an ‘FT_Slot_InternalRec’ structure, used to model private data of a given <a href="ft2-base_interface.html#FT_GlyphSlot">FT_GlyphSlot</a> object.</p> </td></tr></table><br> </td></tr></table> @@ -1365,7 +1295,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <p>The advance height of the unhinted glyph. Its value is expressed in 16.16 fractional pixels, unless <a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_LINEAR_DESIGN</a> is set when loading the glyph. This field can be important to perform correct WYSIWYG layout. Only relevant for outline glyphs.</p> </td></tr> <tr valign=top><td><b>advance</b></td><td> -<p>This is the transformed advance width for the glyph.</p> +<p>This is the transformed advance width for the glyph (in 26.6 fractional pixel format).</p> </td></tr> <tr valign=top><td><b>format</b></td><td> <p>This field indicates the format of the image contained in the glyph slot. Typically <a href="ft2-basic_types.html#FT_Glyph_Format">FT_GLYPH_FORMAT_BITMAP</a>, <a href="ft2-basic_types.html#FT_Glyph_Format">FT_GLYPH_FORMAT_OUTLINE</a>, or <a href="ft2-basic_types.html#FT_Glyph_Format">FT_GLYPH_FORMAT_COMPOSITE</a>, but others are possible.</p> @@ -1377,7 +1307,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <p>This is the bitmap's left bearing expressed in integer pixels. Of course, this is only valid if the format is <a href="ft2-basic_types.html#FT_Glyph_Format">FT_GLYPH_FORMAT_BITMAP</a>.</p> </td></tr> <tr valign=top><td><b>bitmap_top</b></td><td> -<p>This is the bitmap's top bearing expressed in integer pixels. Remember that this is the distance from the baseline to the top-most glyph scanline, upwards y-coordinates being <b>positive</b>.</p> +<p>This is the bitmap's top bearing expressed in integer pixels. Remember that this is the distance from the baseline to the top-most glyph scanline, upwards y coordinates being <b>positive</b>.</p> </td></tr> <tr valign=top><td><b>outline</b></td><td> <p>The outline descriptor for the current glyph image if its format is <a href="ft2-basic_types.html#FT_Glyph_Format">FT_GLYPH_FORMAT_OUTLINE</a>. Once a glyph is loaded, ‘outline’ can be transformed, distorted, embolded, etc. However, it must not be freed.</p> @@ -1389,7 +1319,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <p>An array of subglyph descriptors for composite glyphs. There are ‘num_subglyphs’ elements in there. Currently internal to FreeType.</p> </td></tr> <tr valign=top><td><b>control_data</b></td><td> -<p>Certain font drivers can also return the control data for a given glyph image (e.g. TrueType bytecode, Type 1 charstrings, etc.). This field is a pointer to such data.</p> +<p>Certain font drivers can also return the control data for a given glyph image (e.g. TrueType bytecode, Type 1 charstrings, etc.). This field is a pointer to such data.</p> </td></tr> <tr valign=top><td><b>control_len</b></td><td> <p>This is the length in bytes of the control data.</p> @@ -1406,9 +1336,9 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> -<p>If <a href="ft2-base_interface.html#FT_Load_Glyph">FT_Load_Glyph</a> is called with default flags (see <a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_DEFAULT</a>) the glyph image is loaded in the glyph slot in its native format (e.g., an outline glyph for TrueType and Type 1 formats).</p> -<p>This image can later be converted into a bitmap by calling <a href="ft2-base_interface.html#FT_Render_Glyph">FT_Render_Glyph</a>. This function finds the current renderer for the native image's format then invokes it.</p> -<p>The renderer is in charge of transforming the native image through the slot's face transformation fields, then convert it into a bitmap that is returned in ‘slot->bitmap’.</p> +<p>If <a href="ft2-base_interface.html#FT_Load_Glyph">FT_Load_Glyph</a> is called with default flags (see <a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_DEFAULT</a>) the glyph image is loaded in the glyph slot in its native format (e.g., an outline glyph for TrueType and Type 1 formats).</p> +<p>This image can later be converted into a bitmap by calling <a href="ft2-base_interface.html#FT_Render_Glyph">FT_Render_Glyph</a>. This function finds the current renderer for the native image's format, then invokes it.</p> +<p>The renderer is in charge of transforming the native image through the slot's face transformation fields, then converting it into a bitmap that is returned in ‘slot->bitmap’.</p> <p>Note that ‘slot->bitmap_left’ and ‘slot->bitmap_top’ are also used to specify the position of the bitmap relative to the current pen position (e.g., coordinates (0,0) on the baseline). Of course, ‘slot->format’ is also changed to <a href="ft2-basic_types.html#FT_Glyph_Format">FT_GLYPH_FORMAT_BITMAP</a>.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> @@ -1466,7 +1396,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -1497,7 +1427,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -1538,7 +1468,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <p>Copy the stream from the ‘stream’ field.</p> </td></tr> <tr valign=top><td><b>FT_OPEN_PATHNAME</b></td><td> -<p>Create a new input stream from a C path name.</p> +<p>Create a new input stream from a C path name.</p> </td></tr> <tr valign=top><td><b>FT_OPEN_DRIVER</b></td><td> <p>Use the ‘driver’ field.</p> @@ -1653,7 +1583,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <p>A handle to a source stream object.</p> </td></tr> <tr valign=top><td><b>driver</b></td><td> -<p>This field is exclusively used by <a href="ft2-base_interface.html#FT_Open_Face">FT_Open_Face</a>; it simply specifies the font driver to use to open the face. If set to 0, FreeType tries to load the face with each one of the drivers in its list.</p> +<p>This field is exclusively used by <a href="ft2-base_interface.html#FT_Open_Face">FT_Open_Face</a>; it simply specifies the font driver to use to open the face. If set to 0, FreeType tries to load the face with each one of the drivers in its list.</p> </td></tr> <tr valign=top><td><b>num_params</b></td><td> <p>The number of extra parameters.</p> @@ -1670,7 +1600,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <p>Otherwise, if the ‘FT_OPEN_PATHNAME’ bit is set, assume that this is a normal file and use ‘pathname’ to open it.</p> <p>If the ‘FT_OPEN_DRIVER’ bit is set, <a href="ft2-base_interface.html#FT_Open_Face">FT_Open_Face</a> only tries to open the file with the driver whose handler is in ‘driver’.</p> <p>If the ‘FT_OPEN_PARAMS’ bit is set, the parameters given by ‘num_params’ and ‘params’ is used. They are ignored otherwise.</p> -<p>Ideally, both the ‘pathname’ and ‘params’ fields should be tagged as ‘const’; this is missing for API backwards compatibility. With other words, applications should treat them as read-only.</p> +<p>Ideally, both the ‘pathname’ and ‘params’ fields should be tagged as ‘const’; this is missing for API backwards compatibility. In other words, applications should treat them as read-only.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -1710,7 +1640,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <p>A path to the font file.</p> </td></tr> <tr valign=top><td><b>face_index</b></td><td> -<p>The index of the face within the font. The first face has index 0.</p> +<p>The index of the face within the font. The first face has index 0.</p> </td></tr> </table> </td></tr></table> @@ -1723,7 +1653,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -1767,7 +1697,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <p>The size of the memory chunk used by the font data.</p> </td></tr> <tr valign=top><td><b>face_index</b></td><td> -<p>The index of the face within the font. The first face has index 0.</p> +<p>The index of the face within the font. The first face has index 0.</p> </td></tr> </table> </td></tr></table> @@ -1780,7 +1710,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>You must not deallocate the memory before calling <a href="ft2-base_interface.html#FT_Done_Face">FT_Done_Face</a>.</p> @@ -1823,7 +1753,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <p>A pointer to an ‘FT_Open_Args’ structure which must be filled by the caller.</p> </td></tr> <tr valign=top><td><b>face_index</b></td><td> -<p>The index of the face within the font. The first face has index 0.</p> +<p>The index of the face within the font. The first face has index 0.</p> </td></tr> </table> </td></tr></table> @@ -1836,11 +1766,11 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>Unlike FreeType 1.x, this function automatically creates a glyph slot for the face object which can be accessed directly through ‘face->glyph’.</p> -<p>FT_Open_Face can be used to quickly check whether the font format of a given font resource is supported by FreeType. If the ‘face_index’ field is negative, the function's return value is 0 if the font format is recognized, or non-zero otherwise; the function returns a more or less empty face handle in ‘*aface’ (if ‘aface’ isn't NULL). The only useful field in this special case is ‘face->num_faces’ which gives the number of faces within the font file. After examination, the returned <a href="ft2-base_interface.html#FT_Face">FT_Face</a> structure should be deallocated with a call to <a href="ft2-base_interface.html#FT_Done_Face">FT_Done_Face</a>.</p> +<p>FT_Open_Face can be used to quickly check whether the font format of a given font resource is supported by FreeType. If the ‘face_index’ field is negative, the function's return value is 0 if the font format is recognized, or non-zero otherwise; the function returns a more or less empty face handle in ‘*aface’ (if ‘aface’ isn't NULL). The only useful field in this special case is ‘face->num_faces’ which gives the number of faces within the font file. After examination, the returned <a href="ft2-base_interface.html#FT_Face">FT_Face</a> structure should be deallocated with a call to <a href="ft2-base_interface.html#FT_Done_Face">FT_Done_Face</a>.</p> <p>Each new face object created with this function also owns a default <a href="ft2-base_interface.html#FT_Size">FT_Size</a> object, accessible as ‘face->size’.</p> </td></tr></table> </td></tr></table> @@ -1881,7 +1811,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -1902,7 +1832,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>‘Attach’ data to a face object. Normally, this is used to read additional information for the face object. For example, you can attach an AFM file that comes with a Type 1 font to get the kerning values and other metrics.</p> +<p>‘Attach’ data to a face object. Normally, this is used to read additional information for the face object. For example, you can attach an AFM file that comes with a Type 1 font to get the kerning values and other metrics.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>inout</b></em></td></tr><tr><td> <p></p> @@ -1921,7 +1851,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>The meaning of the ‘attach’ (i.e., what really happens when the new file is read) is not fixed by FreeType itself. It really depends on the font format (and thus the font driver).</p> @@ -1956,7 +1886,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -1996,7 +1926,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -2115,14 +2045,6 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <table align=center width="75%"><tr><td> <h4><a name="FT_Size_Request">FT_Size_Request</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_FREETYPE_H (freetype/freetype.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_Size_RequestRec_ *<b>FT_Size_Request</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>A handle to a size request structure.</p> </td></tr></table><br> </td></tr></table> @@ -2163,7 +2085,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>Although drivers may select the bitmap strike matching the request, you should not rely on this if you intend to select a particular bitmap strike. Use <a href="ft2-base_interface.html#FT_Select_Size">FT_Select_Size</a> instead in that case.</p> @@ -2218,12 +2140,13 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>If either the character width or height is zero, it is set equal to the other value.</p> <p>If either the horizontal or vertical resolution is zero, it is set equal to the other value.</p> <p>A character width or height smaller than 1pt is set to 1pt; if both resolution values are zero, they are set to 72dpi.</p> +<p>Don't use this function if you are using the FreeType cache API.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -2267,7 +2190,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -2311,7 +2234,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>The loaded glyph may be transformed. See <a href="ft2-base_interface.html#FT_Set_Transform">FT_Set_Transform</a> for the details.</p> @@ -2359,7 +2282,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>This function simply calls <a href="ft2-base_interface.html#FT_Get_Char_Index">FT_Get_Char_Index</a> and <a href="ft2-base_interface.html#FT_Load_Glyph">FT_Load_Glyph</a>.</p> @@ -2391,7 +2314,6 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). #define <a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_IGNORE_TRANSFORM</a> 0x800 #define <a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_MONOCHROME</a> 0x1000 #define <a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_LINEAR_DESIGN</a> 0x2000 -#define FT_LOAD_SBITS_ONLY 0x4000 /* temporary hack! */ #define <a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_NO_AUTOHINT</a> 0x8000U </pre></table><br> @@ -2402,7 +2324,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <p></p> <table cellpadding=3 border=0> <tr valign=top><td><b>FT_LOAD_DEFAULT</b></td><td> -<p>Corresponding to 0, this value is used as the default glyph load operation. In this case, the following happens:</p> +<p>Corresponding to 0, this value is used as the default glyph load operation. In this case, the following happens:</p> <p>1. FreeType looks for a bitmap for the glyph corresponding to the face's current size. If one is found, the function returns. The bitmap data can be accessed from the glyph slot (see note below).</p> <p>2. If no embedded bitmap is searched or found, FreeType looks for a scalable outline. If one is found, it is loaded from the font file, scaled to device pixels, then ‘hinted’ to the pixel grid in order to optimize it. The outline data can be accessed from the glyph slot (see note below).</p> <p>Note that by default, the glyph loader doesn't render outlines into bitmaps. The following flags are used to modify this default behaviour to more specific and useful cases.</p> @@ -2451,8 +2373,8 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <p>Indicates that the transform matrix set by <a href="ft2-base_interface.html#FT_Set_Transform">FT_Set_Transform</a> should be ignored.</p> </td></tr> <tr valign=top><td><b>FT_LOAD_MONOCHROME</b></td><td> -<p>This flag is used with <a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_RENDER</a> to indicate that you want to render an outline glyph to a 1-bit monochrome bitmap glyph, with 8 pixels packed into each byte of the bitmap data.</p> -<p>Note that this has no effect on the hinting algorithm used. You should use <a href="ft2-base_interface.html#FT_LOAD_TARGET_XXX">FT_LOAD_TARGET_MONO</a> instead so that the monochrome-optimized hinting algorithm is used.</p> +<p>This flag is used with <a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_RENDER</a> to indicate that you want to render an outline glyph to a 1-bit monochrome bitmap glyph, with 8 pixels packed into each byte of the bitmap data.</p> +<p>Note that this has no effect on the hinting algorithm used. You should rather use <a href="ft2-base_interface.html#FT_LOAD_TARGET_XXX">FT_LOAD_TARGET_MONO</a> so that the monochrome-optimized hinting algorithm is used.</p> </td></tr> <tr valign=top><td><b>FT_LOAD_LINEAR_DESIGN</b></td><td> <p>Indicates that the ‘linearHoriAdvance’ and ‘linearVertAdvance’ fields of <a href="ft2-base_interface.html#FT_GlyphSlotRec">FT_GlyphSlotRec</a> should be kept in font units. See <a href="ft2-base_interface.html#FT_GlyphSlotRec">FT_GlyphSlotRec</a> for details.</p> @@ -2464,6 +2386,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>By default, hinting is enabled and the font's native hinter (see <a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_HINTER</a>) is preferred over the auto-hinter. You can disable hinting by setting <a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_NO_HINTING</a> or change the precedence by setting <a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_FORCE_AUTOHINT</a>. You can also set <a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_NO_AUTOHINT</a> in case you don't want the auto-hinter to be used at all.</p> +<p>See the description of <a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_TRICKY</a> for a special exception (affecting only a handful of Asian fonts).</p> <p>Besides deciding which hinter to use, you can also decide which hinting algorithm to use. See <a href="ft2-base_interface.html#FT_LOAD_TARGET_XXX">FT_LOAD_TARGET_XXX</a> for details.</p> </td></tr></table> </td></tr></table> @@ -2479,13 +2402,13 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). </td></tr></table><br> <table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> -#define FT_LOAD_TARGET_( x ) ( (<a href="ft2-basic_types.html#FT_Int32">FT_Int32</a>)( (x) & 15 ) << 16 ) +#define FT_LOAD_TARGET_( x ) ( (<a href="ft2-basic_types.html#FT_Int32">FT_Int32</a>)( (x) & 15 ) << 16 ) -#define <a href="ft2-base_interface.html#FT_LOAD_TARGET_XXX">FT_LOAD_TARGET_NORMAL</a> FT_LOAD_TARGET_( <a href="ft2-base_interface.html#FT_Render_Mode">FT_RENDER_MODE_NORMAL</a> ) -#define <a href="ft2-base_interface.html#FT_LOAD_TARGET_XXX">FT_LOAD_TARGET_LIGHT</a> FT_LOAD_TARGET_( <a href="ft2-base_interface.html#FT_Render_Mode">FT_RENDER_MODE_LIGHT</a> ) -#define <a href="ft2-base_interface.html#FT_LOAD_TARGET_XXX">FT_LOAD_TARGET_MONO</a> FT_LOAD_TARGET_( <a href="ft2-base_interface.html#FT_Render_Mode">FT_RENDER_MODE_MONO</a> ) -#define <a href="ft2-base_interface.html#FT_LOAD_TARGET_XXX">FT_LOAD_TARGET_LCD</a> FT_LOAD_TARGET_( <a href="ft2-base_interface.html#FT_Render_Mode">FT_RENDER_MODE_LCD</a> ) -#define <a href="ft2-base_interface.html#FT_LOAD_TARGET_XXX">FT_LOAD_TARGET_LCD_V</a> FT_LOAD_TARGET_( <a href="ft2-base_interface.html#FT_Render_Mode">FT_RENDER_MODE_LCD_V</a> ) +#define <a href="ft2-base_interface.html#FT_LOAD_TARGET_XXX">FT_LOAD_TARGET_NORMAL</a> FT_LOAD_TARGET_( <a href="ft2-base_interface.html#FT_Render_Mode">FT_RENDER_MODE_NORMAL</a> ) +#define <a href="ft2-base_interface.html#FT_LOAD_TARGET_XXX">FT_LOAD_TARGET_LIGHT</a> FT_LOAD_TARGET_( <a href="ft2-base_interface.html#FT_Render_Mode">FT_RENDER_MODE_LIGHT</a> ) +#define <a href="ft2-base_interface.html#FT_LOAD_TARGET_XXX">FT_LOAD_TARGET_MONO</a> FT_LOAD_TARGET_( <a href="ft2-base_interface.html#FT_Render_Mode">FT_RENDER_MODE_MONO</a> ) +#define <a href="ft2-base_interface.html#FT_LOAD_TARGET_XXX">FT_LOAD_TARGET_LCD</a> FT_LOAD_TARGET_( <a href="ft2-base_interface.html#FT_Render_Mode">FT_RENDER_MODE_LCD</a> ) +#define <a href="ft2-base_interface.html#FT_LOAD_TARGET_XXX">FT_LOAD_TARGET_LCD_V</a> FT_LOAD_TARGET_( <a href="ft2-base_interface.html#FT_Render_Mode">FT_RENDER_MODE_LCD_V</a> ) </pre></table><br> <table align=center width="87%"><tr><td> @@ -2500,7 +2423,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <p>This corresponds to the default hinting algorithm, optimized for standard gray-level rendering. For monochrome output, use <a href="ft2-base_interface.html#FT_LOAD_TARGET_XXX">FT_LOAD_TARGET_MONO</a> instead.</p> </td></tr> <tr valign=top><td><b>FT_LOAD_TARGET_LIGHT</b></td><td> -<p>A lighter hinting algorithm for non-monochrome modes. Many generated glyphs are more fuzzy but better resemble its original shape. A bit like rendering on Mac OS X.</p> +<p>A lighter hinting algorithm for non-monochrome modes. Many generated glyphs are more fuzzy but better resemble its original shape. A bit like rendering on Mac OS X.</p> <p>As a special exception, this target implies <a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_FORCE_AUTOHINT</a>.</p> </td></tr> <tr valign=top><td><b>FT_LOAD_TARGET_MONO</b></td><td> @@ -2534,14 +2457,6 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <table align=center width="75%"><tr><td> <h4><a name="FT_LOAD_TARGET_MODE">FT_LOAD_TARGET_MODE</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_FREETYPE_H (freetype/freetype.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_LOAD_TARGET_MODE</b>( x ) ( (<a href="ft2-base_interface.html#FT_Render_Mode">FT_Render_Mode</a>)( ( (x) >> 16 ) & 15 ) ) - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>Return the <a href="ft2-base_interface.html#FT_Render_Mode">FT_Render_Mode</a> corresponding to a given <a href="ft2-base_interface.html#FT_LOAD_TARGET_XXX">FT_LOAD_TARGET_XXX</a> value.</p> </td></tr></table><br> </td></tr></table> @@ -2578,10 +2493,10 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <p></p> <table cellpadding=3 border=0> <tr valign=top><td><b>matrix</b></td><td> -<p>A pointer to the transformation's 2x2 matrix. Use 0 for the identity matrix.</p> +<p>A pointer to the transformation's 2x2 matrix. Use 0 for the identity matrix.</p> </td></tr> <tr valign=top><td><b>delta</b></td><td> -<p>A pointer to the translation vector. Use 0 for the null vector.</p> +<p>A pointer to the translation vector. Use 0 for the null vector.</p> </td></tr> </table> </td></tr></table> @@ -2616,31 +2531,33 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>An enumeration type that lists the render modes supported by FreeType 2. Each mode corresponds to a specific type of scanline conversion performed on the outline.</p> -<p>For bitmap fonts the ‘bitmap->pixel_mode’ field in the <a href="ft2-base_interface.html#FT_GlyphSlotRec">FT_GlyphSlotRec</a> structure gives the format of the returned bitmap.</p> +<p>An enumeration type that lists the render modes supported by FreeType 2. Each mode corresponds to a specific type of scanline conversion performed on the outline.</p> +<p>For bitmap fonts and embedded bitmaps the ‘bitmap->pixel_mode’ field in the <a href="ft2-base_interface.html#FT_GlyphSlotRec">FT_GlyphSlotRec</a> structure gives the format of the returned bitmap.</p> +<p>All modes except <a href="ft2-base_interface.html#FT_Render_Mode">FT_RENDER_MODE_MONO</a> use 256 levels of opacity.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>values</b></em></td></tr><tr><td> <p></p> <table cellpadding=3 border=0> <tr valign=top><td><b>FT_RENDER_MODE_NORMAL</b></td><td> -<p>This is the default render mode; it corresponds to 8-bit anti-aliased bitmaps, using 256 levels of opacity.</p> +<p>This is the default render mode; it corresponds to 8-bit anti-aliased bitmaps.</p> </td></tr> <tr valign=top><td><b>FT_RENDER_MODE_LIGHT</b></td><td> <p>This is equivalent to <a href="ft2-base_interface.html#FT_Render_Mode">FT_RENDER_MODE_NORMAL</a>. It is only defined as a separate value because render modes are also used indirectly to define hinting algorithm selectors. See <a href="ft2-base_interface.html#FT_LOAD_TARGET_XXX">FT_LOAD_TARGET_XXX</a> for details.</p> </td></tr> <tr valign=top><td><b>FT_RENDER_MODE_MONO</b></td><td> -<p>This mode corresponds to 1-bit bitmaps.</p> +<p>This mode corresponds to 1-bit bitmaps (with 2 levels of opacity).</p> </td></tr> <tr valign=top><td><b>FT_RENDER_MODE_LCD</b></td><td> -<p>This mode corresponds to horizontal RGB and BGR sub-pixel displays, like LCD-screens. It produces 8-bit bitmaps that are 3 times the width of the original glyph outline in pixels, and which use the <a href="ft2-basic_types.html#FT_Pixel_Mode">FT_PIXEL_MODE_LCD</a> mode.</p> +<p>This mode corresponds to horizontal RGB and BGR sub-pixel displays like LCD screens. It produces 8-bit bitmaps that are 3 times the width of the original glyph outline in pixels, and which use the <a href="ft2-basic_types.html#FT_Pixel_Mode">FT_PIXEL_MODE_LCD</a> mode.</p> </td></tr> <tr valign=top><td><b>FT_RENDER_MODE_LCD_V</b></td><td> -<p>This mode corresponds to vertical RGB and BGR sub-pixel displays (like PDA screens, rotated LCD displays, etc.). It produces 8-bit bitmaps that are 3 times the height of the original glyph outline in pixels and use the <a href="ft2-basic_types.html#FT_Pixel_Mode">FT_PIXEL_MODE_LCD_V</a> mode.</p> +<p>This mode corresponds to vertical RGB and BGR sub-pixel displays (like PDA screens, rotated LCD displays, etc.). It produces 8-bit bitmaps that are 3 times the height of the original glyph outline in pixels and use the <a href="ft2-basic_types.html#FT_Pixel_Mode">FT_PIXEL_MODE_LCD_V</a> mode.</p> </td></tr> </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>The LCD-optimized glyph bitmaps produced by FT_Render_Glyph can be filtered to reduce color-fringes by using <a href="ft2-lcd_filtering.html#FT_Library_SetLcdFilter">FT_Library_SetLcdFilter</a> (not active in the default builds). It is up to the caller to either call <a href="ft2-lcd_filtering.html#FT_Library_SetLcdFilter">FT_Library_SetLcdFilter</a> (if available) or do the filtering itself.</p> +<p>The selected render mode only affects vector glyphs of a font. Embedded bitmaps often have a different pixel mode like <a href="ft2-basic_types.html#FT_Pixel_Mode">FT_PIXEL_MODE_MONO</a>. You can use <a href="ft2-bitmap_handling.html#FT_Bitmap_Convert">FT_Bitmap_Convert</a> to transform them into 8-bit pixmaps.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -2711,7 +2628,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -2742,7 +2659,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <p></p> <table cellpadding=3 border=0> <tr valign=top><td><b>FT_KERNING_DEFAULT</b></td><td> -<p>Return scaled and grid-fitted kerning distances (value is 0).</p> +<p>Return scaled and grid-fitted kerning distances (value is 0).</p> </td></tr> <tr valign=top><td><b>FT_KERNING_UNFITTED</b></td><td> <p>Return scaled but un-grid-fitted kerning distances.</p> @@ -2761,14 +2678,6 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <table align=center width="75%"><tr><td> <h4><a name="ft_kerning_default">ft_kerning_default</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_FREETYPE_H (freetype/freetype.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>ft_kerning_default</b> <a href="ft2-base_interface.html#FT_Kerning_Mode">FT_KERNING_DEFAULT</a> - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>This constant is deprecated. Please use <a href="ft2-base_interface.html#FT_Kerning_Mode">FT_KERNING_DEFAULT</a> instead.</p> </td></tr></table><br> </td></tr></table> @@ -2780,14 +2689,6 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <table align=center width="75%"><tr><td> <h4><a name="ft_kerning_unfitted">ft_kerning_unfitted</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_FREETYPE_H (freetype/freetype.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>ft_kerning_unfitted</b> <a href="ft2-base_interface.html#FT_Kerning_Mode">FT_KERNING_UNFITTED</a> - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>This constant is deprecated. Please use <a href="ft2-base_interface.html#FT_Kerning_Mode">FT_KERNING_UNFITTED</a> instead.</p> </td></tr></table><br> </td></tr></table> @@ -2799,14 +2700,6 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <table align=center width="75%"><tr><td> <h4><a name="ft_kerning_unscaled">ft_kerning_unscaled</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_FREETYPE_H (freetype/freetype.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>ft_kerning_unscaled</b> <a href="ft2-base_interface.html#FT_Kerning_Mode">FT_KERNING_UNSCALED</a> - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>This constant is deprecated. Please use <a href="ft2-base_interface.html#FT_Kerning_Mode">FT_KERNING_UNSCALED</a> instead.</p> </td></tr></table><br> </td></tr></table> @@ -2859,7 +2752,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>Only horizontal layouts (left-to-right & right-to-left) are supported by this method. Other layouts, or more sophisticated kernings, are out of the scope of this API function -- they can be implemented through format-specific interfaces.</p> @@ -2910,7 +2803,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -2933,7 +2826,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Retrieve the ASCII name of a given glyph in a face. This only works for those faces where <a href="ft2-base_interface.html#FT_HAS_GLYPH_NAMES">FT_HAS_GLYPH_NAMES</a>(face) returns 1.</p> +<p>Retrieve the ASCII name of a given glyph in a face. This only works for those faces where <a href="ft2-base_interface.html#FT_HAS_GLYPH_NAMES">FT_HAS_GLYPH_NAMES</a>(face) returns 1.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> <p></p> @@ -2958,10 +2851,10 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> -<p>An error is returned if the face doesn't provide glyph names or if the glyph index is invalid. In all cases of failure, the first byte of ‘buffer’ is set to 0 to indicate an empty name.</p> +<p>An error is returned if the face doesn't provide glyph names or if the glyph index is invalid. In all cases of failure, the first byte of ‘buffer’ is set to 0 to indicate an empty name.</p> <p>The glyph name is truncated to fit within the buffer if it is too long. The returned string is always zero-terminated.</p> <p>This function is not compiled within the library if the config macro ‘FT_CONFIG_OPTION_NO_GLYPH_NAMES’ is defined in ‘include/freetype/config/ftoptions.h’.</p> </td></tr></table> @@ -2983,7 +2876,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Retrieve the ASCII Postscript name of a given face, if available. This only works with Postscript and TrueType fonts.</p> +<p>Retrieve the ASCII PostScript name of a given face, if available. This only works with PostScript and TrueType fonts.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> <p></p> @@ -2994,7 +2887,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>A pointer to the face's Postscript name. NULL if unavailable.</p> +<p>A pointer to the face's PostScript name. NULL if unavailable.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>The returned pointer is owned by the face and is destroyed with it.</p> @@ -3037,7 +2930,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>This function returns an error if no charmap in the face corresponds to the encoding queried here.</p> @@ -3081,11 +2974,11 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>This function returns an error if the charmap is not part of the face (i.e., if it is not listed in the ‘face->charmaps’ table).</p> -<p>It also fails if a type 14 charmap is selected.</p> +<p>It also fails if a type 14 charmap is selected.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -3151,10 +3044,10 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>The glyph index. 0 means ‘undefined character code’.</p> +<p>The glyph index. 0 means ‘undefined character code’.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> -<p>If you use FreeType to manipulate the contents of font files directly, be aware that the glyph index returned by this function doesn't always correspond to the internal indices used within the file. This is done to ensure that value 0 always corresponds to the ‘missing glyph’.</p> +<p>If you use FreeType to manipulate the contents of font files directly, be aware that the glyph index returned by this function doesn't always correspond to the internal indices used within the file. This is done to ensure that value 0 always corresponds to the ‘missing glyph’.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -3189,7 +3082,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <p></p> <table cellpadding=3 border=0> <tr valign=top><td><b>agindex</b></td><td> -<p>Glyph index of first character code. 0 if charmap is empty.</p> +<p>Glyph index of first character code. 0 if charmap is empty.</p> </td></tr> </table> </td></tr></table> @@ -3211,7 +3104,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). charcode = FT_Get_Next_Char( face, charcode, &gindex ); } </pre> -<p>Note that ‘*agindex’ is set to 0 if the charmap is empty. The result itself can be 0 in two cases: if the charmap is empty or when the value 0 is the first valid character code.</p> +<p>Note that ‘*agindex’ is set to 0 if the charmap is empty. The result itself can be 0 in two cases: if the charmap is empty or if the value 0 is the first valid character code.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -3250,7 +3143,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <p></p> <table cellpadding=3 border=0> <tr valign=top><td><b>agindex</b></td><td> -<p>Glyph index of first character code. 0 if charmap is empty.</p> +<p>Glyph index of next character code. 0 if charmap is empty.</p> </td></tr> </table> </td></tr></table> @@ -3259,7 +3152,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>You should use this function with <a href="ft2-base_interface.html#FT_Get_First_Char">FT_Get_First_Char</a> to walk over all character codes available in a given charmap. See the note for this function for a simple code example.</p> -<p>Note that ‘*agindex’ is set to 0 when there are no more codes in the charmap.</p> +<p>Note that ‘*agindex’ is set to 0 when there are no more codes in the charmap.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -3294,7 +3187,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>The glyph index. 0 means ‘undefined character code’.</p> +<p>The glyph index. 0 means ‘undefined character code’.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -3376,7 +3269,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Retrieve a description of a given subglyph. Only use it if ‘glyph->format’ is <a href="ft2-basic_types.html#FT_Glyph_Format">FT_GLYPH_FORMAT_COMPOSITE</a>, or an error is returned.</p> +<p>Retrieve a description of a given subglyph. Only use it if ‘glyph->format’ is <a href="ft2-basic_types.html#FT_Glyph_Format">FT_GLYPH_FORMAT_COMPOSITE</a>; an error is returned otherwise.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> <p></p> @@ -3385,7 +3278,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <p>The source glyph slot.</p> </td></tr> <tr valign=top><td><b>sub_index</b></td><td> -<p>The index of subglyph. Must be less than ‘glyph->num_subglyphs’.</p> +<p>The index of the subglyph. Must be less than ‘glyph->num_subglyphs’.</p> </td></tr> </table> </td></tr></table> @@ -3410,7 +3303,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>The values of ‘*p_arg1’, ‘*p_arg2’, and ‘*p_transform’ must be interpreted depending on the flags returned in ‘*p_flags’. See the TrueType specification for details.</p> @@ -3421,5 +3314,96 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <td width="100%"></td> <td><font size=-2>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> +<table align=center width="75%"><tr><td> +<h4><a name="FT_FSTYPE_XXX">FT_FSTYPE_XXX</a></h4> +<table align=center width="87%"><tr><td> +Defined in FT_FREETYPE_H (freetype/freetype.h). +</td></tr></table><br> +<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> + +#define <a href="ft2-base_interface.html#FT_FSTYPE_XXX">FT_FSTYPE_INSTALLABLE_EMBEDDING</a> 0x0000 +#define <a href="ft2-base_interface.html#FT_FSTYPE_XXX">FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING</a> 0x0002 +#define <a href="ft2-base_interface.html#FT_FSTYPE_XXX">FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING</a> 0x0004 +#define <a href="ft2-base_interface.html#FT_FSTYPE_XXX">FT_FSTYPE_EDITABLE_EMBEDDING</a> 0x0008 +#define <a href="ft2-base_interface.html#FT_FSTYPE_XXX">FT_FSTYPE_NO_SUBSETTING</a> 0x0100 +#define <a href="ft2-base_interface.html#FT_FSTYPE_XXX">FT_FSTYPE_BITMAP_EMBEDDING_ONLY</a> 0x0200 + +</pre></table><br> +<table align=center width="87%"><tr><td> +<p>A list of bit flags used in the ‘fsType’ field of the OS/2 table in a TrueType or OpenType font and the ‘FSType’ entry in a PostScript font. These bit flags are returned by <a href="ft2-base_interface.html#FT_Get_FSType_Flags">FT_Get_FSType_Flags</a>; they inform client applications of embedding and subsetting restrictions associated with a font.</p> +<p>See http://www.adobe.com/devnet/acrobat/pdfs/FontPolicies.pdf for more details.</p> +</td></tr></table><br> +<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>values</b></em></td></tr><tr><td> +<p></p> +<table cellpadding=3 border=0> +<tr valign=top><td colspan=0><b>FT_FSTYPE_INSTALLABLE_EMBEDDING</b></td></tr> +<tr valign=top><td></td><td> +<p>Fonts with no fsType bit set may be embedded and permanently installed on the remote system by an application.</p> +</td></tr> +<tr valign=top><td colspan=0><b>FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING</b></td></tr> +<tr valign=top><td></td><td> +<p>Fonts that have only this bit set must not be modified, embedded or exchanged in any manner without first obtaining permission of the font software copyright owner.</p> +</td></tr> +<tr valign=top><td colspan=0><b>FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING</b></td></tr> +<tr valign=top><td></td><td> +<p>If this bit is set, the font may be embedded and temporarily loaded on the remote system. Documents containing Preview & Print fonts must be opened ‘read-only’; no edits can be applied to the document.</p> +</td></tr> +<tr valign=top><td colspan=0><b>FT_FSTYPE_EDITABLE_EMBEDDING</b></td></tr> +<tr valign=top><td></td><td> +<p>If this bit is set, the font may be embedded but must only be installed temporarily on other systems. In contrast to Preview & Print fonts, documents containing editable fonts may be opened for reading, editing is permitted, and changes may be saved.</p> +</td></tr> +<tr valign=top><td colspan=0><b>FT_FSTYPE_NO_SUBSETTING</b></td></tr> +<tr valign=top><td></td><td> +<p>If this bit is set, the font may not be subsetted prior to embedding.</p> +</td></tr> +<tr valign=top><td colspan=0><b>FT_FSTYPE_BITMAP_EMBEDDING_ONLY</b></td></tr> +<tr valign=top><td></td><td> +<p>If this bit is set, only bitmaps contained in the font may be embedded; no outline data may be embedded. If there are no bitmaps available in the font, then the font is unembeddable.</p> +</td></tr> +</table> +</td></tr></table> +<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> +<p>While the fsType flags can indicate that a font may be embedded, a license with the font vendor may be separately required to use the font in this way.</p> +</td></tr></table> +</td></tr></table> +<hr width="75%"> +<table align=center width="75%"><tr><td><font size=-2>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td> +<td><font size=-2>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> + +<table align=center width="75%"><tr><td> +<h4><a name="FT_Get_FSType_Flags">FT_Get_FSType_Flags</a></h4> +<table align=center width="87%"><tr><td> +Defined in FT_FREETYPE_H (freetype/freetype.h). +</td></tr></table><br> +<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> + + FT_EXPORT( <a href="ft2-basic_types.html#FT_UShort">FT_UShort</a> ) + <b>FT_Get_FSType_Flags</b>( <a href="ft2-base_interface.html#FT_Face">FT_Face</a> face ); + +</pre></table><br> +<table align=center width="87%"><tr><td> +<p>Return the fsType flags for a font.</p> +</td></tr></table><br> +<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> +<p></p> +<table cellpadding=3 border=0> +<tr valign=top><td><b>face</b></td><td> +<p>A handle to the source face object.</p> +</td></tr> +</table> +</td></tr></table> +<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> +<p>The fsType flags, <a href="ft2-base_interface.html#FT_FSTYPE_XXX">FT_FSTYPE_XXX</a>.</p> +</td></tr></table> +<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> +<p>Use this function rather than directly reading the ‘fs_type’ field in the <a href="ft2-type1_tables.html#PS_FontInfoRec">PS_FontInfoRec</a> structure which is only guaranteed to return the correct results for Type 1 fonts.</p> +</td></tr></table> +</td></tr></table> +<hr width="75%"> +<table align=center width="75%"><tr><td><font size=-2>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td> +<td><font size=-2>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> + </body> </html> diff --git a/src/3rdparty/freetype/docs/reference/ft2-basic_types.html b/src/3rdparty/freetype/docs/reference/ft2-basic_types.html index 16ab90f..9e77145 100644 --- a/src/3rdparty/freetype/docs/reference/ft2-basic_types.html +++ b/src/3rdparty/freetype/docs/reference/ft2-basic_types.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.3.6 API Reference</title> +<title>FreeType-2.3.9 API Reference</title> <style type="text/css"> body { font-family: Verdana, Geneva, Arial, Helvetica, serif; color: #000000; @@ -31,7 +31,11 @@ </style> </head> <body> -<center><h1>FreeType-2.3.6 API Reference</h1></center> + +<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td> +<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> +<center><h1>FreeType-2.3.9 API Reference</h1></center> <center><h1> Basic Data Types @@ -55,19 +59,11 @@ Basic Data Types </table><br><br> <table align=center width="87%"><tr><td> -<p>This section contains the basic data types defined by FreeType 2, ranging from simple scalar types to bitmap descriptors. More font-specific structures are defined in a different section.</p> +<p>This section contains the basic data types defined by FreeType 2, ranging from simple scalar types to bitmap descriptors. More font-specific structures are defined in a different section.</p> </td></tr></table><br> <table align=center width="75%"><tr><td> <h4><a name="FT_Byte">FT_Byte</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_TYPES_H (freetype/fttypes.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">unsigned</span> <span class="keyword">char</span> <b>FT_Byte</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>A simple typedef for the <i>unsigned</i> char type.</p> </td></tr></table><br> </td></tr></table> @@ -79,14 +75,6 @@ Defined in FT_TYPES_H (freetype/fttypes.h). <table align=center width="75%"><tr><td> <h4><a name="FT_Bytes">FT_Bytes</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_TYPES_H (freetype/fttypes.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">const</span> <a href="ft2-basic_types.html#FT_Byte">FT_Byte</a>* <b>FT_Bytes</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>A typedef for constant memory areas.</p> </td></tr></table><br> </td></tr></table> @@ -98,14 +86,6 @@ Defined in FT_TYPES_H (freetype/fttypes.h). <table align=center width="75%"><tr><td> <h4><a name="FT_Char">FT_Char</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_TYPES_H (freetype/fttypes.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">signed</span> <span class="keyword">char</span> <b>FT_Char</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>A simple typedef for the <i>signed</i> char type.</p> </td></tr></table><br> </td></tr></table> @@ -117,14 +97,6 @@ Defined in FT_TYPES_H (freetype/fttypes.h). <table align=center width="75%"><tr><td> <h4><a name="FT_Int">FT_Int</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_TYPES_H (freetype/fttypes.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">signed</span> <span class="keyword">int</span> <b>FT_Int</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>A typedef for the int type.</p> </td></tr></table><br> </td></tr></table> @@ -136,14 +108,6 @@ Defined in FT_TYPES_H (freetype/fttypes.h). <table align=center width="75%"><tr><td> <h4><a name="FT_UInt">FT_UInt</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_TYPES_H (freetype/fttypes.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">unsigned</span> <span class="keyword">int</span> <b>FT_UInt</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>A typedef for the unsigned int type.</p> </td></tr></table><br> </td></tr></table> @@ -155,14 +119,6 @@ Defined in FT_TYPES_H (freetype/fttypes.h). <table align=center width="75%"><tr><td> <h4><a name="FT_Int16">FT_Int16</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_CONFIG_CONFIG_H (freetype/config/ftconfig.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">signed</span> <span class="keyword">short</span> <b>FT_Int16</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>A typedef for a 16bit signed integer type.</p> </td></tr></table><br> </td></tr></table> @@ -174,14 +130,6 @@ Defined in FT_CONFIG_CONFIG_H (freetype/config/ftconfig.h). <table align=center width="75%"><tr><td> <h4><a name="FT_UInt16">FT_UInt16</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_CONFIG_CONFIG_H (freetype/config/ftconfig.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">unsigned</span> <span class="keyword">short</span> <b>FT_UInt16</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>A typedef for a 16bit unsigned integer type.</p> </td></tr></table><br> </td></tr></table> @@ -193,14 +141,6 @@ Defined in FT_CONFIG_CONFIG_H (freetype/config/ftconfig.h). <table align=center width="75%"><tr><td> <h4><a name="FT_Int32">FT_Int32</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_CONFIG_CONFIG_H (freetype/config/ftconfig.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">signed</span> XXX <b>FT_Int32</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>A typedef for a 32bit signed integer type. The size depends on the configuration.</p> </td></tr></table><br> </td></tr></table> @@ -211,14 +151,6 @@ Defined in FT_CONFIG_CONFIG_H (freetype/config/ftconfig.h). <table align=center width="75%"><tr><td> <h4><a name="FT_UInt32">FT_UInt32</a></h4> -<table align=center width="87%"><tr><td> -Defined in FT_CONFIG_CONFIG_H (freetype/config/ftconfig.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">unsigned</span> XXX <b>FT_UInt32</b>; - -</pre></table><br> </td></tr></table> <hr width="75%"> <table align=center width="75%"><tr><td><font size=-2>[<a href="ft2-index.html">Index</a>]</font></td> @@ -228,14 +160,6 @@ Defined in FT_CONFIG_CONFIG_H (freetype/config/ftconfig.h). <table align=center width="75%"><tr><td> <h4><a name="FT_Short">FT_Short</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_TYPES_H (freetype/fttypes.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">signed</span> <span class="keyword">short</span> <b>FT_Short</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>A typedef for signed short.</p> </td></tr></table><br> </td></tr></table> @@ -247,14 +171,6 @@ Defined in FT_TYPES_H (freetype/fttypes.h). <table align=center width="75%"><tr><td> <h4><a name="FT_UShort">FT_UShort</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_TYPES_H (freetype/fttypes.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">unsigned</span> <span class="keyword">short</span> <b>FT_UShort</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>A typedef for unsigned short.</p> </td></tr></table><br> </td></tr></table> @@ -266,14 +182,6 @@ Defined in FT_TYPES_H (freetype/fttypes.h). <table align=center width="75%"><tr><td> <h4><a name="FT_Long">FT_Long</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_TYPES_H (freetype/fttypes.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">signed</span> <span class="keyword">long</span> <b>FT_Long</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>A typedef for signed long.</p> </td></tr></table><br> </td></tr></table> @@ -285,14 +193,6 @@ Defined in FT_TYPES_H (freetype/fttypes.h). <table align=center width="75%"><tr><td> <h4><a name="FT_ULong">FT_ULong</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_TYPES_H (freetype/fttypes.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">unsigned</span> <span class="keyword">long</span> <b>FT_ULong</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>A typedef for unsigned long.</p> </td></tr></table><br> </td></tr></table> @@ -304,15 +204,7 @@ Defined in FT_TYPES_H (freetype/fttypes.h). <table align=center width="75%"><tr><td> <h4><a name="FT_Bool">FT_Bool</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_TYPES_H (freetype/fttypes.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">unsigned</span> <span class="keyword">char</span> <b>FT_Bool</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> -<p>A typedef of unsigned char, used for simple booleans. As usual, values 1 and 0 represent true and false, respectively.</p> +<p>A typedef of unsigned char, used for simple booleans. As usual, values 1 and 0 represent true and false, respectively.</p> </td></tr></table><br> </td></tr></table> <hr width="75%"> @@ -323,15 +215,7 @@ Defined in FT_TYPES_H (freetype/fttypes.h). <table align=center width="75%"><tr><td> <h4><a name="FT_Offset">FT_Offset</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_TYPES_H (freetype/fttypes.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> size_t <b>FT_Offset</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> -<p>This is equivalent to the ANSI C ‘size_t’ type, i.e., the largest <i>unsigned</i> integer type used to express a file size or position, or a memory block size.</p> +<p>This is equivalent to the ANSI C ‘size_t’ type, i.e., the largest <i>unsigned</i> integer type used to express a file size or position, or a memory block size.</p> </td></tr></table><br> </td></tr></table> <hr width="75%"> @@ -342,15 +226,7 @@ Defined in FT_TYPES_H (freetype/fttypes.h). <table align=center width="75%"><tr><td> <h4><a name="FT_PtrDist">FT_PtrDist</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_TYPES_H (freetype/fttypes.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> ft_ptrdiff_t <b>FT_PtrDist</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> -<p>This is equivalent to the ANSI C ‘ptrdiff_t’ type, i.e., the largest <i>signed</i> integer type used to express the distance between two pointers.</p> +<p>This is equivalent to the ANSI C ‘ptrdiff_t’ type, i.e., the largest <i>signed</i> integer type used to express the distance between two pointers.</p> </td></tr></table><br> </td></tr></table> <hr width="75%"> @@ -361,14 +237,6 @@ Defined in FT_TYPES_H (freetype/fttypes.h). <table align=center width="75%"><tr><td> <h4><a name="FT_String">FT_String</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_TYPES_H (freetype/fttypes.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">char</span> <b>FT_String</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>A simple typedef for the char type, usually used for strings.</p> </td></tr></table><br> </td></tr></table> @@ -380,15 +248,7 @@ Defined in FT_TYPES_H (freetype/fttypes.h). <table align=center width="75%"><tr><td> <h4><a name="FT_Tag">FT_Tag</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_TYPES_H (freetype/fttypes.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <a href="ft2-basic_types.html#FT_UInt32">FT_UInt32</a> <b>FT_Tag</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> -<p>A typedef for 32bit tags (as used in the SFNT format).</p> +<p>A typedef for 32-bit tags (as used in the SFNT format).</p> </td></tr></table><br> </td></tr></table> <hr width="75%"> @@ -399,15 +259,7 @@ Defined in FT_TYPES_H (freetype/fttypes.h). <table align=center width="75%"><tr><td> <h4><a name="FT_Error">FT_Error</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_TYPES_H (freetype/fttypes.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">int</span> <b>FT_Error</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> -<p>The FreeType error code type. A value of 0 is always interpreted as a successful operation.</p> +<p>The FreeType error code type. A value of 0 is always interpreted as a successful operation.</p> </td></tr></table><br> </td></tr></table> <hr width="75%"> @@ -418,14 +270,6 @@ Defined in FT_TYPES_H (freetype/fttypes.h). <table align=center width="75%"><tr><td> <h4><a name="FT_Fixed">FT_Fixed</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_TYPES_H (freetype/fttypes.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">signed</span> <span class="keyword">long</span> <b>FT_Fixed</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>This type is used to store 16.16 fixed float values, like scaling values or matrix coefficients.</p> </td></tr></table><br> </td></tr></table> @@ -437,14 +281,6 @@ Defined in FT_TYPES_H (freetype/fttypes.h). <table align=center width="75%"><tr><td> <h4><a name="FT_Pointer">FT_Pointer</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_TYPES_H (freetype/fttypes.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">void</span>* <b>FT_Pointer</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>A simple typedef for a typeless pointer.</p> </td></tr></table><br> </td></tr></table> @@ -456,15 +292,7 @@ Defined in FT_TYPES_H (freetype/fttypes.h). <table align=center width="75%"><tr><td> <h4><a name="FT_Pos">FT_Pos</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_IMAGE_H (freetype/ftimage.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">signed</span> <span class="keyword">long</span> <b>FT_Pos</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> -<p>The type FT_Pos is a 32-bit integer used to store vectorial coordinates. Depending on the context, these can represent distances in integer font units, or 16,16, or 26.6 fixed float pixel coordinates.</p> +<p>The type FT_Pos is a 32-bit integer used to store vectorial coordinates. Depending on the context, these can represent distances in integer font units, or 16.16, or 26.6 fixed float pixel coordinates.</p> </td></tr></table><br> </td></tr></table> <hr width="75%"> @@ -596,14 +424,6 @@ Defined in FT_TYPES_H (freetype/fttypes.h). <table align=center width="75%"><tr><td> <h4><a name="FT_FWord">FT_FWord</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_TYPES_H (freetype/fttypes.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">signed</span> <span class="keyword">short</span> <b>FT_FWord</b>; /* distance in FUnits */ - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>A signed 16-bit integer used to store a distance in original font units.</p> </td></tr></table><br> </td></tr></table> @@ -615,14 +435,6 @@ Defined in FT_TYPES_H (freetype/fttypes.h). <table align=center width="75%"><tr><td> <h4><a name="FT_UFWord">FT_UFWord</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_TYPES_H (freetype/fttypes.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">unsigned</span> <span class="keyword">short</span> <b>FT_UFWord</b>; /* <span class="keyword">unsigned</span> distance */ - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>An unsigned 16-bit integer used to store a distance in original font units.</p> </td></tr></table><br> </td></tr></table> @@ -634,14 +446,6 @@ Defined in FT_TYPES_H (freetype/fttypes.h). <table align=center width="75%"><tr><td> <h4><a name="FT_F2Dot14">FT_F2Dot14</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_TYPES_H (freetype/fttypes.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">signed</span> <span class="keyword">short</span> <b>FT_F2Dot14</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>A signed 2.14 fixed float type used for unit vectors.</p> </td></tr></table><br> </td></tr></table> @@ -688,14 +492,6 @@ Defined in FT_TYPES_H (freetype/fttypes.h). <table align=center width="75%"><tr><td> <h4><a name="FT_F26Dot6">FT_F26Dot6</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_TYPES_H (freetype/fttypes.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">signed</span> <span class="keyword">long</span> <b>FT_F26Dot6</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>A signed 26.6 fixed float type used for vectorial pixel coordinates.</p> </td></tr></table><br> </td></tr></table> @@ -733,25 +529,25 @@ Defined in FT_IMAGE_H (freetype/ftimage.h). <p></p> <table cellpadding=3 border=0> <tr valign=top><td><b>FT_PIXEL_MODE_NONE</b></td><td> -<p>Value 0 is reserved.</p> +<p>Value 0 is reserved.</p> </td></tr> <tr valign=top><td><b>FT_PIXEL_MODE_MONO</b></td><td> -<p>A monochrome bitmap, using 1 bit per pixel. Note that pixels are stored in most-significant order (MSB), which means that the left-most pixel in a byte has value 128.</p> +<p>A monochrome bitmap, using 1 bit per pixel. Note that pixels are stored in most-significant order (MSB), which means that the left-most pixel in a byte has value 128.</p> </td></tr> <tr valign=top><td><b>FT_PIXEL_MODE_GRAY</b></td><td> -<p>An 8-bit bitmap, generally used to represent anti-aliased glyph images. Each pixel is stored in one byte. Note that the number of value ‘gray’ levels is stored in the ‘num_bytes’ field of the <a href="ft2-basic_types.html#FT_Bitmap">FT_Bitmap</a> structure (it generally is 256).</p> +<p>An 8-bit bitmap, generally used to represent anti-aliased glyph images. Each pixel is stored in one byte. Note that the number of ‘gray’ levels is stored in the ‘num_grays’ field of the <a href="ft2-basic_types.html#FT_Bitmap">FT_Bitmap</a> structure (it generally is 256).</p> </td></tr> <tr valign=top><td><b>FT_PIXEL_MODE_GRAY2</b></td><td> -<p>A 2-bit/pixel bitmap, used to represent embedded anti-aliased bitmaps in font files according to the OpenType specification. We haven't found a single font using this format, however.</p> +<p>A 2-bit per pixel bitmap, used to represent embedded anti-aliased bitmaps in font files according to the OpenType specification. We haven't found a single font using this format, however.</p> </td></tr> <tr valign=top><td><b>FT_PIXEL_MODE_GRAY4</b></td><td> -<p>A 4-bit/pixel bitmap, used to represent embedded anti-aliased bitmaps in font files according to the OpenType specification. We haven't found a single font using this format, however.</p> +<p>A 4-bit per pixel bitmap, representing embedded anti-aliased bitmaps in font files according to the OpenType specification. We haven't found a single font using this format, however.</p> </td></tr> <tr valign=top><td><b>FT_PIXEL_MODE_LCD</b></td><td> -<p>An 8-bit bitmap, used to represent RGB or BGR decimated glyph images used for display on LCD displays; the bitmap is three times wider than the original glyph image. See also <a href="ft2-base_interface.html#FT_Render_Mode">FT_RENDER_MODE_LCD</a>.</p> +<p>An 8-bit bitmap, representing RGB or BGR decimated glyph images used for display on LCD displays; the bitmap is three times wider than the original glyph image. See also <a href="ft2-base_interface.html#FT_Render_Mode">FT_RENDER_MODE_LCD</a>.</p> </td></tr> <tr valign=top><td><b>FT_PIXEL_MODE_LCD_V</b></td><td> -<p>An 8-bit bitmap, used to represent RGB or BGR decimated glyph images used for display on rotated LCD displays; the bitmap is three times taller than the original glyph image. See also <a href="ft2-base_interface.html#FT_Render_Mode">FT_RENDER_MODE_LCD_V</a>.</p> +<p>An 8-bit bitmap, representing RGB or BGR decimated glyph images used for display on rotated LCD displays; the bitmap is three times taller than the original glyph image. See also <a href="ft2-base_interface.html#FT_Render_Mode">FT_RENDER_MODE_LCD_V</a>.</p> </td></tr> </table> </td></tr></table> @@ -829,10 +625,10 @@ Defined in FT_IMAGE_H (freetype/ftimage.h). <p></p> <table cellpadding=3 border=0> <tr valign=top><td><b>ft_palette_mode_rgb</b></td><td> -<p>The palette is an array of 3-bytes RGB records.</p> +<p>The palette is an array of 3-byte RGB records.</p> </td></tr> <tr valign=top><td><b>ft_palette_mode_rgba</b></td><td> -<p>The palette is an array of 4-bytes RGBA records.</p> +<p>The palette is an array of 4-byte RGBA records.</p> </td></tr> </table> </td></tr></table> @@ -927,7 +723,7 @@ Defined in FT_IMAGE_H (freetype/ftimage.h). <p>This macro converts four-letter tags to an unsigned long type.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> -<p>Since many 16bit compilers don't like 32bit enumerations, you should redefine this macro in case of problems to something like this:</p> +<p>Since many 16-bit compilers don't like 32-bit enumerations, you should redefine this macro in case of problems to something like this:</p> <pre class="colored"> #define FT_IMAGE_TAG( value, _x1, _x2, _x3, _x4 ) value </pre> @@ -965,7 +761,7 @@ Defined in FT_IMAGE_H (freetype/ftimage.h). <p></p> <table cellpadding=3 border=0> <tr valign=top><td><b>FT_GLYPH_FORMAT_NONE</b></td><td> -<p>The value 0 is reserved.</p> +<p>The value 0 is reserved.</p> </td></tr> <tr valign=top><td colspan=0><b>FT_GLYPH_FORMAT_COMPOSITE</b></td></tr> <tr valign=top><td></td><td> @@ -980,7 +776,7 @@ Defined in FT_IMAGE_H (freetype/ftimage.h). </td></tr> <tr valign=top><td colspan=0><b>FT_GLYPH_FORMAT_PLOTTER</b></td></tr> <tr valign=top><td></td><td> -<p>The glyph image is a vectorial path with no inside and outside contours. Some Type 1 fonts, like those in the Hershey family, contain glyphs in this format. These are described as <a href="ft2-outline_processing.html#FT_Outline">FT_Outline</a>, but FreeType isn't currently capable of rendering them correctly.</p> +<p>The glyph image is a vectorial path with no inside and outside contours. Some Type 1 fonts, like those in the Hershey family, contain glyphs in this format. These are described as <a href="ft2-outline_processing.html#FT_Outline">FT_Outline</a>, but FreeType isn't currently capable of rendering them correctly.</p> </td></tr> </table> </td></tr></table> @@ -1074,15 +870,7 @@ Defined in FT_TYPES_H (freetype/fttypes.h). <table align=center width="75%"><tr><td> <h4><a name="FT_Generic_Finalizer">FT_Generic_Finalizer</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_TYPES_H (freetype/fttypes.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">void</span> (*<b>FT_Generic_Finalizer</b>)(<span class="keyword">void</span>* object); - -</pre></table><br> -<table align=center width="87%"><tr><td> -<p>Describes a function used to destroy the ‘client’ data of any FreeType object. See the description of the <a href="ft2-basic_types.html#FT_Generic">FT_Generic</a> type for details of usage.</p> +<p>Describe a function used to destroy the ‘client’ data of any FreeType object. See the description of the <a href="ft2-basic_types.html#FT_Generic">FT_Generic</a> type for details of usage.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> <p>The address of the FreeType object which is under finalization. Its client data is accessed through its ‘generic’ field.</p> @@ -1148,7 +936,7 @@ Defined in FT_TYPES_H (freetype/fttypes.h). <p>This macro converts four-letter tags which are used to label TrueType tables into an unsigned long to be used within FreeType.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> -<p>The produced values <b>must</b> be 32bit integers. Don't redefine this macro.</p> +<p>The produced values <b>must</b> be 32-bit integers. Don't redefine this macro.</p> </td></tr></table> </td></tr></table> <hr width="75%"> diff --git a/src/3rdparty/freetype/docs/reference/ft2-bdf_fonts.html b/src/3rdparty/freetype/docs/reference/ft2-bdf_fonts.html index 13bab8f..e7bf5a0 100644 --- a/src/3rdparty/freetype/docs/reference/ft2-bdf_fonts.html +++ b/src/3rdparty/freetype/docs/reference/ft2-bdf_fonts.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.3.6 API Reference</title> +<title>FreeType-2.3.9 API Reference</title> <style type="text/css"> body { font-family: Verdana, Geneva, Arial, Helvetica, serif; color: #000000; @@ -31,10 +31,14 @@ </style> </head> <body> -<center><h1>FreeType-2.3.6 API Reference</h1></center> + +<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td> +<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> +<center><h1>FreeType-2.3.9 API Reference</h1></center> <center><h1> -BDF Files +BDF and PCF Files </h1></center> <h2>Synopsis</h2> <table align=center cellspacing=5 cellpadding=0 border=0> @@ -43,7 +47,7 @@ BDF Files </table><br><br> <table align=center width="87%"><tr><td> -<p>This section contains the declaration of BDF specific functions.</p> +<p>This section contains the declaration of functions specific to BDF and PCF fonts.</p> </td></tr></table><br> <table align=center width="75%"><tr><td> <h4><a name="FT_PropertyType">FT_PropertyType</a></h4> @@ -69,7 +73,7 @@ Defined in FT_BDF_H (freetype/ftbdf.h). <p></p> <table cellpadding=3 border=0> <tr valign=top><td><b>BDF_PROPERTY_TYPE_NONE</b></td><td> -<p>Value 0 is used to indicate a missing property.</p> +<p>Value 0 is used to indicate a missing property.</p> </td></tr> <tr valign=top><td><b>BDF_PROPERTY_TYPE_ATOM</b></td><td> <p>Property is a string atom.</p> @@ -93,14 +97,6 @@ Defined in FT_BDF_H (freetype/ftbdf.h). <table align=center width="75%"><tr><td> <h4><a name="BDF_Property">BDF_Property</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_BDF_H (freetype/ftbdf.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">struct</span> BDF_PropertyRec_* <b>BDF_Property</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>A handle to a <a href="ft2-bdf_fonts.html#BDF_PropertyRec">BDF_PropertyRec</a> structure to model a given BDF/PCF property.</p> </td></tr></table><br> </td></tr></table> @@ -169,7 +165,7 @@ Defined in FT_BDF_H (freetype/ftbdf.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Retrieves a BDF font character set identity, according to the BDF specification.</p> +<p>Retrieve a BDF font character set identity, according to the BDF specification.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> <p></p> @@ -183,15 +179,15 @@ Defined in FT_BDF_H (freetype/ftbdf.h). <p></p> <table cellpadding=3 border=0> <tr valign=top><td><b>acharset_encoding</b></td><td> -<p>Charset encoding, as a C string, owned by the face.</p> +<p>Charset encoding, as a C string, owned by the face.</p> </td></tr> <tr valign=top><td><b>acharset_registry</b></td><td> -<p>Charset registry, as a C string, owned by the face.</p> +<p>Charset registry, as a C string, owned by the face.</p> </td></tr> </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>This function only works with BDF faces, returning an error otherwise.</p> @@ -216,7 +212,7 @@ Defined in FT_BDF_H (freetype/ftbdf.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Retrieves a BDF property from a BDF or PCF font file.</p> +<p>Retrieve a BDF property from a BDF or PCF font file.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> <p></p> @@ -238,10 +234,12 @@ Defined in FT_BDF_H (freetype/ftbdf.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>This function works with BDF <i>and</i> PCF fonts. It returns an error otherwise. It also returns an error if the property is not in the font.</p> +<p>A ‘property’ is a either key-value pair within the STARTPROPERTIES ... ENDPROPERTIES block of a BDF font or a key-value pair from the ‘info->props’ array within a ‘FontRec’ structure of a PCF font.</p> +<p>Integer properties are always stored as ‘signed’ within PCF fonts; consequently, <a href="ft2-bdf_fonts.html#FT_PropertyType">BDF_PROPERTY_TYPE_CARDINAL</a> is a possible return value for BDF fonts only.</p> <p>In case of error, ‘aproperty->type’ is always set to <a href="ft2-bdf_fonts.html#FT_PropertyType">BDF_PROPERTY_TYPE_NONE</a>.</p> </td></tr></table> </td></tr></table> diff --git a/src/3rdparty/freetype/docs/reference/ft2-bitmap_handling.html b/src/3rdparty/freetype/docs/reference/ft2-bitmap_handling.html index c22c059..5fd64d7 100644 --- a/src/3rdparty/freetype/docs/reference/ft2-bitmap_handling.html +++ b/src/3rdparty/freetype/docs/reference/ft2-bitmap_handling.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.3.6 API Reference</title> +<title>FreeType-2.3.9 API Reference</title> <style type="text/css"> body { font-family: Verdana, Geneva, Arial, Helvetica, serif; color: #000000; @@ -31,15 +31,19 @@ </style> </head> <body> -<center><h1>FreeType-2.3.6 API Reference</h1></center> + +<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td> +<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> +<center><h1>FreeType-2.3.9 API Reference</h1></center> <center><h1> Bitmap Handling </h1></center> <h2>Synopsis</h2> <table align=center cellspacing=5 cellpadding=0 border=0> -<tr><td></td><td><a href="#FT_Bitmap_New">FT_Bitmap_New</a></td><td></td><td><a href="#FT_Bitmap_Embolden">FT_Bitmap_Embolden</a></td><td></td><td><a href="#FT_Bitmap_Done">FT_Bitmap_Done</a></td></tr> -<tr><td></td><td><a href="#FT_Bitmap_Copy">FT_Bitmap_Copy</a></td><td></td><td><a href="#FT_Bitmap_Convert">FT_Bitmap_Convert</a></td><td></td><td></td></tr> +<tr><td></td><td><a href="#FT_Bitmap_New">FT_Bitmap_New</a></td><td></td><td><a href="#FT_Bitmap_Embolden">FT_Bitmap_Embolden</a></td><td></td><td><a href="#FT_GlyphSlot_Own_Bitmap">FT_GlyphSlot_Own_Bitmap</a></td></tr> +<tr><td></td><td><a href="#FT_Bitmap_Copy">FT_Bitmap_Copy</a></td><td></td><td><a href="#FT_Bitmap_Convert">FT_Bitmap_Convert</a></td><td></td><td><a href="#FT_Bitmap_Done">FT_Bitmap_Done</a></td></tr> </table><br><br> <table align=center width="87%"><tr><td> @@ -87,7 +91,7 @@ Defined in FT_BITMAP_H (freetype/ftbitmap.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Copies an bitmap into another one.</p> +<p>Copy a bitmap into another one.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> <p></p> @@ -109,7 +113,7 @@ Defined in FT_BITMAP_H (freetype/ftbitmap.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -157,11 +161,11 @@ Defined in FT_BITMAP_H (freetype/ftbitmap.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> -<p>The current implementation restricts ‘xStrength’ to be less than or equal to 8 if bitmap is of pixel_mode <a href="ft2-basic_types.html#FT_Pixel_Mode">FT_PIXEL_MODE_MONO</a>.</p> -<p>If you want to embolden the bitmap owned by a <a href="ft2-base_interface.html#FT_GlyphSlotRec">FT_GlyphSlotRec</a>, you should call ‘FT_GlyphSlot_Own_Bitmap’ on the slot first.</p> +<p>The current implementation restricts ‘xStrength’ to be less than or equal to 8 if bitmap is of pixel_mode <a href="ft2-basic_types.html#FT_Pixel_Mode">FT_PIXEL_MODE_MONO</a>.</p> +<p>If you want to embolden the bitmap owned by a <a href="ft2-base_interface.html#FT_GlyphSlotRec">FT_GlyphSlotRec</a>, you should call <a href="ft2-bitmap_handling.html#FT_GlyphSlot_Own_Bitmap">FT_GlyphSlot_Own_Bitmap</a> on the slot first.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -209,7 +213,7 @@ Defined in FT_BITMAP_H (freetype/ftbitmap.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>It is possible to call <a href="ft2-bitmap_handling.html#FT_Bitmap_Convert">FT_Bitmap_Convert</a> multiple times without calling <a href="ft2-bitmap_handling.html#FT_Bitmap_Done">FT_Bitmap_Done</a> (the memory is simply reallocated).</p> @@ -223,6 +227,40 @@ Defined in FT_BITMAP_H (freetype/ftbitmap.h). <td><font size=-2>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> <table align=center width="75%"><tr><td> +<h4><a name="FT_GlyphSlot_Own_Bitmap">FT_GlyphSlot_Own_Bitmap</a></h4> +<table align=center width="87%"><tr><td> +Defined in FT_BITMAP_H (freetype/ftbitmap.h). +</td></tr></table><br> +<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> + + FT_EXPORT( <a href="ft2-basic_types.html#FT_Error">FT_Error</a> ) + <b>FT_GlyphSlot_Own_Bitmap</b>( <a href="ft2-base_interface.html#FT_GlyphSlot">FT_GlyphSlot</a> slot ); + +</pre></table><br> +<table align=center width="87%"><tr><td> +<p>Make sure that a glyph slot owns ‘slot->bitmap’.</p> +</td></tr></table><br> +<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> +<p></p> +<table cellpadding=3 border=0> +<tr valign=top><td><b>slot</b></td><td> +<p>The glyph slot.</p> +</td></tr> +</table> +</td></tr></table> +<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> +<p>FreeType error code. 0 means success.</p> +</td></tr></table> +<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> +<p>This function is to be used in combination with <a href="ft2-bitmap_handling.html#FT_Bitmap_Embolden">FT_Bitmap_Embolden</a>.</p> +</td></tr></table> +</td></tr></table> +<hr width="75%"> +<table align=center width="75%"><tr><td><font size=-2>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td> +<td><font size=-2>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> + +<table align=center width="75%"><tr><td> <h4><a name="FT_Bitmap_Done">FT_Bitmap_Done</a></h4> <table align=center width="87%"><tr><td> Defined in FT_BITMAP_H (freetype/ftbitmap.h). @@ -249,7 +287,7 @@ Defined in FT_BITMAP_H (freetype/ftbitmap.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>The ‘library’ argument is taken to have access to FreeType's memory handling functions.</p> diff --git a/src/3rdparty/freetype/docs/reference/ft2-cache_subsystem.html b/src/3rdparty/freetype/docs/reference/ft2-cache_subsystem.html index 0bce860..8cf3b5a 100644 --- a/src/3rdparty/freetype/docs/reference/ft2-cache_subsystem.html +++ b/src/3rdparty/freetype/docs/reference/ft2-cache_subsystem.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.3.6 API Reference</title> +<title>FreeType-2.3.9 API Reference</title> <style type="text/css"> body { font-family: Verdana, Geneva, Arial, Helvetica, serif; color: #000000; @@ -31,7 +31,11 @@ </style> </head> <body> -<center><h1>FreeType-2.3.6 API Reference</h1></center> + +<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td> +<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> +<center><h1>FreeType-2.3.9 API Reference</h1></center> <center><h1> Cache Sub-System @@ -55,7 +59,7 @@ Cache Sub-System </table><br><br> <table align=center width="87%"><tr><td> -<p>This section describes the FreeType 2 cache sub-system, which is used to limit the number of concurrently opened <a href="ft2-base_interface.html#FT_Face">FT_Face</a> and <a href="ft2-base_interface.html#FT_Size">FT_Size</a> objects, as well as caching information like character maps and glyph images while limiting their maximum memory usage.</p> +<p>This section describes the FreeType 2 cache sub-system, which is used to limit the number of concurrently opened <a href="ft2-base_interface.html#FT_Face">FT_Face</a> and <a href="ft2-base_interface.html#FT_Size">FT_Size</a> objects, as well as caching information like character maps and glyph images while limiting their maximum memory usage.</p> <p>Note that all types and functions begin with the ‘FTC_’ prefix.</p> <p>The cache is highly portable and thus doesn't know anything about the fonts installed on your system, or how to access them. This implies the following scheme:</p> <p>First, available or installed font faces are uniquely identified by <a href="ft2-cache_subsystem.html#FTC_FaceID">FTC_FaceID</a> values, provided to the cache by the client. Note that the cache only stores and compares these values, and doesn't try to interpret them in any way.</p> @@ -72,14 +76,6 @@ Cache Sub-System <table align=center width="75%"><tr><td> <h4><a name="FTC_Manager">FTC_Manager</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_CACHE_H (freetype/ftcache.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">struct</span> FTC_ManagerRec_* <b>FTC_Manager</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>This object corresponds to one instance of the cache-subsystem. It is used to cache one or more <a href="ft2-base_interface.html#FT_Face">FT_Face</a> objects, along with corresponding <a href="ft2-base_interface.html#FT_Size">FT_Size</a> objects.</p> <p>The manager intentionally limits the total number of opened <a href="ft2-base_interface.html#FT_Face">FT_Face</a> and <a href="ft2-base_interface.html#FT_Size">FT_Size</a> objects to control memory usage. See the ‘max_faces’ and ‘max_sizes’ parameters of <a href="ft2-cache_subsystem.html#FTC_Manager_New">FTC_Manager_New</a>.</p> <p>The manager is also used to cache ‘nodes’ of various types while limiting their total memory usage.</p> @@ -94,14 +90,6 @@ Defined in FT_CACHE_H (freetype/ftcache.h). <table align=center width="75%"><tr><td> <h4><a name="FTC_FaceID">FTC_FaceID</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_CACHE_H (freetype/ftcache.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <a href="ft2-basic_types.html#FT_Pointer">FT_Pointer</a> <b>FTC_FaceID</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>An opaque pointer type that is used to identity face objects. The contents of such objects is application-dependent.</p> <p>These pointers are typically used to point to a user-defined structure containing a font file path, and face index.</p> </td></tr></table><br> @@ -157,7 +145,7 @@ Defined in FT_CACHE_H (freetype/ftcache.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>The third parameter ‘req_data’ is the same as the one passed by the client when <a href="ft2-cache_subsystem.html#FTC_Manager_New">FTC_Manager_New</a> is called.</p> @@ -172,15 +160,7 @@ Defined in FT_CACHE_H (freetype/ftcache.h). <table align=center width="75%"><tr><td> <h4><a name="FTC_Node">FTC_Node</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_CACHE_H (freetype/ftcache.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">struct</span> FTC_NodeRec_* <b>FTC_Node</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> -<p>An opaque handle to a cache node object. Each cache node is reference-counted. A node with a count of 0 might be flushed out of a full cache whenever a lookup request is performed.</p> +<p>An opaque handle to a cache node object. Each cache node is reference-counted. A node with a count of 0 might be flushed out of a full cache whenever a lookup request is performed.</p> <p>If you lookup nodes, you have the ability to ‘acquire’ them, i.e., to increment their reference count. This will prevent the node from being flushed out of the cache until you explicitly ‘release’ it (see <a href="ft2-cache_subsystem.html#FTC_Node_Unref">FTC_Node_Unref</a>).</p> <p>See also <a href="ft2-cache_subsystem.html#FTC_SBitCache_Lookup">FTC_SBitCache_Lookup</a> and <a href="ft2-cache_subsystem.html#FTC_ImageCache_Lookup">FTC_ImageCache_Lookup</a>.</p> </td></tr></table><br> @@ -208,7 +188,7 @@ Defined in FT_CACHE_H (freetype/ftcache.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Creates a new cache manager.</p> +<p>Create a new cache manager.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> <p></p> @@ -217,13 +197,13 @@ Defined in FT_CACHE_H (freetype/ftcache.h). <p>The parent FreeType library handle to use.</p> </td></tr> <tr valign=top><td><b>max_faces</b></td><td> -<p>Maximum number of opened <a href="ft2-base_interface.html#FT_Face">FT_Face</a> objects managed by this cache instance. Use 0 for defaults.</p> +<p>Maximum number of opened <a href="ft2-base_interface.html#FT_Face">FT_Face</a> objects managed by this cache instance. Use 0 for defaults.</p> </td></tr> <tr valign=top><td><b>max_sizes</b></td><td> -<p>Maximum number of opened <a href="ft2-base_interface.html#FT_Size">FT_Size</a> objects managed by this cache instance. Use 0 for defaults.</p> +<p>Maximum number of opened <a href="ft2-base_interface.html#FT_Size">FT_Size</a> objects managed by this cache instance. Use 0 for defaults.</p> </td></tr> <tr valign=top><td><b>max_bytes</b></td><td> -<p>Maximum number of bytes to use for cached data nodes. Use 0 for defaults. Note that this value does not account for managed <a href="ft2-base_interface.html#FT_Face">FT_Face</a> and <a href="ft2-base_interface.html#FT_Size">FT_Size</a> objects.</p> +<p>Maximum number of bytes to use for cached data nodes. Use 0 for defaults. Note that this value does not account for managed <a href="ft2-base_interface.html#FT_Face">FT_Face</a> and <a href="ft2-base_interface.html#FT_Size">FT_Size</a> objects.</p> </td></tr> <tr valign=top><td><b>requester</b></td><td> <p>An application-provided callback used to translate face IDs into real <a href="ft2-base_interface.html#FT_Face">FT_Face</a> objects.</p> @@ -237,12 +217,12 @@ Defined in FT_CACHE_H (freetype/ftcache.h). <p></p> <table cellpadding=3 border=0> <tr valign=top><td><b>amanager</b></td><td> -<p>A handle to a new manager object. 0 in case of failure.</p> +<p>A handle to a new manager object. 0 in case of failure.</p> </td></tr> </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -262,7 +242,7 @@ Defined in FT_CACHE_H (freetype/ftcache.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Empties a given cache manager. This simply gets rid of all the currently cached <a href="ft2-base_interface.html#FT_Face">FT_Face</a> and <a href="ft2-base_interface.html#FT_Size">FT_Size</a> objects within the manager.</p> +<p>Empty a given cache manager. This simply gets rid of all the currently cached <a href="ft2-base_interface.html#FT_Face">FT_Face</a> and <a href="ft2-base_interface.html#FT_Size">FT_Size</a> objects within the manager.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>inout</b></em></td></tr><tr><td> <p></p> @@ -290,7 +270,7 @@ Defined in FT_CACHE_H (freetype/ftcache.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Destroys a given manager after emptying it.</p> +<p>Destroy a given manager after emptying it.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> <p></p> @@ -320,7 +300,7 @@ Defined in FT_CACHE_H (freetype/ftcache.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Retrieves the <a href="ft2-base_interface.html#FT_Face">FT_Face</a> object that corresponds to a given face ID through a cache manager.</p> +<p>Retrieve the <a href="ft2-base_interface.html#FT_Face">FT_Face</a> object that corresponds to a given face ID through a cache manager.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> <p></p> @@ -342,7 +322,7 @@ Defined in FT_CACHE_H (freetype/ftcache.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>The returned <a href="ft2-base_interface.html#FT_Face">FT_Face</a> object is always owned by the manager. You should never try to discard it yourself.</p> @@ -395,10 +375,10 @@ Defined in FT_CACHE_H (freetype/ftcache.h). <p>A Boolean. If 1, the ‘width’ and ‘height’ fields are interpreted as integer pixel character sizes. Otherwise, they are expressed as 1/64th of points.</p> </td></tr> <tr valign=top><td><b>x_res</b></td><td> -<p>Only used when ‘pixel’ is value 0 to indicate the horizontal resolution in dpi.</p> +<p>Only used when ‘pixel’ is value 0 to indicate the horizontal resolution in dpi.</p> </td></tr> <tr valign=top><td><b>y_res</b></td><td> -<p>Only used when ‘pixel’ is value 0 to indicate the vertical resolution in dpi.</p> +<p>Only used when ‘pixel’ is value 0 to indicate the vertical resolution in dpi.</p> </td></tr> </table> </td></tr></table> @@ -414,14 +394,6 @@ Defined in FT_CACHE_H (freetype/ftcache.h). <table align=center width="75%"><tr><td> <h4><a name="FTC_Scaler">FTC_Scaler</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_CACHE_H (freetype/ftcache.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">struct</span> FTC_ScalerRec_* <b>FTC_Scaler</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>A handle to an <a href="ft2-cache_subsystem.html#FTC_ScalerRec">FTC_ScalerRec</a> structure.</p> </td></tr></table><br> </td></tr></table> @@ -466,7 +438,7 @@ Defined in FT_CACHE_H (freetype/ftcache.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>The returned <a href="ft2-base_interface.html#FT_Size">FT_Size</a> object is always owned by the manager. You should never try to discard it by yourself.</p> @@ -553,14 +525,6 @@ Defined in FT_CACHE_H (freetype/ftcache.h). <table align=center width="75%"><tr><td> <h4><a name="FTC_CMapCache">FTC_CMapCache</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_CACHE_H (freetype/ftcache.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">struct</span> FTC_CMapCacheRec_* <b>FTC_CMapCache</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>An opaque handle used to model a charmap cache. This cache is to hold character codes -> glyph indices mappings.</p> </td></tr></table><br> </td></tr></table> @@ -601,7 +565,7 @@ Defined in FT_CACHE_H (freetype/ftcache.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>Like all other caches, this one will be destroyed with the cache manager.</p> @@ -639,7 +603,7 @@ Defined in FT_CACHE_H (freetype/ftcache.h). <p>The source face ID.</p> </td></tr> <tr valign=top><td><b>cmap_index</b></td><td> -<p>The index of the charmap in the source face.</p> +<p>The index of the charmap in the source face. Any negative value means to use the cache <a href="ft2-base_interface.html#FT_Face">FT_Face</a>'s default charmap.</p> </td></tr> <tr valign=top><td><b>char_code</b></td><td> <p>The character code (in the corresponding charmap).</p> @@ -647,7 +611,7 @@ Defined in FT_CACHE_H (freetype/ftcache.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>Glyph index. 0 means ‘no glyph’.</p> +<p>Glyph index. 0 means ‘no glyph’.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -701,14 +665,6 @@ Defined in FT_CACHE_H (freetype/ftcache.h). <table align=center width="75%"><tr><td> <h4><a name="FTC_ImageType">FTC_ImageType</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_CACHE_H (freetype/ftcache.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">struct</span> FTC_ImageTypeRec_* <b>FTC_ImageType</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>A handle to an <a href="ft2-cache_subsystem.html#FTC_ImageTypeRec">FTC_ImageTypeRec</a> structure.</p> </td></tr></table><br> </td></tr></table> @@ -720,14 +676,6 @@ Defined in FT_CACHE_H (freetype/ftcache.h). <table align=center width="75%"><tr><td> <h4><a name="FTC_ImageCache">FTC_ImageCache</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_CACHE_H (freetype/ftcache.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">struct</span> FTC_ImageCacheRec_* <b>FTC_ImageCache</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>A handle to an glyph image cache object. They are designed to hold many distinct glyph images while not exceeding a certain memory threshold.</p> </td></tr></table><br> </td></tr></table> @@ -749,7 +697,7 @@ Defined in FT_CACHE_H (freetype/ftcache.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Creates a new glyph image cache.</p> +<p>Create a new glyph image cache.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> <p></p> @@ -768,7 +716,7 @@ Defined in FT_CACHE_H (freetype/ftcache.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -792,7 +740,7 @@ Defined in FT_CACHE_H (freetype/ftcache.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Retrieves a given glyph image from a glyph image cache.</p> +<p>Retrieve a given glyph image from a glyph image cache.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> <p></p> @@ -812,7 +760,7 @@ Defined in FT_CACHE_H (freetype/ftcache.h). <p></p> <table cellpadding=3 border=0> <tr valign=top><td><b>aglyph</b></td><td> -<p>The corresponding <a href="ft2-glyph_management.html#FT_Glyph">FT_Glyph</a> object. 0 in case of failure.</p> +<p>The corresponding <a href="ft2-glyph_management.html#FT_Glyph">FT_Glyph</a> object. 0 in case of failure.</p> </td></tr> <tr valign=top><td><b>anode</b></td><td> <p>Used to return the address of of the corresponding cache node after incrementing its reference count (see note below).</p> @@ -820,7 +768,7 @@ Defined in FT_CACHE_H (freetype/ftcache.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>The returned glyph is owned and managed by the glyph image cache. Never try to transform or discard it manually! You can however create a copy with <a href="ft2-glyph_management.html#FT_Glyph_Copy">FT_Glyph_Copy</a> and modify the new one.</p> @@ -873,7 +821,7 @@ Defined in FT_CACHE_H (freetype/ftcache.h). <p></p> <table cellpadding=3 border=0> <tr valign=top><td><b>aglyph</b></td><td> -<p>The corresponding <a href="ft2-glyph_management.html#FT_Glyph">FT_Glyph</a> object. 0 in case of failure.</p> +<p>The corresponding <a href="ft2-glyph_management.html#FT_Glyph">FT_Glyph</a> object. 0 in case of failure.</p> </td></tr> <tr valign=top><td><b>anode</b></td><td> <p>Used to return the address of of the corresponding cache node after incrementing its reference count (see note below).</p> @@ -881,12 +829,13 @@ Defined in FT_CACHE_H (freetype/ftcache.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>The returned glyph is owned and managed by the glyph image cache. Never try to transform or discard it manually! You can however create a copy with <a href="ft2-glyph_management.html#FT_Glyph_Copy">FT_Glyph_Copy</a> and modify the new one.</p> <p>If ‘anode’ is <i>not</i> NULL, it receives the address of the cache node containing the glyph image, after increasing its reference count. This ensures that the node (as well as the <a href="ft2-glyph_management.html#FT_Glyph">FT_Glyph</a>) will always be kept in the cache until you call <a href="ft2-cache_subsystem.html#FTC_Node_Unref">FTC_Node_Unref</a> to ‘release’ it.</p> <p>If ‘anode’ is NULL, the cache node is left unchanged, which means that the <a href="ft2-glyph_management.html#FT_Glyph">FT_Glyph</a> could be flushed out of the cache on the next call to one of the caching sub-system APIs. Don't assume that it is persistent!</p> +<p>Calls to <a href="ft2-base_interface.html#FT_Set_Char_Size">FT_Set_Char_Size</a> and friends have no effect on cached glyphs; you should always use the FreeType cache API instead.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -897,14 +846,6 @@ Defined in FT_CACHE_H (freetype/ftcache.h). <table align=center width="75%"><tr><td> <h4><a name="FTC_SBit">FTC_SBit</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_CACHE_H (freetype/ftcache.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">struct</span> FTC_SBitRec_* <b>FTC_SBit</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>A handle to a small bitmap descriptor. See the <a href="ft2-cache_subsystem.html#FTC_SBitRec">FTC_SBitRec</a> structure for details.</p> </td></tr></table><br> </td></tr></table> @@ -954,13 +895,13 @@ Defined in FT_CACHE_H (freetype/ftcache.h). <p>The horizontal distance from the pen position to the left bitmap border (a.k.a. ‘left side bearing’, or ‘lsb’).</p> </td></tr> <tr valign=top><td><b>top</b></td><td> -<p>The vertical distance from the pen position (on the baseline) to the upper bitmap border (a.k.a. ‘top side bearing’). The distance is positive for upwards Y coordinates.</p> +<p>The vertical distance from the pen position (on the baseline) to the upper bitmap border (a.k.a. ‘top side bearing’). The distance is positive for upwards y coordinates.</p> </td></tr> <tr valign=top><td><b>format</b></td><td> <p>The format of the glyph bitmap (monochrome or gray).</p> </td></tr> <tr valign=top><td><b>max_grays</b></td><td> -<p>Maximum gray level value (in the range 1 to 255).</p> +<p>Maximum gray level value (in the range 1 to 255).</p> </td></tr> <tr valign=top><td><b>pitch</b></td><td> <p>The number of bytes per bitmap line. May be positive or negative.</p> @@ -985,14 +926,6 @@ Defined in FT_CACHE_H (freetype/ftcache.h). <table align=center width="75%"><tr><td> <h4><a name="FTC_SBitCache">FTC_SBitCache</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_CACHE_H (freetype/ftcache.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">struct</span> FTC_SBitCacheRec_* <b>FTC_SBitCache</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>A handle to a small bitmap cache. These are special cache objects used to store small glyph bitmaps (and anti-aliased pixmaps) in a much more efficient way than the traditional glyph image cache implemented by <a href="ft2-cache_subsystem.html#FTC_ImageCache">FTC_ImageCache</a>.</p> </td></tr></table><br> </td></tr></table> @@ -1014,7 +947,7 @@ Defined in FT_CACHE_H (freetype/ftcache.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Creates a new cache to store small glyph bitmaps.</p> +<p>Create a new cache to store small glyph bitmaps.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> <p></p> @@ -1033,7 +966,7 @@ Defined in FT_CACHE_H (freetype/ftcache.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -1057,7 +990,7 @@ Defined in FT_CACHE_H (freetype/ftcache.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Looks up a given small glyph bitmap in a given sbit cache and ‘lock’ it to prevent its flushing from the cache until needed.</p> +<p>Look up a given small glyph bitmap in a given sbit cache and ‘lock’ it to prevent its flushing from the cache until needed.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> <p></p> @@ -1085,11 +1018,11 @@ Defined in FT_CACHE_H (freetype/ftcache.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>The small bitmap descriptor and its bit buffer are owned by the cache and should never be freed by the application. They might as well disappear from memory on the next cache lookup, so don't treat them as persistent data.</p> -<p>The descriptor's ‘buffer’ field is set to 0 to indicate a missing glyph bitmap.</p> +<p>The descriptor's ‘buffer’ field is set to 0 to indicate a missing glyph bitmap.</p> <p>If ‘anode’ is <i>not</i> NULL, it receives the address of the cache node containing the bitmap, after increasing its reference count. This ensures that the node (as well as the image) will always be kept in the cache until you call <a href="ft2-cache_subsystem.html#FTC_Node_Unref">FTC_Node_Unref</a> to ‘release’ it.</p> <p>If ‘anode’ is NULL, the cache node is left unchanged, which means that the bitmap could be flushed out of the cache on the next call to one of the caching sub-system APIs. Don't assume that it is persistent!</p> </td></tr></table> @@ -1147,11 +1080,11 @@ Defined in FT_CACHE_H (freetype/ftcache.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>The small bitmap descriptor and its bit buffer are owned by the cache and should never be freed by the application. They might as well disappear from memory on the next cache lookup, so don't treat them as persistent data.</p> -<p>The descriptor's ‘buffer’ field is set to 0 to indicate a missing glyph bitmap.</p> +<p>The descriptor's ‘buffer’ field is set to 0 to indicate a missing glyph bitmap.</p> <p>If ‘anode’ is <i>not</i> NULL, it receives the address of the cache node containing the bitmap, after increasing its reference count. This ensures that the node (as well as the image) will always be kept in the cache until you call <a href="ft2-cache_subsystem.html#FTC_Node_Unref">FTC_Node_Unref</a> to ‘release’ it.</p> <p>If ‘anode’ is NULL, the cache node is left unchanged, which means that the bitmap could be flushed out of the cache on the next call to one of the caching sub-system APIs. Don't assume that it is persistent!</p> </td></tr></table> diff --git a/src/3rdparty/freetype/docs/reference/ft2-cid_fonts.html b/src/3rdparty/freetype/docs/reference/ft2-cid_fonts.html index e94f2f6..2749e55 100644 --- a/src/3rdparty/freetype/docs/reference/ft2-cid_fonts.html +++ b/src/3rdparty/freetype/docs/reference/ft2-cid_fonts.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.3.6 API Reference</title> +<title>FreeType-2.3.9 API Reference</title> <style type="text/css"> body { font-family: Verdana, Geneva, Arial, Helvetica, serif; color: #000000; @@ -31,7 +31,11 @@ </style> </head> <body> -<center><h1>FreeType-2.3.6 API Reference</h1></center> + +<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td> +<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> +<center><h1>FreeType-2.3.9 API Reference</h1></center> <center><h1> CID Fonts @@ -39,6 +43,8 @@ CID Fonts <h2>Synopsis</h2> <table align=center cellspacing=5 cellpadding=0 border=0> <tr><td></td><td><a href="#FT_Get_CID_Registry_Ordering_Supplement">FT_Get_CID_Registry_Ordering_Supplement</a></td></tr> +<tr><td></td><td><a href="#FT_Get_CID_Is_Internally_CID_Keyed">FT_Get_CID_Is_Internally_CID_Keyed</a></td></tr> +<tr><td></td><td><a href="#FT_Get_CID_From_Glyph_Index">FT_Get_CID_From_Glyph_Index</a></td></tr> </table><br><br> <table align=center width="87%"><tr><td> @@ -73,10 +79,10 @@ Defined in FT_CID_H (freetype/ftcid.h). <p></p> <table cellpadding=3 border=0> <tr valign=top><td><b>registry</b></td><td> -<p>The registry, as a C string, owned by the face.</p> +<p>The registry, as a C string, owned by the face.</p> </td></tr> <tr valign=top><td><b>ordering</b></td><td> -<p>The ordering, as a C string, owned by the face.</p> +<p>The ordering, as a C string, owned by the face.</p> </td></tr> <tr valign=top><td><b>supplement</b></td><td> <p>The supplement.</p> @@ -84,7 +90,7 @@ Defined in FT_CID_H (freetype/ftcid.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>This function only works with CID faces, returning an error otherwise.</p> @@ -98,5 +104,101 @@ Defined in FT_CID_H (freetype/ftcid.h). <td width="100%"></td> <td><font size=-2>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> +<table align=center width="75%"><tr><td> +<h4><a name="FT_Get_CID_Is_Internally_CID_Keyed">FT_Get_CID_Is_Internally_CID_Keyed</a></h4> +<table align=center width="87%"><tr><td> +Defined in FT_CID_H (freetype/ftcid.h). +</td></tr></table><br> +<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> + + FT_EXPORT( <a href="ft2-basic_types.html#FT_Error">FT_Error</a> ) + <b>FT_Get_CID_Is_Internally_CID_Keyed</b>( <a href="ft2-base_interface.html#FT_Face">FT_Face</a> face, + <a href="ft2-basic_types.html#FT_Bool">FT_Bool</a> *is_cid ); + +</pre></table><br> +<table align=center width="87%"><tr><td> +<p>Retrieve the type of the input face, CID keyed or not. In constrast to the <a href="ft2-base_interface.html#FT_IS_CID_KEYED">FT_IS_CID_KEYED</a> macro this function returns successfully also for CID-keyed fonts in an SNFT wrapper.</p> +</td></tr></table><br> +<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> +<p></p> +<table cellpadding=3 border=0> +<tr valign=top><td><b>face</b></td><td> +<p>A handle to the input face.</p> +</td></tr> +</table> +</td></tr></table> +<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>output</b></em></td></tr><tr><td> +<p></p> +<table cellpadding=3 border=0> +<tr valign=top><td><b>is_cid</b></td><td> +<p>The type of the face as an <a href="ft2-basic_types.html#FT_Bool">FT_Bool</a>.</p> +</td></tr> +</table> +</td></tr></table> +<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> +<p>FreeType error code. 0 means success.</p> +</td></tr></table> +<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> +<p>This function only works with CID faces and OpenType fonts, returning an error otherwise.</p> +</td></tr></table> +<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>since</b></em></td></tr><tr><td> +<p>2.3.9</p> +</td></tr></table> +</td></tr></table> +<hr width="75%"> +<table align=center width="75%"><tr><td><font size=-2>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td> +<td><font size=-2>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> + +<table align=center width="75%"><tr><td> +<h4><a name="FT_Get_CID_From_Glyph_Index">FT_Get_CID_From_Glyph_Index</a></h4> +<table align=center width="87%"><tr><td> +Defined in FT_CID_H (freetype/ftcid.h). +</td></tr></table><br> +<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> + + FT_EXPORT( <a href="ft2-basic_types.html#FT_Error">FT_Error</a> ) + <b>FT_Get_CID_From_Glyph_Index</b>( <a href="ft2-base_interface.html#FT_Face">FT_Face</a> face, + <a href="ft2-basic_types.html#FT_UInt">FT_UInt</a> glyph_index, + <a href="ft2-basic_types.html#FT_UInt">FT_UInt</a> *cid ); + +</pre></table><br> +<table align=center width="87%"><tr><td> +<p>Retrieve the CID of the input glyph index.</p> +</td></tr></table><br> +<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> +<p></p> +<table cellpadding=3 border=0> +<tr valign=top><td><b>face</b></td><td> +<p>A handle to the input face.</p> +</td></tr> +<tr valign=top><td><b>glyph_index</b></td><td> +<p>The input glyph index.</p> +</td></tr> +</table> +</td></tr></table> +<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>output</b></em></td></tr><tr><td> +<p></p> +<table cellpadding=3 border=0> +<tr valign=top><td><b>cid</b></td><td> +<p>The CID as an <a href="ft2-basic_types.html#FT_UInt">FT_UInt</a>.</p> +</td></tr> +</table> +</td></tr></table> +<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> +<p>FreeType error code. 0 means success.</p> +</td></tr></table> +<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> +<p>This function only works with CID faces and OpenType fonts, returning an error otherwise.</p> +</td></tr></table> +<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>since</b></em></td></tr><tr><td> +<p>2.3.9</p> +</td></tr></table> +</td></tr></table> +<hr width="75%"> +<table align=center width="75%"><tr><td><font size=-2>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td> +<td><font size=-2>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> + </body> </html> diff --git a/src/3rdparty/freetype/docs/reference/ft2-computations.html b/src/3rdparty/freetype/docs/reference/ft2-computations.html index de05104..6081390 100644 --- a/src/3rdparty/freetype/docs/reference/ft2-computations.html +++ b/src/3rdparty/freetype/docs/reference/ft2-computations.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.3.6 API Reference</title> +<title>FreeType-2.3.9 API Reference</title> <style type="text/css"> body { font-family: Verdana, Geneva, Arial, Helvetica, serif; color: #000000; @@ -31,7 +31,11 @@ </style> </head> <body> -<center><h1>FreeType-2.3.6 API Reference</h1></center> + +<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td> +<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> +<center><h1>FreeType-2.3.9 API Reference</h1></center> <center><h1> Computations @@ -160,7 +164,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <p>The result of ‘(a*0x10000)/b’.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> -<p>The optimization for FT_DivFix() is simple: If (a << 16) fits in 32 bits, then the division is computed directly. Otherwise, we use a specialized version of <a href="ft2-computations.html#FT_MulDiv">FT_MulDiv</a>.</p> +<p>The optimization for FT_DivFix() is simple: If (a << 16) fits in 32 bits, then the division is computed directly. Otherwise, we use a specialized version of <a href="ft2-computations.html#FT_MulDiv">FT_MulDiv</a>.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -314,7 +318,7 @@ Defined in FT_GLYPH_H (freetype/ftglyph.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Performs the matrix operation ‘b = a*b’.</p> +<p>Perform the matrix operation ‘b = a*b’.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> <p></p> @@ -353,7 +357,7 @@ Defined in FT_GLYPH_H (freetype/ftglyph.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Inverts a 2x2 matrix. Returns an error if it can't be inverted.</p> +<p>Invert a 2x2 matrix. Return an error if it can't be inverted.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>inout</b></em></td></tr><tr><td> <p></p> @@ -364,7 +368,7 @@ Defined in FT_GLYPH_H (freetype/ftglyph.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -375,14 +379,6 @@ Defined in FT_GLYPH_H (freetype/ftglyph.h). <table align=center width="75%"><tr><td> <h4><a name="FT_Angle">FT_Angle</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <a href="ft2-basic_types.html#FT_Fixed">FT_Fixed</a> <b>FT_Angle</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>This type is used to model angle values in FreeType. Note that the angle is a 16.16 fixed float value expressed in degrees.</p> </td></tr></table><br> </td></tr></table> @@ -394,14 +390,6 @@ Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h). <table align=center width="75%"><tr><td> <h4><a name="FT_ANGLE_PI">FT_ANGLE_PI</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_ANGLE_PI</b> ( 180L << 16 ) - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>The angle pi expressed in <a href="ft2-computations.html#FT_Angle">FT_Angle</a> units.</p> </td></tr></table><br> </td></tr></table> @@ -413,14 +401,6 @@ Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h). <table align=center width="75%"><tr><td> <h4><a name="FT_ANGLE_2PI">FT_ANGLE_2PI</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_ANGLE_2PI</b> ( <a href="ft2-computations.html#FT_ANGLE_PI">FT_ANGLE_PI</a> * 2 ) - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>The angle 2*pi expressed in <a href="ft2-computations.html#FT_Angle">FT_Angle</a> units.</p> </td></tr></table><br> </td></tr></table> @@ -432,14 +412,6 @@ Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h). <table align=center width="75%"><tr><td> <h4><a name="FT_ANGLE_PI2">FT_ANGLE_PI2</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_ANGLE_PI2</b> ( <a href="ft2-computations.html#FT_ANGLE_PI">FT_ANGLE_PI</a> / 2 ) - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>The angle pi/2 expressed in <a href="ft2-computations.html#FT_Angle">FT_Angle</a> units.</p> </td></tr></table><br> </td></tr></table> @@ -451,14 +423,6 @@ Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h). <table align=center width="75%"><tr><td> <h4><a name="FT_ANGLE_PI4">FT_ANGLE_PI4</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_ANGLE_PI4</b> ( <a href="ft2-computations.html#FT_ANGLE_PI">FT_ANGLE_PI</a> / 4 ) - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>The angle pi/4 expressed in <a href="ft2-computations.html#FT_Angle">FT_Angle</a> units.</p> </td></tr></table><br> </td></tr></table> diff --git a/src/3rdparty/freetype/docs/reference/ft2-font_formats.html b/src/3rdparty/freetype/docs/reference/ft2-font_formats.html index d1ef02b..589d749 100644 --- a/src/3rdparty/freetype/docs/reference/ft2-font_formats.html +++ b/src/3rdparty/freetype/docs/reference/ft2-font_formats.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.3.6 API Reference</title> +<title>FreeType-2.3.9 API Reference</title> <style type="text/css"> body { font-family: Verdana, Geneva, Arial, Helvetica, serif; color: #000000; @@ -31,7 +31,11 @@ </style> </head> <body> -<center><h1>FreeType-2.3.6 API Reference</h1></center> + +<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td> +<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> +<center><h1>FreeType-2.3.9 API Reference</h1></center> <center><h1> Font Formats @@ -56,7 +60,7 @@ Defined in FT_XFREE86_H (freetype/ftxf86.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Return a string describing the format of a given face, using values which can be used as an X11 FONT_PROPERTY. Possible values are ‘TrueType’, ‘Type 1’, ‘BDF’, ‘PCF’, ‘Type 42’, ‘CID Type 1’, ‘CFF’, ‘PFR’, and ‘Windows FNT’.</p> +<p>Return a string describing the format of a given face, using values which can be used as an X11 FONT_PROPERTY. Possible values are ‘TrueType’, ‘Type 1’, ‘BDF’, ‘PCF’, ‘Type 42’, ‘CID Type 1’, ‘CFF’, ‘PFR’, and ‘Windows FNT’.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> <p></p> diff --git a/src/3rdparty/freetype/docs/reference/ft2-gasp_table.html b/src/3rdparty/freetype/docs/reference/ft2-gasp_table.html index 3d54792..2f0d2f5 100644 --- a/src/3rdparty/freetype/docs/reference/ft2-gasp_table.html +++ b/src/3rdparty/freetype/docs/reference/ft2-gasp_table.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.3.6 API Reference</title> +<title>FreeType-2.3.9 API Reference</title> <style type="text/css"> body { font-family: Verdana, Geneva, Arial, Helvetica, serif; color: #000000; @@ -31,7 +31,11 @@ </style> </head> <body> -<center><h1>FreeType-2.3.6 API Reference</h1></center> + +<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td> +<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> +<center><h1>FreeType-2.3.9 API Reference</h1></center> <center><h1> Gasp Table @@ -42,7 +46,7 @@ Gasp Table </table><br><br> <table align=center width="87%"><tr><td> -<p>The function <a href="ft2-gasp_table.html#FT_Get_Gasp">FT_Get_Gasp</a> can be used to query a TrueType or OpenType font for specific entries in their ‘gasp’ table, if any. This is mainly useful when implementing native TrueType hinting with the bytecode interpreter to duplicate the Windows text rendering results.</p> +<p>The function <a href="ft2-gasp_table.html#FT_Get_Gasp">FT_Get_Gasp</a> can be used to query a TrueType or OpenType font for specific entries in its ‘gasp’ table, if any. This is mainly useful when implementing native TrueType hinting with the bytecode interpreter to duplicate the Windows text rendering results.</p> </td></tr></table><br> <table align=center width="75%"><tr><td> <h4><a name="FT_GASP_XXX">FT_GASP_XXX</a></h4> diff --git a/src/3rdparty/freetype/docs/reference/ft2-glyph_management.html b/src/3rdparty/freetype/docs/reference/ft2-glyph_management.html index aff9422..79fc5b6 100644 --- a/src/3rdparty/freetype/docs/reference/ft2-glyph_management.html +++ b/src/3rdparty/freetype/docs/reference/ft2-glyph_management.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.3.6 API Reference</title> +<title>FreeType-2.3.9 API Reference</title> <style type="text/css"> body { font-family: Verdana, Geneva, Arial, Helvetica, serif; color: #000000; @@ -31,7 +31,11 @@ </style> </head> <body> -<center><h1>FreeType-2.3.6 API Reference</h1></center> + +<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td> +<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> +<center><h1>FreeType-2.3.9 API Reference</h1></center> <center><h1> Glyph Management @@ -51,14 +55,6 @@ Glyph Management <table align=center width="75%"><tr><td> <h4><a name="FT_Glyph">FT_Glyph</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_GLYPH_H (freetype/ftglyph.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_GlyphRec_* <b>FT_Glyph</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>Handle to an object used to model generic glyph images. It is a pointer to the <a href="ft2-glyph_management.html#FT_GlyphRec">FT_GlyphRec</a> structure and can contain a glyph bitmap or pointer.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> @@ -116,14 +112,6 @@ Defined in FT_GLYPH_H (freetype/ftglyph.h). <table align=center width="75%"><tr><td> <h4><a name="FT_BitmapGlyph">FT_BitmapGlyph</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_GLYPH_H (freetype/ftglyph.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_BitmapGlyphRec_* <b>FT_BitmapGlyph</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>A handle to an object used to model a bitmap glyph image. This is a sub-class of <a href="ft2-glyph_management.html#FT_Glyph">FT_Glyph</a>, and a pointer to <a href="ft2-glyph_management.html#FT_BitmapGlyphRec">FT_BitmapGlyphRec</a>.</p> </td></tr></table><br> </td></tr></table> @@ -162,7 +150,7 @@ Defined in FT_GLYPH_H (freetype/ftglyph.h). <p>The left-side bearing, i.e., the horizontal distance from the current pen position to the left border of the glyph bitmap.</p> </td></tr> <tr valign=top><td><b>top</b></td><td> -<p>The top-side bearing, i.e., the vertical distance from the current pen position to the top border of the glyph bitmap. This distance is positive for upwards-y!</p> +<p>The top-side bearing, i.e., the vertical distance from the current pen position to the top border of the glyph bitmap. This distance is positive for upwards y!</p> </td></tr> <tr valign=top><td><b>bitmap</b></td><td> <p>A descriptor for the bitmap.</p> @@ -182,14 +170,6 @@ Defined in FT_GLYPH_H (freetype/ftglyph.h). <table align=center width="75%"><tr><td> <h4><a name="FT_OutlineGlyph">FT_OutlineGlyph</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_GLYPH_H (freetype/ftglyph.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_OutlineGlyphRec_* <b>FT_OutlineGlyph</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>A handle to an object used to model an outline glyph image. This is a sub-class of <a href="ft2-glyph_management.html#FT_Glyph">FT_Glyph</a>, and a pointer to <a href="ft2-glyph_management.html#FT_OutlineGlyphRec">FT_OutlineGlyphRec</a>.</p> </td></tr></table><br> </td></tr></table> @@ -228,7 +208,7 @@ Defined in FT_GLYPH_H (freetype/ftglyph.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> -<p>You can typecast a <a href="ft2-glyph_management.html#FT_Glyph">FT_Glyph</a> to <a href="ft2-glyph_management.html#FT_OutlineGlyph">FT_OutlineGlyph</a> if you have ‘glyph->format == FT_GLYPH_FORMAT_OUTLINE’. This lets you access the outline's content easily.</p> +<p>You can typecast an <a href="ft2-glyph_management.html#FT_Glyph">FT_Glyph</a> to <a href="ft2-glyph_management.html#FT_OutlineGlyph">FT_OutlineGlyph</a> if you have ‘glyph->format == FT_GLYPH_FORMAT_OUTLINE’. This lets you access the outline's content easily.</p> <p>As the outline is extracted from a glyph slot, its coordinates are expressed normally in 26.6 pixels, unless the flag <a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_NO_SCALE</a> was used in <a href="ft2-base_interface.html#FT_Load_Glyph">FT_Load_Glyph</a>() or <a href="ft2-base_interface.html#FT_Load_Char">FT_Load_Char</a>().</p> <p>The outline's tables are always owned by the object and are destroyed with it.</p> </td></tr></table> @@ -251,7 +231,7 @@ Defined in FT_GLYPH_H (freetype/ftglyph.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>A function used to extract a glyph image from a slot.</p> +<p>A function used to extract a glyph image from a slot. Note that the created <a href="ft2-glyph_management.html#FT_Glyph">FT_Glyph</a> object must be released with <a href="ft2-glyph_management.html#FT_Done_Glyph">FT_Done_Glyph</a>.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> <p></p> @@ -270,7 +250,7 @@ Defined in FT_GLYPH_H (freetype/ftglyph.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -305,12 +285,12 @@ Defined in FT_GLYPH_H (freetype/ftglyph.h). <p></p> <table cellpadding=3 border=0> <tr valign=top><td><b>target</b></td><td> -<p>A handle to the target glyph object. 0 in case of error.</p> +<p>A handle to the target glyph object. 0 in case of error.</p> </td></tr> </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -332,7 +312,7 @@ Defined in FT_GLYPH_H (freetype/ftglyph.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Transforms a glyph image if its format is scalable.</p> +<p>Transform a glyph image if its format is scalable.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>inout</b></em></td></tr><tr><td> <p></p> @@ -494,7 +474,7 @@ Defined in FT_GLYPH_H (freetype/ftglyph.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> -<p>Coordinates are relative to the glyph origin, using the Y-upwards convention.</p> +<p>Coordinates are relative to the glyph origin, using the y upwards convention.</p> <p>If the glyph has been loaded with <a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_NO_SCALE</a>, ‘bbox_mode’ must be set to <a href="ft2-glyph_management.html#FT_Glyph_BBox_Mode">FT_GLYPH_BBOX_UNSCALED</a> to get unscaled font units in 26.6 pixel format. The value <a href="ft2-glyph_management.html#FT_Glyph_BBox_Mode">FT_GLYPH_BBOX_SUBPIXELS</a> is another name for this constant.</p> <p>Note that the maximum coordinates are exclusive, which means that one can compute the width and height of the glyph image (be it in integer or 26.6 pixels) as:</p> <pre class="colored"> @@ -532,7 +512,7 @@ Defined in FT_GLYPH_H (freetype/ftglyph.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Converts a given glyph object to a bitmap glyph object.</p> +<p>Convert a given glyph object to a bitmap glyph object.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>inout</b></em></td></tr><tr><td> <p></p> @@ -546,10 +526,10 @@ Defined in FT_GLYPH_H (freetype/ftglyph.h). <p></p> <table cellpadding=3 border=0> <tr valign=top><td><b>render_mode</b></td><td> -<p>An enumeration that describe how the data is rendered.</p> +<p>An enumeration that describes how the data is rendered.</p> </td></tr> <tr valign=top><td><b>origin</b></td><td> -<p>A pointer to a vector used to translate the glyph image before rendering. Can be 0 (if no translation). The origin is expressed in 26.6 pixels.</p> +<p>A pointer to a vector used to translate the glyph image before rendering. Can be 0 (if no translation). The origin is expressed in 26.6 pixels.</p> </td></tr> <tr valign=top><td><b>destroy</b></td><td> <p>A boolean that indicates that the original glyph image should be destroyed by this function. It is never destroyed in case of error.</p> @@ -557,11 +537,12 @@ Defined in FT_GLYPH_H (freetype/ftglyph.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> +<p>This function does nothing if the glyph format isn't scalable.</p> <p>The glyph image is translated with the ‘origin’ vector before rendering.</p> -<p>The first parameter is a pointer to an <a href="ft2-glyph_management.html#FT_Glyph">FT_Glyph</a> handle, that will be replaced by this function. Typically, you would use (omitting error handling):</p> +<p>The first parameter is a pointer to an <a href="ft2-glyph_management.html#FT_Glyph">FT_Glyph</a> handle, that will be <i>replaced</i> by this function (with newly allocated data). Typically, you would use (omitting error handling):</p> <p></p> <pre class="colored"> FT_Glyph glyph; @@ -574,12 +555,12 @@ Defined in FT_GLYPH_H (freetype/ftglyph.h). // extract glyph image error = FT_Get_Glyph( face->glyph, &glyph ); - // convert to a bitmap (default render mode + destroy old) + // convert to a bitmap (default render mode + destroying old) if ( glyph->format != FT_GLYPH_FORMAT_BITMAP ) { error = FT_Glyph_To_Bitmap( &glyph, FT_RENDER_MODE_DEFAULT, 0, 1 ); - if ( error ) // glyph unchanged + if ( error ) // `glyph' unchanged ... } @@ -593,7 +574,41 @@ Defined in FT_GLYPH_H (freetype/ftglyph.h). FT_Done_Glyph( glyph ); </pre> <p></p> -<p>This function does nothing if the glyph format isn't scalable.</p> +<p>Here another example, again without error handling:</p> +<p></p> +<pre class="colored"> + FT_Glyph glyphs[MAX_GLYPHS] + + + ... + + for ( idx = 0; i < MAX_GLYPHS; i++ ) + error = FT_Load_Glyph( face, idx, FT_LOAD_DEFAULT ) || + FT_Get_Glyph ( face->glyph, &glyph[idx] ); + + ... + + for ( idx = 0; i < MAX_GLYPHS; i++ ) + { + FT_Glyph bitmap = glyphs[idx]; + + + ... + + // after this call, `bitmap' no longer points into + // the `glyphs' array (and the old value isn't destroyed) + FT_Glyph_To_Bitmap( &bitmap, FT_RENDER_MODE_MONO, 0, 0 ); + + ... + + FT_Done_Glyph( bitmap ); + } + + ... + + for ( idx = 0; i < MAX_GLYPHS; i++ ) + FT_Done_Glyph( glyphs[idx] ); +</pre> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -613,7 +628,7 @@ Defined in FT_GLYPH_H (freetype/ftglyph.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Destroys a given glyph.</p> +<p>Destroy a given glyph.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> <p></p> diff --git a/src/3rdparty/freetype/docs/reference/ft2-glyph_stroker.html b/src/3rdparty/freetype/docs/reference/ft2-glyph_stroker.html index 7e16d60..f5f24e4 100644 --- a/src/3rdparty/freetype/docs/reference/ft2-glyph_stroker.html +++ b/src/3rdparty/freetype/docs/reference/ft2-glyph_stroker.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.3.6 API Reference</title> +<title>FreeType-2.3.9 API Reference</title> <style type="text/css"> body { font-family: Verdana, Geneva, Arial, Helvetica, serif; color: #000000; @@ -31,7 +31,11 @@ </style> </head> <body> -<center><h1>FreeType-2.3.6 API Reference</h1></center> + +<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td> +<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> +<center><h1>FreeType-2.3.9 API Reference</h1></center> <center><h1> Glyph Stroker @@ -58,14 +62,6 @@ Glyph Stroker <table align=center width="75%"><tr><td> <h4><a name="FT_Stroker">FT_Stroker</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_STROKER_H (freetype/ftstroke.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_StrokerRec_* <b>FT_Stroker</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>Opaque handler to a path stroker object.</p> </td></tr></table><br> </td></tr></table> @@ -221,7 +217,7 @@ Defined in FT_STROKER_H (freetype/ftstroke.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>The border index. <a href="ft2-glyph_stroker.html#FT_StrokerBorder">FT_STROKER_BORDER_LEFT</a> for empty or invalid outlines.</p> +<p>The border index. <a href="ft2-glyph_stroker.html#FT_StrokerBorder">FT_STROKER_BORDER_RIGHT</a> for empty or invalid outlines.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -292,7 +288,7 @@ Defined in FT_STROKER_H (freetype/ftstroke.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -339,7 +335,7 @@ Defined in FT_STROKER_H (freetype/ftstroke.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> -<p>The radius is expressed in the same units that the outline coordinates.</p> +<p>The radius is expressed in the same units as the outline coordinates.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -401,16 +397,16 @@ Defined in FT_STROKER_H (freetype/ftstroke.h). <p>The source outline.</p> </td></tr> <tr valign=top><td><b>opened</b></td><td> -<p>A boolean. If 1, the outline is treated as an open path instead of a closed one.</p> +<p>A boolean. If 1, the outline is treated as an open path instead of a closed one.</p> </td></tr> </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> -<p>If ‘opened’ is 0 (the default), the outline is treated as a closed path, and the stroker will generate two distinct ‘border’ outlines.</p> -<p>If ‘opened’ is 1, the outline is processed as an open path, and the stroker will generate a single ‘stroke’ outline.</p> +<p>If ‘opened’ is 0 (the default), the outline is treated as a closed path, and the stroker generates two distinct ‘border’ outlines.</p> +<p>If ‘opened’ is 1, the outline is processed as an open path, and the stroker generates a single ‘stroke’ outline.</p> <p>This function calls <a href="ft2-glyph_stroker.html#FT_Stroker_Rewind">FT_Stroker_Rewind</a> automatically.</p> </td></tr></table> </td></tr></table> @@ -445,12 +441,12 @@ Defined in FT_STROKER_H (freetype/ftstroke.h). <p>A pointer to the start vector.</p> </td></tr> <tr valign=top><td><b>open</b></td><td> -<p>A boolean. If 1, the sub-path is treated as an open one.</p> +<p>A boolean. If 1, the sub-path is treated as an open one.</p> </td></tr> </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>This function is useful when you need to stroke a path that is not stored as an <a href="ft2-outline_processing.html#FT_Outline">FT_Outline</a> object.</p> @@ -484,10 +480,10 @@ Defined in FT_STROKER_H (freetype/ftstroke.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> -<p>You should call this function after <a href="ft2-glyph_stroker.html#FT_Stroker_BeginSubPath">FT_Stroker_BeginSubPath</a>. If the subpath was not ‘opened’, this function will ‘draw’ a single line segment to the start position when needed.</p> +<p>You should call this function after <a href="ft2-glyph_stroker.html#FT_Stroker_BeginSubPath">FT_Stroker_BeginSubPath</a>. If the subpath was not ‘opened’, this function ‘draws’ a single line segment to the start position when needed.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -522,7 +518,7 @@ Defined in FT_STROKER_H (freetype/ftstroke.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>You should call this function between <a href="ft2-glyph_stroker.html#FT_Stroker_BeginSubPath">FT_Stroker_BeginSubPath</a> and <a href="ft2-glyph_stroker.html#FT_Stroker_EndSubPath">FT_Stroker_EndSubPath</a>.</p> @@ -564,7 +560,7 @@ Defined in FT_STROKER_H (freetype/ftstroke.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>You should call this function between <a href="ft2-glyph_stroker.html#FT_Stroker_BeginSubPath">FT_Stroker_BeginSubPath</a> and <a href="ft2-glyph_stroker.html#FT_Stroker_EndSubPath">FT_Stroker_EndSubPath</a>.</p> @@ -610,7 +606,7 @@ Defined in FT_STROKER_H (freetype/ftstroke.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>You should call this function between <a href="ft2-glyph_stroker.html#FT_Stroker_BeginSubPath">FT_Stroker_BeginSubPath</a> and <a href="ft2-glyph_stroker.html#FT_Stroker_EndSubPath">FT_Stroker_EndSubPath</a>.</p> @@ -636,7 +632,7 @@ Defined in FT_STROKER_H (freetype/ftstroke.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Call this function once you have finished parsing your paths with the stroker. It will return the number of points and contours necessary to export one of the ‘border’ or ‘stroke’ outlines generated by the stroker.</p> +<p>Call this function once you have finished parsing your paths with the stroker. It returns the number of points and contours necessary to export one of the ‘border’ or ‘stroke’ outlines generated by the stroker.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> <p></p> @@ -661,7 +657,7 @@ Defined in FT_STROKER_H (freetype/ftstroke.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>When an outline, or a sub-path, is ‘closed’, the stroker generates two independent ‘border’ outlines, named ‘left’ and ‘right’.</p> @@ -689,7 +685,7 @@ Defined in FT_STROKER_H (freetype/ftstroke.h). </pre></table><br> <table align=center width="87%"><tr><td> <p>Call this function after <a href="ft2-glyph_stroker.html#FT_Stroker_GetBorderCounts">FT_Stroker_GetBorderCounts</a> to export the corresponding border to your own <a href="ft2-outline_processing.html#FT_Outline">FT_Outline</a> structure.</p> -<p>Note that this function will append the border points and contours to your outline, but will not try to resize its arrays.</p> +<p>Note that this function appends the border points and contours to your outline, but does not try to resize its arrays.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> <p></p> @@ -753,7 +749,7 @@ Defined in FT_STROKER_H (freetype/ftstroke.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -775,7 +771,7 @@ Defined in FT_STROKER_H (freetype/ftstroke.h). </pre></table><br> <table align=center width="87%"><tr><td> <p>Call this function after <a href="ft2-glyph_stroker.html#FT_Stroker_GetBorderCounts">FT_Stroker_GetBorderCounts</a> to export the all borders to your own <a href="ft2-outline_processing.html#FT_Outline">FT_Outline</a> structure.</p> -<p>Note that this function will append the border points and contours to your outline, but will not try to resize its arrays.</p> +<p>Note that this function appends the border points and contours to your outline, but does not try to resize its arrays.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> <p></p> @@ -853,12 +849,12 @@ Defined in FT_STROKER_H (freetype/ftstroke.h). <p>A stroker handle.</p> </td></tr> <tr valign=top><td><b>destroy</b></td><td> -<p>A Boolean. If 1, the source glyph object is destroyed on success.</p> +<p>A Boolean. If 1, the source glyph object is destroyed on success.</p> </td></tr> </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>The source glyph is untouched in case of error.</p> @@ -901,15 +897,15 @@ Defined in FT_STROKER_H (freetype/ftstroke.h). <p>A stroker handle.</p> </td></tr> <tr valign=top><td><b>inside</b></td><td> -<p>A Boolean. If 1, return the inside border, otherwise the outside border.</p> +<p>A Boolean. If 1, return the inside border, otherwise the outside border.</p> </td></tr> <tr valign=top><td><b>destroy</b></td><td> -<p>A Boolean. If 1, the source glyph object is destroyed on success.</p> +<p>A Boolean. If 1, the source glyph object is destroyed on success.</p> </td></tr> </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>The source glyph is untouched in case of error.</p> diff --git a/src/3rdparty/freetype/docs/reference/ft2-glyph_variants.html b/src/3rdparty/freetype/docs/reference/ft2-glyph_variants.html index e51ea1f..499c7e7 100644 --- a/src/3rdparty/freetype/docs/reference/ft2-glyph_variants.html +++ b/src/3rdparty/freetype/docs/reference/ft2-glyph_variants.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.3.6 API Reference</title> +<title>FreeType-2.3.9 API Reference</title> <style type="text/css"> body { font-family: Verdana, Geneva, Arial, Helvetica, serif; color: #000000; @@ -31,7 +31,11 @@ </style> </head> <body> -<center><h1>FreeType-2.3.6 API Reference</h1></center> + +<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td> +<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> +<center><h1>FreeType-2.3.9 API Reference</h1></center> <center><h1> Glyph Variants @@ -45,8 +49,8 @@ Glyph Variants <table align=center width="87%"><tr><td> <p>Many CJK characters have variant forms. They are a sort of grey area somewhere between being totally irrelevant and semantically distinct; for this reason, the Unicode consortium decided to introduce Ideographic Variation Sequences (IVS), consisting of a Unicode base character and one of 240 variant selectors (U+E0100-U+E01EF), instead of further extending the already huge code range for CJK characters.</p> -<p>An IVS is registered and unique; for further details please refer to Unicode Technical Report #37, the Ideographic Variation Database. To date (October 2007), the character with the most variants is U+908A, having 8 such IVS.</p> -<p>Adobe and MS decided to support IVS with a new cmap subtable (format 14). It is an odd subtable because it is not a mapping of input code points to glyphs, but contains lists of all variants supported by the font.</p> +<p>An IVS is registered and unique; for further details please refer to Unicode Technical Report #37, the Ideographic Variation Database. To date (October 2007), the character with the most variants is U+908A, having 8 such IVS.</p> +<p>Adobe and MS decided to support IVS with a new cmap subtable (format 14). It is an odd subtable because it is not a mapping of input code points to glyphs, but contains lists of all variants supported by the font.</p> <p>A variant may be either ‘default’ or ‘non-default’. A default variant is the one you will get for that code point if you look it up in the standard Unicode cmap. A non-default variant is a different glyph.</p> </td></tr></table><br> <table align=center width="75%"><tr><td> @@ -80,10 +84,10 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>The glyph index. 0 means either ‘undefined character code’, or ‘undefined selector code’, or ‘no variation selector cmap subtable’, or ‘current CharMap is not Unicode’.</p> +<p>The glyph index. 0 means either ‘undefined character code’, or ‘undefined selector code’, or ‘no variation selector cmap subtable’, or ‘current CharMap is not Unicode’.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> -<p>If you use FreeType to manipulate the contents of font files directly, be aware that the glyph index returned by this function doesn't always correspond to the internal indices used within the file. This is done to ensure that value 0 always corresponds to the ‘missing glyph’.</p> +<p>If you use FreeType to manipulate the contents of font files directly, be aware that the glyph index returned by this function doesn't always correspond to the internal indices used within the file. This is done to ensure that value 0 always corresponds to the ‘missing glyph’.</p> <p>This function is only meaningful if a) the font has a variation selector cmap sub table, and b) the current charmap has a Unicode encoding.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>since</b></em></td></tr><tr><td> @@ -126,7 +130,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>1 if found in the standard (Unicode) cmap, 0 if found in the variation selector cmap, or -1 if it is not a variant.</p> +<p>1 if found in the standard (Unicode) cmap, 0 if found in the variation selector cmap, or -1 if it is not a variant.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>This function is only meaningful if the font has a variation selector cmap subtable.</p> @@ -166,7 +170,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <p>A pointer to an array of selector code points, or NULL if there is no valid variant selector cmap subtable.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> -<p>The last item in the array is 0; the array is owned by the <a href="ft2-base_interface.html#FT_Face">FT_Face</a> object but can be overwritten or released on the next call to a FreeType function.</p> +<p>The last item in the array is 0; the array is owned by the <a href="ft2-base_interface.html#FT_Face">FT_Face</a> object but can be overwritten or released on the next call to a FreeType function.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>since</b></em></td></tr><tr><td> <p>2.3.6</p> @@ -207,7 +211,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <p>A pointer to an array of variant selector code points which are active for the given character, or NULL if the corresponding list is empty.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> -<p>The last item in the array is 0; the array is owned by the <a href="ft2-base_interface.html#FT_Face">FT_Face</a> object but can be overwritten or released on the next call to a FreeType function.</p> +<p>The last item in the array is 0; the array is owned by the <a href="ft2-base_interface.html#FT_Face">FT_Face</a> object but can be overwritten or released on the next call to a FreeType function.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>since</b></em></td></tr><tr><td> <p>2.3.6</p> @@ -248,7 +252,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). <p>A list of all the code points which are specified by this selector (both default and non-default codes are returned) or NULL if there is no valid cmap or the variant selector is invalid.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> -<p>The last item in the array is 0; the array is owned by the <a href="ft2-base_interface.html#FT_Face">FT_Face</a> object but can be overwritten or released on the next call to a FreeType function.</p> +<p>The last item in the array is 0; the array is owned by the <a href="ft2-base_interface.html#FT_Face">FT_Face</a> object but can be overwritten or released on the next call to a FreeType function.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>since</b></em></td></tr><tr><td> <p>2.3.6</p> diff --git a/src/3rdparty/freetype/docs/reference/ft2-gx_validation.html b/src/3rdparty/freetype/docs/reference/ft2-gx_validation.html index 611e0e6..8c3a98f 100644 --- a/src/3rdparty/freetype/docs/reference/ft2-gx_validation.html +++ b/src/3rdparty/freetype/docs/reference/ft2-gx_validation.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.3.6 API Reference</title> +<title>FreeType-2.3.9 API Reference</title> <style type="text/css"> body { font-family: Verdana, Geneva, Arial, Helvetica, serif; color: #000000; @@ -31,7 +31,11 @@ </style> </head> <body> -<center><h1>FreeType-2.3.6 API Reference</h1></center> + +<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td> +<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> +<center><h1>FreeType-2.3.9 API Reference</h1></center> <center><h1> TrueTypeGX/AAT Validation @@ -49,14 +53,6 @@ TrueTypeGX/AAT Validation <table align=center width="75%"><tr><td> <h4><a name="FT_VALIDATE_GX_LENGTH">FT_VALIDATE_GX_LENGTH</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_GX_VALIDATE_H (freetype/ftgxval.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_VALIDATE_GX_LENGTH</b> (FT_VALIDATE_GX_LAST_INDEX + 1) - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>The number of tables checked in this module. Use it as a parameter for the ‘table-length’ argument of function <a href="ft2-gx_validation.html#FT_TrueTypeGX_Validate">FT_TrueTypeGX_Validate</a>.</p> </td></tr></table><br> </td></tr></table> @@ -182,7 +178,7 @@ Defined in FT_GX_VALIDATE_H (freetype/ftgxval.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>This function only works with TrueTypeGX fonts, returning an error otherwise.</p> @@ -279,8 +275,8 @@ Defined in FT_GX_VALIDATE_H (freetype/ftgxval.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Validate classic (16bit format) kern table to assure that the offsets and indices are valid. The idea is that a higher-level library which actually does the text layout can access those tables without error checking (which can be quite time consuming).</p> -<p>The ‘kern’ table validator in <a href="ft2-gx_validation.html#FT_TrueTypeGX_Validate">FT_TrueTypeGX_Validate</a> deals with both the new 32bit format and the classic 16bit format, while FT_ClassicKern_Validate only supports the classic 16bit format.</p> +<p>Validate classic (16-bit format) kern table to assure that the offsets and indices are valid. The idea is that a higher-level library which actually does the text layout can access those tables without error checking (which can be quite time consuming).</p> +<p>The ‘kern’ table validator in <a href="ft2-gx_validation.html#FT_TrueTypeGX_Validate">FT_TrueTypeGX_Validate</a> deals with both the new 32-bit format and the classic 16-bit format, while FT_ClassicKern_Validate only supports the classic 16-bit format.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> <p></p> @@ -302,7 +298,7 @@ Defined in FT_GX_VALIDATE_H (freetype/ftgxval.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>After use, the application should deallocate the buffers pointed to by ‘ckern_table’, by calling <a href="ft2-gx_validation.html#FT_ClassicKern_Free">FT_ClassicKern_Free</a>. A NULL value indicates that the table doesn't exist in the font.</p> diff --git a/src/3rdparty/freetype/docs/reference/ft2-gzip.html b/src/3rdparty/freetype/docs/reference/ft2-gzip.html index e1dbf27..f9eca6a 100644 --- a/src/3rdparty/freetype/docs/reference/ft2-gzip.html +++ b/src/3rdparty/freetype/docs/reference/ft2-gzip.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.3.6 API Reference</title> +<title>FreeType-2.3.9 API Reference</title> <style type="text/css"> body { font-family: Verdana, Geneva, Arial, Helvetica, serif; color: #000000; @@ -31,7 +31,11 @@ </style> </head> <body> -<center><h1>FreeType-2.3.6 API Reference</h1></center> + +<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td> +<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> +<center><h1>FreeType-2.3.9 API Reference</h1></center> <center><h1> GZIP Streams @@ -71,7 +75,7 @@ Defined in FT_GZIP_H (freetype/ftgzip.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>The source stream must be opened <i>before</i> calling this function.</p> diff --git a/src/3rdparty/freetype/docs/reference/ft2-header_file_macros.html b/src/3rdparty/freetype/docs/reference/ft2-header_file_macros.html index 33905e9..f81f2f9 100644 --- a/src/3rdparty/freetype/docs/reference/ft2-header_file_macros.html +++ b/src/3rdparty/freetype/docs/reference/ft2-header_file_macros.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.3.6 API Reference</title> +<title>FreeType-2.3.9 API Reference</title> <style type="text/css"> body { font-family: Verdana, Geneva, Arial, Helvetica, serif; color: #000000; @@ -31,7 +31,11 @@ </style> </head> <body> -<center><h1>FreeType-2.3.6 API Reference</h1></center> + +<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td> +<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> +<center><h1>FreeType-2.3.9 API Reference</h1></center> <center><h1> Header File Macros @@ -60,18 +64,18 @@ Header File Macros <tr><td></td><td><a href="#FT_BDF_H">FT_BDF_H</a></td><td></td><td><a href="#FT_UNPATENTED_HINTING_H">FT_UNPATENTED_HINTING_H</a></td></tr> <tr><td></td><td><a href="#FT_CID_H">FT_CID_H</a></td><td></td><td><a href="#FT_INCREMENTAL_H">FT_INCREMENTAL_H</a></td></tr> <tr><td></td><td><a href="#FT_GZIP_H">FT_GZIP_H</a></td><td></td><td><a href="#FT_GASP_H">FT_GASP_H</a></td></tr> -<tr><td></td><td><a href="#FT_LZW_H">FT_LZW_H</a></td><td></td><td></td></tr> +<tr><td></td><td><a href="#FT_LZW_H">FT_LZW_H</a></td><td></td><td><a href="#FT_ADVANCES_H">FT_ADVANCES_H</a></td></tr> </table><br><br> <table align=center width="87%"><tr><td> -<p>The following macros are defined to the name of specific FreeType 2 header files. They can be used directly in #include statements as in:</p> +<p>The following macros are defined to the name of specific FreeType 2 header files. They can be used directly in #include statements as in:</p> <pre class="colored"> #include FT_FREETYPE_H #include FT_MULTIPLE_MASTERS_H #include FT_GLYPH_H </pre> -<p>There are several reasons why we are now using macros to name public header files. The first one is that such macros are not limited to the infamous 8.3 naming rule required by DOS (and ‘FT_MULTIPLE_MASTERS_H’ is a lot more meaningful than ‘ftmm.h’).</p> -<p>The second reason is that it allows for more flexibility in the way FreeType 2 is installed on a given system.</p> +<p>There are several reasons why we are now using macros to name public header files. The first one is that such macros are not limited to the infamous 8.3 naming rule required by DOS (and ‘FT_MULTIPLE_MASTERS_H’ is a lot more meaningful than ‘ftmm.h’).</p> +<p>The second reason is that it allows for more flexibility in the way FreeType 2 is installed on a given system.</p> </td></tr></table><br> <table align=center width="75%"><tr><td> <h4><a name="FT_CONFIG_CONFIG_H">FT_CONFIG_CONFIG_H</a></h4> @@ -83,7 +87,7 @@ Header File Macros </pre></table><br> <table align=center width="87%"><tr><td> -<p>A macro used in #include statements to name the file containing FreeType 2 configuration data.</p> +<p>A macro used in #include statements to name the file containing FreeType 2 configuration data.</p> </td></tr></table><br> </td></tr></table> <hr width="75%"> @@ -101,7 +105,7 @@ Header File Macros </pre></table><br> <table align=center width="87%"><tr><td> -<p>A macro used in #include statements to name the file containing FreeType 2 interface to the standard C library functions.</p> +<p>A macro used in #include statements to name the file containing FreeType 2 interface to the standard C library functions.</p> </td></tr></table><br> </td></tr></table> <hr width="75%"> @@ -119,7 +123,7 @@ Header File Macros </pre></table><br> <table align=center width="87%"><tr><td> -<p>A macro used in #include statements to name the file containing FreeType 2 project-specific configuration options.</p> +<p>A macro used in #include statements to name the file containing FreeType 2 project-specific configuration options.</p> </td></tr></table><br> </td></tr></table> <hr width="75%"> @@ -137,7 +141,7 @@ Header File Macros </pre></table><br> <table align=center width="87%"><tr><td> -<p>A macro used in #include statements to name the file containing the list of FreeType 2 modules that are statically linked to new library instances in <a href="ft2-base_interface.html#FT_Init_FreeType">FT_Init_FreeType</a>.</p> +<p>A macro used in #include statements to name the file containing the list of FreeType 2 modules that are statically linked to new library instances in <a href="ft2-base_interface.html#FT_Init_FreeType">FT_Init_FreeType</a>.</p> </td></tr></table><br> </td></tr></table> <hr width="75%"> @@ -147,13 +151,8 @@ Header File Macros <table align=center width="75%"><tr><td> <h4><a name="FT_FREETYPE_H">FT_FREETYPE_H</a></h4> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_FREETYPE_H</b> <freetype/freetype.h> - -</pre></table><br> <table align=center width="87%"><tr><td> -<p>A macro used in #include statements to name the file containing the base FreeType 2 API.</p> +<p>A macro used in #include statements to name the file containing the base FreeType 2 API.</p> </td></tr></table><br> </td></tr></table> <hr width="75%"> @@ -163,13 +162,8 @@ Header File Macros <table align=center width="75%"><tr><td> <h4><a name="FT_ERRORS_H">FT_ERRORS_H</a></h4> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_ERRORS_H</b> <freetype/fterrors.h> - -</pre></table><br> <table align=center width="87%"><tr><td> -<p>A macro used in #include statements to name the file containing the list of FreeType 2 error codes (and messages).</p> +<p>A macro used in #include statements to name the file containing the list of FreeType 2 error codes (and messages).</p> <p>It is included by <a href="ft2-header_file_macros.html#FT_FREETYPE_H">FT_FREETYPE_H</a>.</p> </td></tr></table><br> </td></tr></table> @@ -180,13 +174,8 @@ Header File Macros <table align=center width="75%"><tr><td> <h4><a name="FT_MODULE_ERRORS_H">FT_MODULE_ERRORS_H</a></h4> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_MODULE_ERRORS_H</b> <freetype/ftmoderr.h> - -</pre></table><br> <table align=center width="87%"><tr><td> -<p>A macro used in #include statements to name the file containing the list of FreeType 2 module error offsets (and messages).</p> +<p>A macro used in #include statements to name the file containing the list of FreeType 2 module error offsets (and messages).</p> </td></tr></table><br> </td></tr></table> <hr width="75%"> @@ -196,13 +185,8 @@ Header File Macros <table align=center width="75%"><tr><td> <h4><a name="FT_SYSTEM_H">FT_SYSTEM_H</a></h4> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_SYSTEM_H</b> <freetype/ftsystem.h> - -</pre></table><br> <table align=center width="87%"><tr><td> -<p>A macro used in #include statements to name the file containing the FreeType 2 interface to low-level operations (i.e., memory management and stream i/o).</p> +<p>A macro used in #include statements to name the file containing the FreeType 2 interface to low-level operations (i.e., memory management and stream i/o).</p> <p>It is included by <a href="ft2-header_file_macros.html#FT_FREETYPE_H">FT_FREETYPE_H</a>.</p> </td></tr></table><br> </td></tr></table> @@ -213,11 +197,6 @@ Header File Macros <table align=center width="75%"><tr><td> <h4><a name="FT_IMAGE_H">FT_IMAGE_H</a></h4> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_IMAGE_H</b> <freetype/ftimage.h> - -</pre></table><br> <table align=center width="87%"><tr><td> <p>A macro used in #include statements to name the file containing type definitions related to glyph images (i.e., bitmaps, outlines, scan-converter parameters).</p> <p>It is included by <a href="ft2-header_file_macros.html#FT_FREETYPE_H">FT_FREETYPE_H</a>.</p> @@ -230,13 +209,8 @@ Header File Macros <table align=center width="75%"><tr><td> <h4><a name="FT_TYPES_H">FT_TYPES_H</a></h4> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_TYPES_H</b> <freetype/fttypes.h> - -</pre></table><br> <table align=center width="87%"><tr><td> -<p>A macro used in #include statements to name the file containing the basic data types defined by FreeType 2.</p> +<p>A macro used in #include statements to name the file containing the basic data types defined by FreeType 2.</p> <p>It is included by <a href="ft2-header_file_macros.html#FT_FREETYPE_H">FT_FREETYPE_H</a>.</p> </td></tr></table><br> </td></tr></table> @@ -247,13 +221,8 @@ Header File Macros <table align=center width="75%"><tr><td> <h4><a name="FT_LIST_H">FT_LIST_H</a></h4> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_LIST_H</b> <freetype/ftlist.h> - -</pre></table><br> <table align=center width="87%"><tr><td> -<p>A macro used in #include statements to name the file containing the list management API of FreeType 2.</p> +<p>A macro used in #include statements to name the file containing the list management API of FreeType 2.</p> <p>(Most applications will never need to include this file.)</p> </td></tr></table><br> </td></tr></table> @@ -264,13 +233,8 @@ Header File Macros <table align=center width="75%"><tr><td> <h4><a name="FT_OUTLINE_H">FT_OUTLINE_H</a></h4> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_OUTLINE_H</b> <freetype/ftoutln.h> - -</pre></table><br> <table align=center width="87%"><tr><td> -<p>A macro used in #include statements to name the file containing the scalable outline management API of FreeType 2.</p> +<p>A macro used in #include statements to name the file containing the scalable outline management API of FreeType 2.</p> </td></tr></table><br> </td></tr></table> <hr width="75%"> @@ -280,11 +244,6 @@ Header File Macros <table align=center width="75%"><tr><td> <h4><a name="FT_SIZES_H">FT_SIZES_H</a></h4> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_SIZES_H</b> <freetype/ftsizes.h> - -</pre></table><br> <table align=center width="87%"><tr><td> <p>A macro used in #include statements to name the file containing the API which manages multiple <a href="ft2-base_interface.html#FT_Size">FT_Size</a> objects per face.</p> </td></tr></table><br> @@ -296,13 +255,8 @@ Header File Macros <table align=center width="75%"><tr><td> <h4><a name="FT_MODULE_H">FT_MODULE_H</a></h4> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_MODULE_H</b> <freetype/ftmodapi.h> - -</pre></table><br> <table align=center width="87%"><tr><td> -<p>A macro used in #include statements to name the file containing the module management API of FreeType 2.</p> +<p>A macro used in #include statements to name the file containing the module management API of FreeType 2.</p> </td></tr></table><br> </td></tr></table> <hr width="75%"> @@ -312,13 +266,8 @@ Header File Macros <table align=center width="75%"><tr><td> <h4><a name="FT_RENDER_H">FT_RENDER_H</a></h4> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_RENDER_H</b> <freetype/ftrender.h> - -</pre></table><br> <table align=center width="87%"><tr><td> -<p>A macro used in #include statements to name the file containing the renderer module management API of FreeType 2.</p> +<p>A macro used in #include statements to name the file containing the renderer module management API of FreeType 2.</p> </td></tr></table><br> </td></tr></table> <hr width="75%"> @@ -328,13 +277,8 @@ Header File Macros <table align=center width="75%"><tr><td> <h4><a name="FT_TYPE1_TABLES_H">FT_TYPE1_TABLES_H</a></h4> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_TYPE1_TABLES_H</b> <freetype/t1tables.h> - -</pre></table><br> <table align=center width="87%"><tr><td> -<p>A macro used in #include statements to name the file containing the types and API specific to the Type 1 format.</p> +<p>A macro used in #include statements to name the file containing the types and API specific to the Type 1 format.</p> </td></tr></table><br> </td></tr></table> <hr width="75%"> @@ -344,11 +288,6 @@ Header File Macros <table align=center width="75%"><tr><td> <h4><a name="FT_TRUETYPE_IDS_H">FT_TRUETYPE_IDS_H</a></h4> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_TRUETYPE_IDS_H</b> <freetype/ttnameid.h> - -</pre></table><br> <table align=center width="87%"><tr><td> <p>A macro used in #include statements to name the file containing the enumeration values which identify name strings, languages, encodings, etc. This file really contains a <i>large</i> set of constant macro definitions, taken from the TrueType and OpenType specifications.</p> </td></tr></table><br> @@ -360,11 +299,6 @@ Header File Macros <table align=center width="75%"><tr><td> <h4><a name="FT_TRUETYPE_TABLES_H">FT_TRUETYPE_TABLES_H</a></h4> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_TRUETYPE_TABLES_H</b> <freetype/tttables.h> - -</pre></table><br> <table align=center width="87%"><tr><td> <p>A macro used in #include statements to name the file containing the types and API specific to the TrueType (as well as OpenType) format.</p> </td></tr></table><br> @@ -376,11 +310,6 @@ Header File Macros <table align=center width="75%"><tr><td> <h4><a name="FT_TRUETYPE_TAGS_H">FT_TRUETYPE_TAGS_H</a></h4> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_TRUETYPE_TAGS_H</b> <freetype/tttags.h> - -</pre></table><br> <table align=center width="87%"><tr><td> <p>A macro used in #include statements to name the file containing the definitions of TrueType four-byte ‘tags’ which identify blocks in SFNT-based font formats (i.e., TrueType and OpenType).</p> </td></tr></table><br> @@ -392,11 +321,6 @@ Header File Macros <table align=center width="75%"><tr><td> <h4><a name="FT_BDF_H">FT_BDF_H</a></h4> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_BDF_H</b> <freetype/ftbdf.h> - -</pre></table><br> <table align=center width="87%"><tr><td> <p>A macro used in #include statements to name the file containing the definitions of an API which accesses BDF-specific strings from a face.</p> </td></tr></table><br> @@ -408,11 +332,6 @@ Header File Macros <table align=center width="75%"><tr><td> <h4><a name="FT_CID_H">FT_CID_H</a></h4> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_CID_H</b> <freetype/ftcid.h> - -</pre></table><br> <table align=center width="87%"><tr><td> <p>A macro used in #include statements to name the file containing the definitions of an API which access CID font information from a face.</p> </td></tr></table><br> @@ -424,11 +343,6 @@ Header File Macros <table align=center width="75%"><tr><td> <h4><a name="FT_GZIP_H">FT_GZIP_H</a></h4> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_GZIP_H</b> <freetype/ftgzip.h> - -</pre></table><br> <table align=center width="87%"><tr><td> <p>A macro used in #include statements to name the file containing the definitions of an API which supports gzip-compressed files.</p> </td></tr></table><br> @@ -440,11 +354,6 @@ Header File Macros <table align=center width="75%"><tr><td> <h4><a name="FT_LZW_H">FT_LZW_H</a></h4> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_LZW_H</b> <freetype/ftlzw.h> - -</pre></table><br> <table align=center width="87%"><tr><td> <p>A macro used in #include statements to name the file containing the definitions of an API which supports LZW-compressed files.</p> </td></tr></table><br> @@ -456,11 +365,6 @@ Header File Macros <table align=center width="75%"><tr><td> <h4><a name="FT_WINFONTS_H">FT_WINFONTS_H</a></h4> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_WINFONTS_H</b> <freetype/ftwinfnt.h> - -</pre></table><br> <table align=center width="87%"><tr><td> <p>A macro used in #include statements to name the file containing the definitions of an API which supports Windows FNT files.</p> </td></tr></table><br> @@ -472,11 +376,6 @@ Header File Macros <table align=center width="75%"><tr><td> <h4><a name="FT_GLYPH_H">FT_GLYPH_H</a></h4> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_GLYPH_H</b> <freetype/ftglyph.h> - -</pre></table><br> <table align=center width="87%"><tr><td> <p>A macro used in #include statements to name the file containing the API of the optional glyph management component.</p> </td></tr></table><br> @@ -488,11 +387,6 @@ Header File Macros <table align=center width="75%"><tr><td> <h4><a name="FT_BITMAP_H">FT_BITMAP_H</a></h4> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_BITMAP_H</b> <freetype/ftbitmap.h> - -</pre></table><br> <table align=center width="87%"><tr><td> <p>A macro used in #include statements to name the file containing the API of the optional bitmap conversion component.</p> </td></tr></table><br> @@ -504,11 +398,6 @@ Header File Macros <table align=center width="75%"><tr><td> <h4><a name="FT_BBOX_H">FT_BBOX_H</a></h4> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_BBOX_H</b> <freetype/ftbbox.h> - -</pre></table><br> <table align=center width="87%"><tr><td> <p>A macro used in #include statements to name the file containing the API of the optional exact bounding box computation routines.</p> </td></tr></table><br> @@ -520,13 +409,8 @@ Header File Macros <table align=center width="75%"><tr><td> <h4><a name="FT_CACHE_H">FT_CACHE_H</a></h4> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_CACHE_H</b> <freetype/ftcache.h> - -</pre></table><br> <table align=center width="87%"><tr><td> -<p>A macro used in #include statements to name the file containing the API of the optional FreeType 2 cache sub-system.</p> +<p>A macro used in #include statements to name the file containing the API of the optional FreeType 2 cache sub-system.</p> </td></tr></table><br> </td></tr></table> <hr width="75%"> @@ -536,13 +420,8 @@ Header File Macros <table align=center width="75%"><tr><td> <h4><a name="FT_CACHE_IMAGE_H">FT_CACHE_IMAGE_H</a></h4> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_CACHE_IMAGE_H</b> <a href="ft2-header_file_macros.html#FT_CACHE_H">FT_CACHE_H</a> - -</pre></table><br> <table align=center width="87%"><tr><td> -<p>A macro used in #include statements to name the file containing the ‘glyph image’ API of the FreeType 2 cache sub-system.</p> +<p>A macro used in #include statements to name the file containing the ‘glyph image’ API of the FreeType 2 cache sub-system.</p> <p>It is used to define a cache for <a href="ft2-glyph_management.html#FT_Glyph">FT_Glyph</a> elements. You can also use the API defined in <a href="ft2-header_file_macros.html#FT_CACHE_SMALL_BITMAPS_H">FT_CACHE_SMALL_BITMAPS_H</a> if you only need to store small glyph bitmaps, as it will use less memory.</p> <p>This macro is deprecated. Simply include <a href="ft2-header_file_macros.html#FT_CACHE_H">FT_CACHE_H</a> to have all glyph image-related cache declarations.</p> </td></tr></table><br> @@ -554,13 +433,8 @@ Header File Macros <table align=center width="75%"><tr><td> <h4><a name="FT_CACHE_SMALL_BITMAPS_H">FT_CACHE_SMALL_BITMAPS_H</a></h4> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_CACHE_SMALL_BITMAPS_H</b> <a href="ft2-header_file_macros.html#FT_CACHE_H">FT_CACHE_H</a> - -</pre></table><br> <table align=center width="87%"><tr><td> -<p>A macro used in #include statements to name the file containing the ‘small bitmaps’ API of the FreeType 2 cache sub-system.</p> +<p>A macro used in #include statements to name the file containing the ‘small bitmaps’ API of the FreeType 2 cache sub-system.</p> <p>It is used to define a cache for small glyph bitmaps in a relatively memory-efficient way. You can also use the API defined in <a href="ft2-header_file_macros.html#FT_CACHE_IMAGE_H">FT_CACHE_IMAGE_H</a> if you want to cache arbitrary glyph images, including scalable outlines.</p> <p>This macro is deprecated. Simply include <a href="ft2-header_file_macros.html#FT_CACHE_H">FT_CACHE_H</a> to have all small bitmaps-related cache declarations.</p> </td></tr></table><br> @@ -572,13 +446,8 @@ Header File Macros <table align=center width="75%"><tr><td> <h4><a name="FT_CACHE_CHARMAP_H">FT_CACHE_CHARMAP_H</a></h4> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_CACHE_CHARMAP_H</b> <a href="ft2-header_file_macros.html#FT_CACHE_H">FT_CACHE_H</a> - -</pre></table><br> <table align=center width="87%"><tr><td> -<p>A macro used in #include statements to name the file containing the ‘charmap’ API of the FreeType 2 cache sub-system.</p> +<p>A macro used in #include statements to name the file containing the ‘charmap’ API of the FreeType 2 cache sub-system.</p> <p>This macro is deprecated. Simply include <a href="ft2-header_file_macros.html#FT_CACHE_H">FT_CACHE_H</a> to have all charmap-based cache declarations.</p> </td></tr></table><br> </td></tr></table> @@ -589,13 +458,8 @@ Header File Macros <table align=center width="75%"><tr><td> <h4><a name="FT_MAC_H">FT_MAC_H</a></h4> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_MAC_H</b> <freetype/ftmac.h> - -</pre></table><br> <table align=center width="87%"><tr><td> -<p>A macro used in #include statements to name the file containing the Macintosh-specific FreeType 2 API. The latter is used to access fonts embedded in resource forks.</p> +<p>A macro used in #include statements to name the file containing the Macintosh-specific FreeType 2 API. The latter is used to access fonts embedded in resource forks.</p> <p>This header file must be explicitly included by client applications compiled on the Mac (note that the base API still works though).</p> </td></tr></table><br> </td></tr></table> @@ -606,13 +470,8 @@ Header File Macros <table align=center width="75%"><tr><td> <h4><a name="FT_MULTIPLE_MASTERS_H">FT_MULTIPLE_MASTERS_H</a></h4> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_MULTIPLE_MASTERS_H</b> <freetype/ftmm.h> - -</pre></table><br> <table align=center width="87%"><tr><td> -<p>A macro used in #include statements to name the file containing the optional multiple-masters management API of FreeType 2.</p> +<p>A macro used in #include statements to name the file containing the optional multiple-masters management API of FreeType 2.</p> </td></tr></table><br> </td></tr></table> <hr width="75%"> @@ -622,13 +481,8 @@ Header File Macros <table align=center width="75%"><tr><td> <h4><a name="FT_SFNT_NAMES_H">FT_SFNT_NAMES_H</a></h4> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_SFNT_NAMES_H</b> <freetype/ftsnames.h> - -</pre></table><br> <table align=center width="87%"><tr><td> -<p>A macro used in #include statements to name the file containing the optional FreeType 2 API which accesses embedded ‘name’ strings in SFNT-based font formats (i.e., TrueType and OpenType).</p> +<p>A macro used in #include statements to name the file containing the optional FreeType 2 API which accesses embedded ‘name’ strings in SFNT-based font formats (i.e., TrueType and OpenType).</p> </td></tr></table><br> </td></tr></table> <hr width="75%"> @@ -638,13 +492,8 @@ Header File Macros <table align=center width="75%"><tr><td> <h4><a name="FT_OPENTYPE_VALIDATE_H">FT_OPENTYPE_VALIDATE_H</a></h4> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_OPENTYPE_VALIDATE_H</b> <freetype/ftotval.h> - -</pre></table><br> <table align=center width="87%"><tr><td> -<p>A macro used in #include statements to name the file containing the optional FreeType 2 API which validates OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF).</p> +<p>A macro used in #include statements to name the file containing the optional FreeType 2 API which validates OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF).</p> </td></tr></table><br> </td></tr></table> <hr width="75%"> @@ -654,13 +503,8 @@ Header File Macros <table align=center width="75%"><tr><td> <h4><a name="FT_GX_VALIDATE_H">FT_GX_VALIDATE_H</a></h4> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_GX_VALIDATE_H</b> <freetype/ftgxval.h> - -</pre></table><br> <table align=center width="87%"><tr><td> -<p>A macro used in #include statements to name the file containing the optional FreeType 2 API which validates TrueTypeGX/AAT tables (feat, mort, morx, bsln, just, kern, opbd, trak, prop).</p> +<p>A macro used in #include statements to name the file containing the optional FreeType 2 API which validates TrueTypeGX/AAT tables (feat, mort, morx, bsln, just, kern, opbd, trak, prop).</p> </td></tr></table><br> </td></tr></table> <hr width="75%"> @@ -670,13 +514,8 @@ Header File Macros <table align=center width="75%"><tr><td> <h4><a name="FT_PFR_H">FT_PFR_H</a></h4> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_PFR_H</b> <freetype/ftpfr.h> - -</pre></table><br> <table align=center width="87%"><tr><td> -<p>A macro used in #include statements to name the file containing the FreeType 2 API which accesses PFR-specific data.</p> +<p>A macro used in #include statements to name the file containing the FreeType 2 API which accesses PFR-specific data.</p> </td></tr></table><br> </td></tr></table> <hr width="75%"> @@ -686,13 +525,8 @@ Header File Macros <table align=center width="75%"><tr><td> <h4><a name="FT_STROKER_H">FT_STROKER_H</a></h4> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_STROKER_H</b> <freetype/ftstroke.h> - -</pre></table><br> <table align=center width="87%"><tr><td> -<p>A macro used in #include statements to name the file containing the FreeType 2 API which provides functions to stroke outline paths.</p> +<p>A macro used in #include statements to name the file containing the FreeType 2 API which provides functions to stroke outline paths.</p> </td></tr></table><br> </td></tr></table> <hr width="75%"> @@ -702,13 +536,8 @@ Header File Macros <table align=center width="75%"><tr><td> <h4><a name="FT_SYNTHESIS_H">FT_SYNTHESIS_H</a></h4> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_SYNTHESIS_H</b> <freetype/ftsynth.h> - -</pre></table><br> <table align=center width="87%"><tr><td> -<p>A macro used in #include statements to name the file containing the FreeType 2 API which performs artificial obliquing and emboldening.</p> +<p>A macro used in #include statements to name the file containing the FreeType 2 API which performs artificial obliquing and emboldening.</p> </td></tr></table><br> </td></tr></table> <hr width="75%"> @@ -718,13 +547,8 @@ Header File Macros <table align=center width="75%"><tr><td> <h4><a name="FT_XFREE86_H">FT_XFREE86_H</a></h4> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_XFREE86_H</b> <freetype/ftxf86.h> - -</pre></table><br> <table align=center width="87%"><tr><td> -<p>A macro used in #include statements to name the file containing the FreeType 2 API which provides functions specific to the XFree86 and X.Org X11 servers.</p> +<p>A macro used in #include statements to name the file containing the FreeType 2 API which provides functions specific to the XFree86 and X.Org X11 servers.</p> </td></tr></table><br> </td></tr></table> <hr width="75%"> @@ -734,13 +558,8 @@ Header File Macros <table align=center width="75%"><tr><td> <h4><a name="FT_TRIGONOMETRY_H">FT_TRIGONOMETRY_H</a></h4> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_TRIGONOMETRY_H</b> <freetype/fttrigon.h> - -</pre></table><br> <table align=center width="87%"><tr><td> -<p>A macro used in #include statements to name the file containing the FreeType 2 API which performs trigonometric computations (e.g., cosines and arc tangents).</p> +<p>A macro used in #include statements to name the file containing the FreeType 2 API which performs trigonometric computations (e.g., cosines and arc tangents).</p> </td></tr></table><br> </td></tr></table> <hr width="75%"> @@ -750,13 +569,8 @@ Header File Macros <table align=center width="75%"><tr><td> <h4><a name="FT_LCD_FILTER_H">FT_LCD_FILTER_H</a></h4> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_LCD_FILTER_H</b> <freetype/ftlcdfil.h> - -</pre></table><br> <table align=center width="87%"><tr><td> -<p>A macro used in #include statements to name the file containing the FreeType 2 API which performs color filtering for subpixel rendering.</p> +<p>A macro used in #include statements to name the file containing the FreeType 2 API which performs color filtering for subpixel rendering.</p> </td></tr></table><br> </td></tr></table> <hr width="75%"> @@ -766,13 +580,8 @@ Header File Macros <table align=center width="75%"><tr><td> <h4><a name="FT_UNPATENTED_HINTING_H">FT_UNPATENTED_HINTING_H</a></h4> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_UNPATENTED_HINTING_H</b> <freetype/ttunpat.h> - -</pre></table><br> <table align=center width="87%"><tr><td> -<p>A macro used in #include statements to name the file containing the FreeType 2 API which performs color filtering for subpixel rendering.</p> +<p>A macro used in #include statements to name the file containing the FreeType 2 API which performs color filtering for subpixel rendering.</p> </td></tr></table><br> </td></tr></table> <hr width="75%"> @@ -782,13 +591,8 @@ Header File Macros <table align=center width="75%"><tr><td> <h4><a name="FT_INCREMENTAL_H">FT_INCREMENTAL_H</a></h4> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_INCREMENTAL_H</b> <freetype/ftincrem.h> - -</pre></table><br> <table align=center width="87%"><tr><td> -<p>A macro used in #include statements to name the file containing the FreeType 2 API which performs color filtering for subpixel rendering.</p> +<p>A macro used in #include statements to name the file containing the FreeType 2 API which performs color filtering for subpixel rendering.</p> </td></tr></table><br> </td></tr></table> <hr width="75%"> @@ -798,13 +602,19 @@ Header File Macros <table align=center width="75%"><tr><td> <h4><a name="FT_GASP_H">FT_GASP_H</a></h4> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_GASP_H</b> <freetype/ftgasp.h> +<table align=center width="87%"><tr><td> +<p>A macro used in #include statements to name the file containing the FreeType 2 API which returns entries from the TrueType GASP table.</p> +</td></tr></table><br> +</td></tr></table> +<hr width="75%"> +<table align=center width="75%"><tr><td><font size=-2>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td> +<td><font size=-2>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> -</pre></table><br> +<table align=center width="75%"><tr><td> +<h4><a name="FT_ADVANCES_H">FT_ADVANCES_H</a></h4> <table align=center width="87%"><tr><td> -<p>A macro used in #include statements to name the file containing the FreeType 2 API which returns entries from the TrueType GASP table.</p> +<p>A macro used in #include statements to name the file containing the FreeType 2 API which returns individual and ranged glyph advances.</p> </td></tr></table><br> </td></tr></table> <hr width="75%"> diff --git a/src/3rdparty/freetype/docs/reference/ft2-incremental.html b/src/3rdparty/freetype/docs/reference/ft2-incremental.html index e438eb1..8fbc111 100644 --- a/src/3rdparty/freetype/docs/reference/ft2-incremental.html +++ b/src/3rdparty/freetype/docs/reference/ft2-incremental.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.3.6 API Reference</title> +<title>FreeType-2.3.9 API Reference</title> <style type="text/css"> body { font-family: Verdana, Geneva, Arial, Helvetica, serif; color: #000000; @@ -31,7 +31,11 @@ </style> </head> <body> -<center><h1>FreeType-2.3.6 API Reference</h1></center> + +<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td> +<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> +<center><h1>FreeType-2.3.9 API Reference</h1></center> <center><h1> Incremental Loading @@ -47,21 +51,13 @@ Incremental Loading <table align=center width="87%"><tr><td> <p>This section contains various functions used to perform so-called ‘incremental’ glyph loading. This is a mode where all glyphs loaded from a given <a href="ft2-base_interface.html#FT_Face">FT_Face</a> are provided by the client application,</p> -<p>Apart from that, all other tables are loaded normally from the font file. This mode is useful when FreeType is used within another engine, e.g., a Postscript Imaging Processor.</p> +<p>Apart from that, all other tables are loaded normally from the font file. This mode is useful when FreeType is used within another engine, e.g., a PostScript Imaging Processor.</p> <p>To enable this mode, you must use <a href="ft2-base_interface.html#FT_Open_Face">FT_Open_Face</a>, passing an <a href="ft2-base_interface.html#FT_Parameter">FT_Parameter</a> with the <a href="ft2-incremental.html#FT_PARAM_TAG_INCREMENTAL">FT_PARAM_TAG_INCREMENTAL</a> tag and an <a href="ft2-incremental.html#FT_Incremental_Interface">FT_Incremental_Interface</a> value. See the comments for <a href="ft2-incremental.html#FT_Incremental_InterfaceRec">FT_Incremental_InterfaceRec</a> for an example.</p> </td></tr></table><br> <table align=center width="75%"><tr><td> <h4><a name="FT_Incremental">FT_Incremental</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_INCREMENTAL_H (freetype/ftincrem.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_IncrementalRec_* <b>FT_Incremental</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> -<p>An opaque type describing a user-provided object used to implement ‘incremental’ glyph loading within FreeType. This is used to support embedded fonts in certain environments (e.g., Postscript interpreters), where the glyph data isn't in the font file, or must be overridden by different values.</p> +<p>An opaque type describing a user-provided object used to implement ‘incremental’ glyph loading within FreeType. This is used to support embedded fonts in certain environments (e.g., PostScript interpreters), where the glyph data isn't in the font file, or must be overridden by different values.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>It is up to client applications to create and implement <a href="ft2-incremental.html#FT_Incremental">FT_Incremental</a> objects, as long as they provide implementations for the methods <a href="ft2-incremental.html#FT_Incremental_GetGlyphDataFunc">FT_Incremental_GetGlyphDataFunc</a>, <a href="ft2-incremental.html#FT_Incremental_FreeGlyphDataFunc">FT_Incremental_FreeGlyphDataFunc</a> and <a href="ft2-incremental.html#FT_Incremental_GetGlyphMetricsFunc">FT_Incremental_GetGlyphMetricsFunc</a>.</p> @@ -118,14 +114,6 @@ Defined in FT_INCREMENTAL_H (freetype/ftincrem.h). <table align=center width="75%"><tr><td> <h4><a name="FT_Incremental_Metrics">FT_Incremental_Metrics</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_INCREMENTAL_H (freetype/ftincrem.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_Incremental_MetricsRec_* <b>FT_Incremental_Metrics</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>A handle to an <a href="ft2-incremental.html#FT_Incremental_MetricsRec">FT_Incremental_MetricsRec</a> structure.</p> </td></tr></table><br> </td></tr></table> @@ -149,7 +137,7 @@ Defined in FT_INCREMENTAL_H (freetype/ftincrem.h). </pre></table><br> <table align=center width="87%"><tr><td> <p>A function called by FreeType to access a given glyph's data bytes during <a href="ft2-base_interface.html#FT_Load_Glyph">FT_Load_Glyph</a> or <a href="ft2-base_interface.html#FT_Load_Char">FT_Load_Char</a> if incremental loading is enabled.</p> -<p>Note that the format of the glyph's data bytes depends on the font file format. For TrueType, it must correspond to the raw bytes within the ‘glyf’ table. For Postscript formats, it must correspond to the <b>unencrypted</b> charstring bytes, without any ‘lenIV’ header. It is undefined for any other format.</p> +<p>Note that the format of the glyph's data bytes depends on the font file format. For TrueType, it must correspond to the raw bytes within the ‘glyf’ table. For PostScript formats, it must correspond to the <b>unencrypted</b> charstring bytes, without any ‘lenIV’ header. It is undefined for any other format.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> <p></p> @@ -171,7 +159,7 @@ Defined in FT_INCREMENTAL_H (freetype/ftincrem.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>If this function returns successfully the method <a href="ft2-incremental.html#FT_Incremental_FreeGlyphDataFunc">FT_Incremental_FreeGlyphDataFunc</a> will be called later to release the data bytes.</p> @@ -354,14 +342,6 @@ Defined in FT_INCREMENTAL_H (freetype/ftincrem.h). <table align=center width="75%"><tr><td> <h4><a name="FT_Incremental_Interface">FT_Incremental_Interface</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_INCREMENTAL_H (freetype/ftincrem.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <a href="ft2-incremental.html#FT_Incremental_InterfaceRec">FT_Incremental_InterfaceRec</a>* <b>FT_Incremental_Interface</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>A pointer to an <a href="ft2-incremental.html#FT_Incremental_InterfaceRec">FT_Incremental_InterfaceRec</a> structure.</p> </td></tr></table><br> </td></tr></table> @@ -373,14 +353,6 @@ Defined in FT_INCREMENTAL_H (freetype/ftincrem.h). <table align=center width="75%"><tr><td> <h4><a name="FT_PARAM_TAG_INCREMENTAL">FT_PARAM_TAG_INCREMENTAL</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_INCREMENTAL_H (freetype/ftincrem.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_PARAM_TAG_INCREMENTAL</b> <a href="ft2-basic_types.html#FT_MAKE_TAG">FT_MAKE_TAG</a>( 'i', 'n', 'c', 'r' ) - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>A constant used as the tag of <a href="ft2-base_interface.html#FT_Parameter">FT_Parameter</a> structures to indicate an incremental loading object to be used by FreeType.</p> </td></tr></table><br> </td></tr></table> diff --git a/src/3rdparty/freetype/docs/reference/ft2-index.html b/src/3rdparty/freetype/docs/reference/ft2-index.html index d108d0a..ca4d169 100644 --- a/src/3rdparty/freetype/docs/reference/ft2-index.html +++ b/src/3rdparty/freetype/docs/reference/ft2-index.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.3.6 API Reference</title> +<title>FreeType-2.3.9 API Reference</title> <style type="text/css"> body { font-family: Verdana, Geneva, Arial, Helvetica, serif; color: #000000; @@ -31,249 +31,260 @@ </style> </head> <body> -<center><h1>FreeType-2.3.6 API Reference</h1></center> + +<table align=center><tr><td width="100%"></td> +<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> +<center><h1>FreeType-2.3.9 API Reference</h1></center> <table align=center border=0 cellpadding=0 cellspacing=0> -<tr><td><a href="ft2-bdf_fonts.html#FT_PropertyType">BDF_PROPERTY_TYPE_ATOM</a></td><td><a href="ft2-list_processing.html#FT_List_Finalize">FT_List_Finalize</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_ROUND_XY_TO_GRID</a></td></tr> -<tr><td><a href="ft2-bdf_fonts.html#FT_PropertyType">BDF_PROPERTY_TYPE_CARDINAL</a></td><td><a href="ft2-list_processing.html#FT_List_Find">FT_List_Find</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_SCALE</a></td></tr> -<tr><td><a href="ft2-bdf_fonts.html#FT_PropertyType">BDF_PROPERTY_TYPE_INTEGER</a></td><td><a href="ft2-list_processing.html#FT_List_Insert">FT_List_Insert</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_USE_MY_METRICS</a></td></tr> -<tr><td><a href="ft2-bdf_fonts.html#FT_PropertyType">BDF_PROPERTY_TYPE_NONE</a></td><td><a href="ft2-list_processing.html#FT_List_Iterate">FT_List_Iterate</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_XXX</a></td></tr> -<tr><td><a href="ft2-bdf_fonts.html#BDF_Property">BDF_Property</a></td><td><a href="ft2-list_processing.html#FT_List_Iterator">FT_List_Iterator</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_XY_SCALE</a></td></tr> -<tr><td><a href="ft2-bdf_fonts.html#BDF_PropertyRec">BDF_PropertyRec</a></td><td><a href="ft2-list_processing.html#FT_List_Remove">FT_List_Remove</a></td><td><a href="ft2-base_interface.html#FT_SubGlyph">FT_SubGlyph</a></td></tr> -<tr><td><a href="ft2-type1_tables.html#CID_FaceDict">CID_FaceDict</a></td><td><a href="ft2-list_processing.html#FT_List_Up">FT_List_Up</a></td><td><a href="ft2-header_file_macros.html#FT_SYNTHESIS_H">FT_SYNTHESIS_H</a></td></tr> -<tr><td><a href="ft2-type1_tables.html#CID_FaceDictRec">CID_FaceDictRec</a></td><td><a href="ft2-list_processing.html#FT_ListNode">FT_ListNode</a></td><td><a href="ft2-header_file_macros.html#FT_SYSTEM_H">FT_SYSTEM_H</a></td></tr> -<tr><td><a href="ft2-type1_tables.html#CID_FaceInfo">CID_FaceInfo</a></td><td><a href="ft2-list_processing.html#FT_ListNodeRec">FT_ListNodeRec</a></td><td><a href="ft2-basic_types.html#FT_Tag">FT_Tag</a></td></tr> -<tr><td><a href="ft2-type1_tables.html#CID_FaceInfoRec">CID_FaceInfoRec</a></td><td><a href="ft2-list_processing.html#FT_ListRec">FT_ListRec</a></td><td><a href="ft2-computations.html#FT_Tan">FT_Tan</a></td></tr> -<tr><td><a href="ft2-type1_tables.html#CID_Info">CID_Info</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_CROP_BITMAP</a></td><td><a href="ft2-header_file_macros.html#FT_TRIGONOMETRY_H">FT_TRIGONOMETRY_H</a></td></tr> -<tr><td><a href="ft2-version.html#FREETYPE_XXX">FREETYPE_MAJOR</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_DEFAULT</a></td><td><a href="ft2-truetype_engine.html#FT_TrueTypeEngineType">FT_TRUETYPE_ENGINE_TYPE_NONE</a></td></tr> -<tr><td><a href="ft2-version.html#FREETYPE_XXX">FREETYPE_MINOR</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_FORCE_AUTOHINT</a></td><td><a href="ft2-truetype_engine.html#FT_TrueTypeEngineType">FT_TRUETYPE_ENGINE_TYPE_PATENTED</a></td></tr> -<tr><td><a href="ft2-version.html#FREETYPE_XXX">FREETYPE_PATCH</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH</a></td><td><a href="ft2-truetype_engine.html#FT_TrueTypeEngineType">FT_TRUETYPE_ENGINE_TYPE_UNPATENTED</a></td></tr> -<tr><td><a href="ft2-version.html#FREETYPE_XXX">FREETYPE_XXX</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_IGNORE_TRANSFORM</a></td><td><a href="ft2-header_file_macros.html#FT_TRUETYPE_IDS_H">FT_TRUETYPE_IDS_H</a></td></tr> -<tr><td><a href="ft2-sizes_management.html#FT_Activate_Size">FT_Activate_Size</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_LINEAR_DESIGN</a></td><td><a href="ft2-header_file_macros.html#FT_TRUETYPE_TABLES_H">FT_TRUETYPE_TABLES_H</a></td></tr> -<tr><td><a href="ft2-module_management.html#FT_Add_Default_Modules">FT_Add_Default_Modules</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_MONOCHROME</a></td><td><a href="ft2-header_file_macros.html#FT_TRUETYPE_TAGS_H">FT_TRUETYPE_TAGS_H</a></td></tr> -<tr><td><a href="ft2-module_management.html#FT_Add_Module">FT_Add_Module</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_NO_AUTOHINT</a></td><td><a href="ft2-truetype_engine.html#FT_TrueTypeEngineType">FT_TrueTypeEngineType</a></td></tr> -<tr><td><a href="ft2-system_interface.html#FT_Alloc_Func">FT_Alloc_Func</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_NO_BITMAP</a></td><td><a href="ft2-gx_validation.html#FT_TrueTypeGX_Free">FT_TrueTypeGX_Free</a></td></tr> -<tr><td><a href="ft2-computations.html#FT_ANGLE_2PI">FT_ANGLE_2PI</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_NO_HINTING</a></td><td><a href="ft2-gx_validation.html#FT_TrueTypeGX_Validate">FT_TrueTypeGX_Validate</a></td></tr> -<tr><td><a href="ft2-computations.html#FT_ANGLE_PI">FT_ANGLE_PI</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_NO_RECURSE</a></td><td><a href="ft2-header_file_macros.html#FT_TYPE1_TABLES_H">FT_TYPE1_TABLES_H</a></td></tr> -<tr><td><a href="ft2-computations.html#FT_ANGLE_PI2">FT_ANGLE_PI2</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_NO_SCALE</a></td><td><a href="ft2-header_file_macros.html#FT_TYPES_H">FT_TYPES_H</a></td></tr> -<tr><td><a href="ft2-computations.html#FT_ANGLE_PI4">FT_ANGLE_PI4</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_PEDANTIC</a></td><td><a href="ft2-basic_types.html#FT_UFWord">FT_UFWord</a></td></tr> -<tr><td><a href="ft2-computations.html#FT_Angle">FT_Angle</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_RENDER</a></td><td><a href="ft2-basic_types.html#FT_UInt">FT_UInt</a></td></tr> -<tr><td><a href="ft2-computations.html#FT_Angle_Diff">FT_Angle_Diff</a></td><td><a href="ft2-base_interface.html#FT_LOAD_TARGET_XXX">FT_LOAD_TARGET_LCD</a></td><td><a href="ft2-basic_types.html#FT_UInt16">FT_UInt16</a></td></tr> -<tr><td><a href="ft2-computations.html#FT_Atan2">FT_Atan2</a></td><td><a href="ft2-base_interface.html#FT_LOAD_TARGET_XXX">FT_LOAD_TARGET_LCD_V</a></td><td><a href="ft2-basic_types.html#FT_UInt32">FT_UInt32</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Attach_File">FT_Attach_File</a></td><td><a href="ft2-base_interface.html#FT_LOAD_TARGET_XXX">FT_LOAD_TARGET_LIGHT</a></td><td><a href="ft2-basic_types.html#FT_ULong">FT_ULong</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Attach_Stream">FT_Attach_Stream</a></td><td><a href="ft2-base_interface.html#FT_LOAD_TARGET_MODE">FT_LOAD_TARGET_MODE</a></td><td><a href="ft2-header_file_macros.html#FT_UNPATENTED_HINTING_H">FT_UNPATENTED_HINTING_H</a></td></tr> -<tr><td><a href="ft2-header_file_macros.html#FT_BBOX_H">FT_BBOX_H</a></td><td><a href="ft2-base_interface.html#FT_LOAD_TARGET_XXX">FT_LOAD_TARGET_MONO</a></td><td><a href="ft2-basic_types.html#FT_UnitVector">FT_UnitVector</a></td></tr> -<tr><td><a href="ft2-basic_types.html#FT_BBox">FT_BBox</a></td><td><a href="ft2-base_interface.html#FT_LOAD_TARGET_XXX">FT_LOAD_TARGET_NORMAL</a></td><td><a href="ft2-basic_types.html#FT_UShort">FT_UShort</a></td></tr> -<tr><td><a href="ft2-header_file_macros.html#FT_BDF_H">FT_BDF_H</a></td><td><a href="ft2-base_interface.html#FT_LOAD_TARGET_XXX">FT_LOAD_TARGET_XXX</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_CKERNXXX">FT_VALIDATE_APPLE</a></td></tr> -<tr><td><a href="ft2-header_file_macros.html#FT_BITMAP_H">FT_BITMAP_H</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_VERTICAL_LAYOUT</a></td><td><a href="ft2-ot_validation.html#FT_VALIDATE_OTXXX">FT_VALIDATE_BASE</a></td></tr> -<tr><td><a href="ft2-basic_types.html#FT_Bitmap">FT_Bitmap</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_XXX</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_bsln</a></td></tr> -<tr><td><a href="ft2-bitmap_handling.html#FT_Bitmap_Convert">FT_Bitmap_Convert</a></td><td><a href="ft2-base_interface.html#FT_Load_Char">FT_Load_Char</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_CKERNXXX">FT_VALIDATE_CKERN</a></td></tr> -<tr><td><a href="ft2-bitmap_handling.html#FT_Bitmap_Copy">FT_Bitmap_Copy</a></td><td><a href="ft2-base_interface.html#FT_Load_Glyph">FT_Load_Glyph</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_CKERNXXX">FT_VALIDATE_CKERNXXX</a></td></tr> -<tr><td><a href="ft2-bitmap_handling.html#FT_Bitmap_Done">FT_Bitmap_Done</a></td><td><a href="ft2-truetype_tables.html#FT_Load_Sfnt_Table">FT_Load_Sfnt_Table</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_feat</a></td></tr> -<tr><td><a href="ft2-bitmap_handling.html#FT_Bitmap_Embolden">FT_Bitmap_Embolden</a></td><td><a href="ft2-basic_types.html#FT_Long">FT_Long</a></td><td><a href="ft2-ot_validation.html#FT_VALIDATE_OTXXX">FT_VALIDATE_GDEF</a></td></tr> -<tr><td><a href="ft2-bitmap_handling.html#FT_Bitmap_New">FT_Bitmap_New</a></td><td><a href="ft2-header_file_macros.html#FT_LZW_H">FT_LZW_H</a></td><td><a href="ft2-ot_validation.html#FT_VALIDATE_OTXXX">FT_VALIDATE_GPOS</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Bitmap_Size">FT_Bitmap_Size</a></td><td><a href="ft2-header_file_macros.html#FT_MAC_H">FT_MAC_H</a></td><td><a href="ft2-ot_validation.html#FT_VALIDATE_OTXXX">FT_VALIDATE_GSUB</a></td></tr> -<tr><td><a href="ft2-glyph_management.html#FT_BitmapGlyph">FT_BitmapGlyph</a></td><td><a href="ft2-basic_types.html#FT_MAKE_TAG">FT_MAKE_TAG</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_GX</a></td></tr> -<tr><td><a href="ft2-glyph_management.html#FT_BitmapGlyphRec">FT_BitmapGlyphRec</a></td><td><a href="ft2-basic_types.html#FT_Matrix">FT_Matrix</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GX_LENGTH">FT_VALIDATE_GX_LENGTH</a></td></tr> -<tr><td><a href="ft2-basic_types.html#FT_Bool">FT_Bool</a></td><td><a href="ft2-computations.html#FT_Matrix_Invert">FT_Matrix_Invert</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_GXXXX</a></td></tr> -<tr><td><a href="ft2-basic_types.html#FT_Byte">FT_Byte</a></td><td><a href="ft2-computations.html#FT_Matrix_Multiply">FT_Matrix_Multiply</a></td><td><a href="ft2-ot_validation.html#FT_VALIDATE_OTXXX">FT_VALIDATE_JSTF</a></td></tr> -<tr><td><a href="ft2-basic_types.html#FT_Bytes">FT_Bytes</a></td><td><a href="ft2-system_interface.html#FT_Memory">FT_Memory</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_just</a></td></tr> -<tr><td><a href="ft2-header_file_macros.html#FT_CACHE_CHARMAP_H">FT_CACHE_CHARMAP_H</a></td><td><a href="ft2-system_interface.html#FT_MemoryRec">FT_MemoryRec</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_kern</a></td></tr> -<tr><td><a href="ft2-header_file_macros.html#FT_CACHE_H">FT_CACHE_H</a></td><td><a href="ft2-multiple_masters.html#FT_MM_Axis">FT_MM_Axis</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_lcar</a></td></tr> -<tr><td><a href="ft2-header_file_macros.html#FT_CACHE_IMAGE_H">FT_CACHE_IMAGE_H</a></td><td><a href="ft2-multiple_masters.html#FT_MM_Var">FT_MM_Var</a></td><td><a href="ft2-ot_validation.html#FT_VALIDATE_OTXXX">FT_VALIDATE_MATH</a></td></tr> -<tr><td><a href="ft2-header_file_macros.html#FT_CACHE_SMALL_BITMAPS_H">FT_CACHE_SMALL_BITMAPS_H</a></td><td><a href="ft2-header_file_macros.html#FT_MODULE_ERRORS_H">FT_MODULE_ERRORS_H</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_CKERNXXX">FT_VALIDATE_MS</a></td></tr> -<tr><td><a href="ft2-computations.html#FT_CeilFix">FT_CeilFix</a></td><td><a href="ft2-header_file_macros.html#FT_MODULE_H">FT_MODULE_H</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_mort</a></td></tr> -<tr><td><a href="ft2-basic_types.html#FT_Char">FT_Char</a></td><td><a href="ft2-base_interface.html#FT_Module">FT_Module</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_morx</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_CharMap">FT_CharMap</a></td><td><a href="ft2-module_management.html#FT_Module_Class">FT_Module_Class</a></td><td><a href="ft2-ot_validation.html#FT_VALIDATE_OTXXX">FT_VALIDATE_OT</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_CharMapRec">FT_CharMapRec</a></td><td><a href="ft2-module_management.html#FT_Module_Constructor">FT_Module_Constructor</a></td><td><a href="ft2-ot_validation.html#FT_VALIDATE_OTXXX">FT_VALIDATE_OTXXX</a></td></tr> -<tr><td><a href="ft2-header_file_macros.html#FT_CID_H">FT_CID_H</a></td><td><a href="ft2-module_management.html#FT_Module_Destructor">FT_Module_Destructor</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_opbd</a></td></tr> -<tr><td><a href="ft2-gx_validation.html#FT_ClassicKern_Free">FT_ClassicKern_Free</a></td><td><a href="ft2-module_management.html#FT_Module_Requester">FT_Module_Requester</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_prop</a></td></tr> -<tr><td><a href="ft2-gx_validation.html#FT_ClassicKern_Validate">FT_ClassicKern_Validate</a></td><td><a href="ft2-header_file_macros.html#FT_MULTIPLE_MASTERS_H">FT_MULTIPLE_MASTERS_H</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_trak</a></td></tr> -<tr><td><a href="ft2-header_file_macros.html#FT_CONFIG_CONFIG_H">FT_CONFIG_CONFIG_H</a></td><td><a href="ft2-computations.html#FT_MulDiv">FT_MulDiv</a></td><td><a href="ft2-multiple_masters.html#FT_Var_Axis">FT_Var_Axis</a></td></tr> -<tr><td><a href="ft2-header_file_macros.html#FT_CONFIG_MODULES_H">FT_CONFIG_MODULES_H</a></td><td><a href="ft2-computations.html#FT_MulFix">FT_MulFix</a></td><td><a href="ft2-multiple_masters.html#FT_Var_Named_Style">FT_Var_Named_Style</a></td></tr> -<tr><td><a href="ft2-header_file_macros.html#FT_CONFIG_OPTIONS_H">FT_CONFIG_OPTIONS_H</a></td><td><a href="ft2-multiple_masters.html#FT_Multi_Master">FT_Multi_Master</a></td><td><a href="ft2-basic_types.html#FT_Vector">FT_Vector</a></td></tr> -<tr><td><a href="ft2-header_file_macros.html#FT_CONFIG_STANDARD_LIBRARY_H">FT_CONFIG_STANDARD_LIBRARY_H</a></td><td><a href="ft2-base_interface.html#FT_New_Face">FT_New_Face</a></td><td><a href="ft2-computations.html#FT_Vector_From_Polar">FT_Vector_From_Polar</a></td></tr> -<tr><td><a href="ft2-computations.html#FT_Cos">FT_Cos</a></td><td><a href="ft2-mac_specific.html#FT_New_Face_From_FOND">FT_New_Face_From_FOND</a></td><td><a href="ft2-computations.html#FT_Vector_Length">FT_Vector_Length</a></td></tr> -<tr><td><a href="ft2-basic_types.html#FT_Data">FT_Data</a></td><td><a href="ft2-mac_specific.html#FT_New_Face_From_FSRef">FT_New_Face_From_FSRef</a></td><td><a href="ft2-computations.html#FT_Vector_Polarize">FT_Vector_Polarize</a></td></tr> -<tr><td><a href="ft2-computations.html#FT_DivFix">FT_DivFix</a></td><td><a href="ft2-mac_specific.html#FT_New_Face_From_FSSpec">FT_New_Face_From_FSSpec</a></td><td><a href="ft2-computations.html#FT_Vector_Rotate">FT_Vector_Rotate</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Done_Face">FT_Done_Face</a></td><td><a href="ft2-module_management.html#FT_New_Library">FT_New_Library</a></td><td><a href="ft2-computations.html#FT_Vector_Transform">FT_Vector_Transform</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Done_FreeType">FT_Done_FreeType</a></td><td><a href="ft2-base_interface.html#FT_New_Memory_Face">FT_New_Memory_Face</a></td><td><a href="ft2-computations.html#FT_Vector_Unit">FT_Vector_Unit</a></td></tr> -<tr><td><a href="ft2-glyph_management.html#FT_Done_Glyph">FT_Done_Glyph</a></td><td><a href="ft2-sizes_management.html#FT_New_Size">FT_New_Size</a></td><td><a href="ft2-header_file_macros.html#FT_WINFONTS_H">FT_WINFONTS_H</a></td></tr> -<tr><td><a href="ft2-module_management.html#FT_Done_Library">FT_Done_Library</a></td><td><a href="ft2-basic_types.html#FT_Offset">FT_Offset</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_Header">FT_WinFNT_Header</a></td></tr> -<tr><td><a href="ft2-sizes_management.html#FT_Done_Size">FT_Done_Size</a></td><td><a href="ft2-base_interface.html#FT_OPEN_XXX">FT_OPEN_DRIVER</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_HeaderRec">FT_WinFNT_HeaderRec</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Driver">FT_Driver</a></td><td><a href="ft2-base_interface.html#FT_OPEN_XXX">FT_OPEN_MEMORY</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP1250</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_ENC_TAG">FT_ENC_TAG</a></td><td><a href="ft2-base_interface.html#FT_OPEN_XXX">FT_OPEN_PARAMS</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP1251</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_ADOBE_CUSTOM</a></td><td><a href="ft2-base_interface.html#FT_OPEN_XXX">FT_OPEN_PATHNAME</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP1252</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_ADOBE_EXPERT</a></td><td><a href="ft2-base_interface.html#FT_OPEN_XXX">FT_OPEN_STREAM</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP1253</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_ADOBE_LATIN_1</a></td><td><a href="ft2-base_interface.html#FT_OPEN_XXX">FT_OPEN_XXX</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP1254</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_ADOBE_STANDARD</a></td><td><a href="ft2-header_file_macros.html#FT_OPENTYPE_VALIDATE_H">FT_OPENTYPE_VALIDATE_H</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP1255</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_APPLE_ROMAN</a></td><td><a href="ft2-base_interface.html#FT_Open_Args">FT_Open_Args</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP1256</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_BIG5</a></td><td><a href="ft2-base_interface.html#FT_Open_Face">FT_Open_Face</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP1257</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_GB2312</a></td><td><a href="ft2-ot_validation.html#FT_OpenType_Free">FT_OpenType_Free</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP1258</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_JOHAB</a></td><td><a href="ft2-ot_validation.html#FT_OpenType_Validate">FT_OpenType_Validate</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP1361</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_MS_BIG5</a></td><td><a href="ft2-outline_processing.html#FT_Orientation">FT_ORIENTATION_FILL_LEFT</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP874</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_MS_GB2312</a></td><td><a href="ft2-outline_processing.html#FT_Orientation">FT_ORIENTATION_FILL_RIGHT</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP932</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_MS_JOHAB</a></td><td><a href="ft2-outline_processing.html#FT_Orientation">FT_ORIENTATION_NONE</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP936</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_MS_SJIS</a></td><td><a href="ft2-outline_processing.html#FT_Orientation">FT_ORIENTATION_POSTSCRIPT</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP949</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_MS_SYMBOL</a></td><td><a href="ft2-outline_processing.html#FT_Orientation">FT_ORIENTATION_TRUETYPE</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP950</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_MS_WANSUNG</a></td><td><a href="ft2-outline_processing.html#FT_Orientation">FT_Orientation</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_DEFAULT</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_NONE</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_EVEN_ODD_FILL</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_MAC</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_OLD_LATIN_2</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_FLAGS</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_OEM</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_SJIS</a></td><td><a href="ft2-header_file_macros.html#FT_OUTLINE_H">FT_OUTLINE_H</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_SYMBOL</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_UNICODE</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_HIGH_PRECISION</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_XXX</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_WANSUNG</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_IGNORE_DROPOUTS</a></td><td><a href="ft2-header_file_macros.html#FT_XFREE86_H">FT_XFREE86_H</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_Encoding</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_NONE</a></td><td><a href="ft2-cache_subsystem.html#FTC_CMapCache">FTC_CMapCache</a></td></tr> -<tr><td><a href="ft2-header_file_macros.html#FT_ERRORS_H">FT_ERRORS_H</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_OWNER</a></td><td><a href="ft2-cache_subsystem.html#FTC_CMapCache_Lookup">FTC_CMapCache_Lookup</a></td></tr> -<tr><td><a href="ft2-basic_types.html#FT_Error">FT_Error</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_REVERSE_FILL</a></td><td><a href="ft2-cache_subsystem.html#FTC_CMapCache_New">FTC_CMapCache_New</a></td></tr> -<tr><td><a href="ft2-basic_types.html#FT_F26Dot6">FT_F26Dot6</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_SINGLE_PASS</a></td><td><a href="ft2-cache_subsystem.html#FTC_Face_Requester">FTC_Face_Requester</a></td></tr> -<tr><td><a href="ft2-basic_types.html#FT_F2Dot14">FT_F2Dot14</a></td><td><a href="ft2-outline_processing.html#FT_Outline">FT_Outline</a></td><td><a href="ft2-cache_subsystem.html#FTC_FaceID">FTC_FaceID</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_CID_KEYED</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Check">FT_Outline_Check</a></td><td><a href="ft2-cache_subsystem.html#FTC_ImageCache">FTC_ImageCache</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_EXTERNAL_STREAM</a></td><td><a href="ft2-outline_processing.html#FT_Outline_ConicToFunc">FT_Outline_ConicToFunc</a></td><td><a href="ft2-cache_subsystem.html#FTC_ImageCache_Lookup">FTC_ImageCache_Lookup</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_FAST_GLYPHS</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Copy">FT_Outline_Copy</a></td><td><a href="ft2-cache_subsystem.html#FTC_ImageCache_LookupScaler">FTC_ImageCache_LookupScaler</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_FIXED_SIZES</a></td><td><a href="ft2-outline_processing.html#FT_Outline_CubicToFunc">FT_Outline_CubicToFunc</a></td><td><a href="ft2-cache_subsystem.html#FTC_ImageCache_New">FTC_ImageCache_New</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_FIXED_WIDTH</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Decompose">FT_Outline_Decompose</a></td><td><a href="ft2-cache_subsystem.html#FTC_ImageType">FTC_ImageType</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_GLYPH_NAMES</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Done">FT_Outline_Done</a></td><td><a href="ft2-cache_subsystem.html#FTC_ImageTypeRec">FTC_ImageTypeRec</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_HINTER</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Embolden">FT_Outline_Embolden</a></td><td><a href="ft2-cache_subsystem.html#FTC_Manager">FTC_Manager</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_HORIZONTAL</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Funcs">FT_Outline_Funcs</a></td><td><a href="ft2-cache_subsystem.html#FTC_Manager_Done">FTC_Manager_Done</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_KERNING</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Get_BBox">FT_Outline_Get_BBox</a></td><td><a href="ft2-cache_subsystem.html#FTC_Manager_LookupFace">FTC_Manager_LookupFace</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_MULTIPLE_MASTERS</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Get_Bitmap">FT_Outline_Get_Bitmap</a></td><td><a href="ft2-cache_subsystem.html#FTC_Manager_LookupSize">FTC_Manager_LookupSize</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_SCALABLE</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Get_CBox">FT_Outline_Get_CBox</a></td><td><a href="ft2-cache_subsystem.html#FTC_Manager_New">FTC_Manager_New</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_SFNT</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Get_Orientation">FT_Outline_Get_Orientation</a></td><td><a href="ft2-cache_subsystem.html#FTC_Manager_RemoveFaceID">FTC_Manager_RemoveFaceID</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_VERTICAL</a></td><td><a href="ft2-glyph_stroker.html#FT_Outline_GetInsideBorder">FT_Outline_GetInsideBorder</a></td><td><a href="ft2-cache_subsystem.html#FTC_Manager_Reset">FTC_Manager_Reset</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_XXX</a></td><td><a href="ft2-glyph_stroker.html#FT_Outline_GetOutsideBorder">FT_Outline_GetOutsideBorder</a></td><td><a href="ft2-cache_subsystem.html#FTC_Node">FTC_Node</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Face">FT_Face</a></td><td><a href="ft2-outline_processing.html#FT_Outline_LineToFunc">FT_Outline_LineToFunc</a></td><td><a href="ft2-cache_subsystem.html#FTC_Node_Unref">FTC_Node_Unref</a></td></tr> -<tr><td><a href="ft2-version.html#FT_Face_CheckTrueTypePatents">FT_Face_CheckTrueTypePatents</a></td><td><a href="ft2-outline_processing.html#FT_Outline_MoveToFunc">FT_Outline_MoveToFunc</a></td><td><a href="ft2-cache_subsystem.html#FTC_SBit">FTC_SBit</a></td></tr> -<tr><td><a href="ft2-glyph_variants.html#FT_Face_GetCharsOfVariant">FT_Face_GetCharsOfVariant</a></td><td><a href="ft2-outline_processing.html#FT_Outline_New">FT_Outline_New</a></td><td><a href="ft2-cache_subsystem.html#FTC_SBitCache">FTC_SBitCache</a></td></tr> -<tr><td><a href="ft2-glyph_variants.html#FT_Face_GetCharVariantIndex">FT_Face_GetCharVariantIndex</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Render">FT_Outline_Render</a></td><td><a href="ft2-cache_subsystem.html#FTC_SBitCache_Lookup">FTC_SBitCache_Lookup</a></td></tr> -<tr><td><a href="ft2-glyph_variants.html#FT_Face_GetCharVariantIsDefault">FT_Face_GetCharVariantIsDefault</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Reverse">FT_Outline_Reverse</a></td><td><a href="ft2-cache_subsystem.html#FTC_SBitCache_LookupScaler">FTC_SBitCache_LookupScaler</a></td></tr> -<tr><td><a href="ft2-glyph_variants.html#FT_Face_GetVariantSelectors">FT_Face_GetVariantSelectors</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Transform">FT_Outline_Transform</a></td><td><a href="ft2-cache_subsystem.html#FTC_SBitCache_New">FTC_SBitCache_New</a></td></tr> -<tr><td><a href="ft2-glyph_variants.html#FT_Face_GetVariantsOfChar">FT_Face_GetVariantsOfChar</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Translate">FT_Outline_Translate</a></td><td><a href="ft2-cache_subsystem.html#FTC_SBitRec">FTC_SBitRec</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Face_Internal">FT_Face_Internal</a></td><td><a href="ft2-glyph_management.html#FT_OutlineGlyph">FT_OutlineGlyph</a></td><td><a href="ft2-cache_subsystem.html#FTC_Scaler">FTC_Scaler</a></td></tr> -<tr><td><a href="ft2-version.html#FT_Face_SetUnpatentedHinting">FT_Face_SetUnpatentedHinting</a></td><td><a href="ft2-glyph_management.html#FT_OutlineGlyphRec">FT_OutlineGlyphRec</a></td><td><a href="ft2-cache_subsystem.html#FTC_ScalerRec">FTC_ScalerRec</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_FaceRec">FT_FaceRec</a></td><td><a href="ft2-incremental.html#FT_PARAM_TAG_INCREMENTAL">FT_PARAM_TAG_INCREMENTAL</a></td><td><a href="ft2-base_interface.html#ft_encoding_xxx">ft_encoding_xxx</a></td></tr> -<tr><td><a href="ft2-basic_types.html#FT_Fixed">FT_Fixed</a></td><td><a href="ft2-truetype_tables.html#FT_PARAM_TAG_UNPATENTED_HINTING">FT_PARAM_TAG_UNPATENTED_HINTING</a></td><td><a href="ft2-glyph_management.html#ft_glyph_bbox_xxx">ft_glyph_bbox_gridfit</a></td></tr> -<tr><td><a href="ft2-computations.html#FT_FloorFix">FT_FloorFix</a></td><td><a href="ft2-basic_types.html#FT_Palette_Mode">FT_Palette_Mode</a></td><td><a href="ft2-glyph_management.html#ft_glyph_bbox_xxx">ft_glyph_bbox_pixels</a></td></tr> -<tr><td><a href="ft2-header_file_macros.html#FT_FREETYPE_H">FT_FREETYPE_H</a></td><td><a href="ft2-base_interface.html#FT_Parameter">FT_Parameter</a></td><td><a href="ft2-glyph_management.html#ft_glyph_bbox_xxx">ft_glyph_bbox_subpixels</a></td></tr> -<tr><td><a href="ft2-system_interface.html#FT_Free_Func">FT_Free_Func</a></td><td><a href="ft2-header_file_macros.html#FT_PFR_H">FT_PFR_H</a></td><td><a href="ft2-glyph_management.html#ft_glyph_bbox_xxx">ft_glyph_bbox_truncate</a></td></tr> -<tr><td><a href="ft2-basic_types.html#FT_FWord">FT_FWord</a></td><td><a href="ft2-basic_types.html#FT_Pixel_Mode">FT_PIXEL_MODE_GRAY</a></td><td><a href="ft2-glyph_management.html#ft_glyph_bbox_xxx">ft_glyph_bbox_unscaled</a></td></tr> -<tr><td><a href="ft2-gasp_table.html#FT_GASP_XXX">FT_GASP_DO_GRAY</a></td><td><a href="ft2-basic_types.html#FT_Pixel_Mode">FT_PIXEL_MODE_GRAY2</a></td><td><a href="ft2-glyph_management.html#ft_glyph_bbox_xxx">ft_glyph_bbox_xxx</a></td></tr> -<tr><td><a href="ft2-gasp_table.html#FT_GASP_XXX">FT_GASP_DO_GRIDFIT</a></td><td><a href="ft2-basic_types.html#FT_Pixel_Mode">FT_PIXEL_MODE_GRAY4</a></td><td><a href="ft2-basic_types.html#ft_glyph_format_xxx">ft_glyph_format_bitmap</a></td></tr> -<tr><td><a href="ft2-header_file_macros.html#FT_GASP_H">FT_GASP_H</a></td><td><a href="ft2-basic_types.html#FT_Pixel_Mode">FT_PIXEL_MODE_LCD</a></td><td><a href="ft2-basic_types.html#ft_glyph_format_xxx">ft_glyph_format_composite</a></td></tr> -<tr><td><a href="ft2-gasp_table.html#FT_GASP_XXX">FT_GASP_NO_TABLE</a></td><td><a href="ft2-basic_types.html#FT_Pixel_Mode">FT_PIXEL_MODE_LCD_V</a></td><td><a href="ft2-basic_types.html#ft_glyph_format_xxx">ft_glyph_format_none</a></td></tr> -<tr><td><a href="ft2-gasp_table.html#FT_GASP_XXX">FT_GASP_SYMMETRIC_GRIDFIT</a></td><td><a href="ft2-basic_types.html#FT_Pixel_Mode">FT_PIXEL_MODE_MONO</a></td><td><a href="ft2-basic_types.html#ft_glyph_format_xxx">ft_glyph_format_outline</a></td></tr> -<tr><td><a href="ft2-gasp_table.html#FT_GASP_XXX">FT_GASP_SYMMETRIC_SMOOTHING</a></td><td><a href="ft2-basic_types.html#FT_Pixel_Mode">FT_PIXEL_MODE_NONE</a></td><td><a href="ft2-basic_types.html#ft_glyph_format_xxx">ft_glyph_format_plotter</a></td></tr> -<tr><td><a href="ft2-gasp_table.html#FT_GASP_XXX">FT_GASP_XXX</a></td><td><a href="ft2-basic_types.html#FT_Pixel_Mode">FT_Pixel_Mode</a></td><td><a href="ft2-basic_types.html#ft_glyph_format_xxx">ft_glyph_format_xxx</a></td></tr> -<tr><td><a href="ft2-basic_types.html#FT_Generic">FT_Generic</a></td><td><a href="ft2-basic_types.html#FT_Pointer">FT_Pointer</a></td><td><a href="ft2-base_interface.html#ft_kerning_default">ft_kerning_default</a></td></tr> -<tr><td><a href="ft2-basic_types.html#FT_Generic_Finalizer">FT_Generic_Finalizer</a></td><td><a href="ft2-basic_types.html#FT_Pos">FT_Pos</a></td><td><a href="ft2-base_interface.html#ft_kerning_unfitted">ft_kerning_unfitted</a></td></tr> -<tr><td><a href="ft2-bdf_fonts.html#FT_Get_BDF_Charset_ID">FT_Get_BDF_Charset_ID</a></td><td><a href="ft2-bdf_fonts.html#FT_PropertyType">FT_PropertyType</a></td><td><a href="ft2-base_interface.html#ft_kerning_unscaled">ft_kerning_unscaled</a></td></tr> -<tr><td><a href="ft2-bdf_fonts.html#FT_Get_BDF_Property">FT_Get_BDF_Property</a></td><td><a href="ft2-basic_types.html#FT_PtrDist">FT_PtrDist</a></td><td><a href="ft2-base_interface.html#FT_OPEN_XXX">ft_open_driver</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Get_Char_Index">FT_Get_Char_Index</a></td><td><a href="ft2-raster.html#FT_RASTER_FLAG_XXX">FT_RASTER_FLAG_AA</a></td><td><a href="ft2-base_interface.html#FT_OPEN_XXX">ft_open_memory</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Get_Charmap_Index">FT_Get_Charmap_Index</a></td><td><a href="ft2-raster.html#FT_RASTER_FLAG_XXX">FT_RASTER_FLAG_CLIP</a></td><td><a href="ft2-base_interface.html#FT_OPEN_XXX">ft_open_params</a></td></tr> -<tr><td><a href="ft2-cid_fonts.html#FT_Get_CID_Registry_Ordering_Supplement">FT_Get_CID_Registry_Ordering_Supplement</a></td><td><a href="ft2-raster.html#FT_RASTER_FLAG_XXX">FT_RASTER_FLAG_DEFAULT</a></td><td><a href="ft2-base_interface.html#FT_OPEN_XXX">ft_open_pathname</a></td></tr> -<tr><td><a href="ft2-truetype_tables.html#FT_Get_CMap_Format">FT_Get_CMap_Format</a></td><td><a href="ft2-raster.html#FT_RASTER_FLAG_XXX">FT_RASTER_FLAG_DIRECT</a></td><td><a href="ft2-base_interface.html#FT_OPEN_XXX">ft_open_stream</a></td></tr> -<tr><td><a href="ft2-truetype_tables.html#FT_Get_CMap_Language_ID">FT_Get_CMap_Language_ID</a></td><td><a href="ft2-raster.html#FT_RASTER_FLAG_XXX">FT_RASTER_FLAG_XXX</a></td><td><a href="ft2-outline_processing.html#ft_outline_flags">ft_outline_even_odd_fill</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Get_First_Char">FT_Get_First_Char</a></td><td><a href="ft2-raster.html#FT_Raster">FT_Raster</a></td><td><a href="ft2-outline_processing.html#ft_outline_flags">ft_outline_flags</a></td></tr> -<tr><td><a href="ft2-gasp_table.html#FT_Get_Gasp">FT_Get_Gasp</a></td><td><a href="ft2-raster.html#FT_Raster_BitSet_Func">FT_Raster_BitSet_Func</a></td><td><a href="ft2-outline_processing.html#ft_outline_flags">ft_outline_high_precision</a></td></tr> -<tr><td><a href="ft2-glyph_management.html#FT_Get_Glyph">FT_Get_Glyph</a></td><td><a href="ft2-raster.html#FT_Raster_BitTest_Func">FT_Raster_BitTest_Func</a></td><td><a href="ft2-outline_processing.html#ft_outline_flags">ft_outline_ignore_dropouts</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Get_Glyph_Name">FT_Get_Glyph_Name</a></td><td><a href="ft2-raster.html#FT_Raster_DoneFunc">FT_Raster_DoneFunc</a></td><td><a href="ft2-outline_processing.html#ft_outline_flags">ft_outline_none</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Get_Kerning">FT_Get_Kerning</a></td><td><a href="ft2-raster.html#FT_Raster_Funcs">FT_Raster_Funcs</a></td><td><a href="ft2-outline_processing.html#ft_outline_flags">ft_outline_owner</a></td></tr> -<tr><td><a href="ft2-multiple_masters.html#FT_Get_MM_Var">FT_Get_MM_Var</a></td><td><a href="ft2-raster.html#FT_Raster_NewFunc">FT_Raster_NewFunc</a></td><td><a href="ft2-outline_processing.html#ft_outline_flags">ft_outline_reverse_fill</a></td></tr> -<tr><td><a href="ft2-module_management.html#FT_Get_Module">FT_Get_Module</a></td><td><a href="ft2-raster.html#FT_Raster_Params">FT_Raster_Params</a></td><td><a href="ft2-outline_processing.html#ft_outline_flags">ft_outline_single_pass</a></td></tr> -<tr><td><a href="ft2-multiple_masters.html#FT_Get_Multi_Master">FT_Get_Multi_Master</a></td><td><a href="ft2-raster.html#FT_Raster_RenderFunc">FT_Raster_RenderFunc</a></td><td><a href="ft2-basic_types.html#FT_Palette_Mode">ft_palette_mode_rgb</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Get_Name_Index">FT_Get_Name_Index</a></td><td><a href="ft2-raster.html#FT_Raster_ResetFunc">FT_Raster_ResetFunc</a></td><td><a href="ft2-basic_types.html#FT_Palette_Mode">ft_palette_mode_rgba</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Get_Next_Char">FT_Get_Next_Char</a></td><td><a href="ft2-raster.html#FT_Raster_SetModeFunc">FT_Raster_SetModeFunc</a></td><td><a href="ft2-basic_types.html#ft_pixel_mode_xxx">ft_pixel_mode_grays</a></td></tr> -<tr><td><a href="ft2-pfr_fonts.html#FT_Get_PFR_Advance">FT_Get_PFR_Advance</a></td><td><a href="ft2-header_file_macros.html#FT_RENDER_H">FT_RENDER_H</a></td><td><a href="ft2-basic_types.html#ft_pixel_mode_xxx">ft_pixel_mode_mono</a></td></tr> -<tr><td><a href="ft2-pfr_fonts.html#FT_Get_PFR_Kerning">FT_Get_PFR_Kerning</a></td><td><a href="ft2-base_interface.html#FT_Render_Mode">FT_RENDER_MODE_LCD</a></td><td><a href="ft2-basic_types.html#ft_pixel_mode_xxx">ft_pixel_mode_none</a></td></tr> -<tr><td><a href="ft2-pfr_fonts.html#FT_Get_PFR_Metrics">FT_Get_PFR_Metrics</a></td><td><a href="ft2-base_interface.html#FT_Render_Mode">FT_RENDER_MODE_LCD_V</a></td><td><a href="ft2-basic_types.html#ft_pixel_mode_xxx">ft_pixel_mode_pal2</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Get_Postscript_Name">FT_Get_Postscript_Name</a></td><td><a href="ft2-base_interface.html#FT_Render_Mode">FT_RENDER_MODE_LIGHT</a></td><td><a href="ft2-basic_types.html#ft_pixel_mode_xxx">ft_pixel_mode_pal4</a></td></tr> -<tr><td><a href="ft2-type1_tables.html#FT_Get_PS_Font_Info">FT_Get_PS_Font_Info</a></td><td><a href="ft2-base_interface.html#FT_Render_Mode">FT_RENDER_MODE_MONO</a></td><td><a href="ft2-basic_types.html#ft_pixel_mode_xxx">ft_pixel_mode_xxx</a></td></tr> -<tr><td><a href="ft2-type1_tables.html#FT_Get_PS_Font_Private">FT_Get_PS_Font_Private</a></td><td><a href="ft2-base_interface.html#FT_Render_Mode">FT_RENDER_MODE_NORMAL</a></td><td><a href="ft2-base_interface.html#ft_render_mode_xxx">ft_render_mode_mono</a></td></tr> -<tr><td><a href="ft2-module_management.html#FT_Get_Renderer">FT_Get_Renderer</a></td><td><a href="ft2-system_interface.html#FT_Realloc_Func">FT_Realloc_Func</a></td><td><a href="ft2-base_interface.html#ft_render_mode_xxx">ft_render_mode_normal</a></td></tr> -<tr><td><a href="ft2-sfnt_names.html#FT_Get_Sfnt_Name">FT_Get_Sfnt_Name</a></td><td><a href="ft2-module_management.html#FT_Remove_Module">FT_Remove_Module</a></td><td><a href="ft2-base_interface.html#ft_render_mode_xxx">ft_render_mode_xxx</a></td></tr> -<tr><td><a href="ft2-sfnt_names.html#FT_Get_Sfnt_Name_Count">FT_Get_Sfnt_Name_Count</a></td><td><a href="ft2-base_interface.html#FT_Render_Glyph">FT_Render_Glyph</a></td><td><a href="ft2-type1_tables.html#PS_FontInfo">PS_FontInfo</a></td></tr> -<tr><td><a href="ft2-truetype_tables.html#FT_Get_Sfnt_Table">FT_Get_Sfnt_Table</a></td><td><a href="ft2-base_interface.html#FT_Render_Mode">FT_Render_Mode</a></td><td><a href="ft2-type1_tables.html#PS_FontInfoRec">PS_FontInfoRec</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Get_SubGlyph_Info">FT_Get_SubGlyph_Info</a></td><td><a href="ft2-base_interface.html#FT_Renderer">FT_Renderer</a></td><td><a href="ft2-type1_tables.html#PS_Private">PS_Private</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Get_Track_Kerning">FT_Get_Track_Kerning</a></td><td><a href="ft2-module_management.html#FT_Renderer_Class">FT_Renderer_Class</a></td><td><a href="ft2-type1_tables.html#PS_PrivateRec">PS_PrivateRec</a></td></tr> -<tr><td><a href="ft2-truetype_engine.html#FT_Get_TrueType_Engine_Type">FT_Get_TrueType_Engine_Type</a></td><td><a href="ft2-base_interface.html#FT_Request_Size">FT_Request_Size</a></td><td><a href="ft2-type1_tables.html#T1_Blend_Flags">T1_Blend_Flags</a></td></tr> -<tr><td><a href="ft2-winfnt_fonts.html#FT_Get_WinFNT_Header">FT_Get_WinFNT_Header</a></td><td><a href="ft2-computations.html#FT_RoundFix">FT_RoundFix</a></td><td><a href="ft2-type1_tables.html#T1_FontInfo">T1_FontInfo</a></td></tr> -<tr><td><a href="ft2-font_formats.html#FT_Get_X11_Font_Format">FT_Get_X11_Font_Format</a></td><td><a href="ft2-base_interface.html#FT_Select_Charmap">FT_Select_Charmap</a></td><td><a href="ft2-type1_tables.html#T1_Private">T1_Private</a></td></tr> -<tr><td><a href="ft2-mac_specific.html#FT_GetFile_From_Mac_ATS_Name">FT_GetFile_From_Mac_ATS_Name</a></td><td><a href="ft2-base_interface.html#FT_Select_Size">FT_Select_Size</a></td><td><a href="ft2-truetype_tables.html#TT_ADOBE_ID_XXX">TT_ADOBE_ID_CUSTOM</a></td></tr> -<tr><td><a href="ft2-mac_specific.html#FT_GetFile_From_Mac_Name">FT_GetFile_From_Mac_Name</a></td><td><a href="ft2-base_interface.html#FT_Set_Char_Size">FT_Set_Char_Size</a></td><td><a href="ft2-truetype_tables.html#TT_ADOBE_ID_XXX">TT_ADOBE_ID_EXPERT</a></td></tr> -<tr><td><a href="ft2-mac_specific.html#FT_GetFilePath_From_Mac_ATS_Name">FT_GetFilePath_From_Mac_ATS_Name</a></td><td><a href="ft2-base_interface.html#FT_Set_Charmap">FT_Set_Charmap</a></td><td><a href="ft2-truetype_tables.html#TT_ADOBE_ID_XXX">TT_ADOBE_ID_LATIN_1</a></td></tr> -<tr><td><a href="ft2-glyph_management.html#FT_Glyph_BBox_Mode">FT_GLYPH_BBOX_GRIDFIT</a></td><td><a href="ft2-module_management.html#FT_Set_Debug_Hook">FT_Set_Debug_Hook</a></td><td><a href="ft2-truetype_tables.html#TT_ADOBE_ID_XXX">TT_ADOBE_ID_STANDARD</a></td></tr> -<tr><td><a href="ft2-glyph_management.html#FT_Glyph_BBox_Mode">FT_GLYPH_BBOX_PIXELS</a></td><td><a href="ft2-multiple_masters.html#FT_Set_MM_Blend_Coordinates">FT_Set_MM_Blend_Coordinates</a></td><td><a href="ft2-truetype_tables.html#TT_ADOBE_ID_XXX">TT_ADOBE_ID_XXX</a></td></tr> -<tr><td><a href="ft2-glyph_management.html#FT_Glyph_BBox_Mode">FT_GLYPH_BBOX_SUBPIXELS</a></td><td><a href="ft2-multiple_masters.html#FT_Set_MM_Design_Coordinates">FT_Set_MM_Design_Coordinates</a></td><td><a href="ft2-truetype_tables.html#TT_APPLE_ID_XXX">TT_APPLE_ID_DEFAULT</a></td></tr> -<tr><td><a href="ft2-glyph_management.html#FT_Glyph_BBox_Mode">FT_GLYPH_BBOX_TRUNCATE</a></td><td><a href="ft2-base_interface.html#FT_Set_Pixel_Sizes">FT_Set_Pixel_Sizes</a></td><td><a href="ft2-truetype_tables.html#TT_APPLE_ID_XXX">TT_APPLE_ID_ISO_10646</a></td></tr> -<tr><td><a href="ft2-glyph_management.html#FT_Glyph_BBox_Mode">FT_GLYPH_BBOX_UNSCALED</a></td><td><a href="ft2-module_management.html#FT_Set_Renderer">FT_Set_Renderer</a></td><td><a href="ft2-truetype_tables.html#TT_APPLE_ID_XXX">TT_APPLE_ID_UNICODE_1_1</a></td></tr> -<tr><td><a href="ft2-basic_types.html#FT_Glyph_Format">FT_GLYPH_FORMAT_BITMAP</a></td><td><a href="ft2-base_interface.html#FT_Set_Transform">FT_Set_Transform</a></td><td><a href="ft2-truetype_tables.html#TT_APPLE_ID_XXX">TT_APPLE_ID_UNICODE_2_0</a></td></tr> -<tr><td><a href="ft2-basic_types.html#FT_Glyph_Format">FT_GLYPH_FORMAT_COMPOSITE</a></td><td><a href="ft2-multiple_masters.html#FT_Set_Var_Blend_Coordinates">FT_Set_Var_Blend_Coordinates</a></td><td><a href="ft2-truetype_tables.html#TT_APPLE_ID_XXX">TT_APPLE_ID_UNICODE_32</a></td></tr> -<tr><td><a href="ft2-basic_types.html#FT_Glyph_Format">FT_GLYPH_FORMAT_NONE</a></td><td><a href="ft2-multiple_masters.html#FT_Set_Var_Design_Coordinates">FT_Set_Var_Design_Coordinates</a></td><td><a href="ft2-truetype_tables.html#TT_APPLE_ID_XXX">TT_APPLE_ID_VARIANT_SELECTOR</a></td></tr> -<tr><td><a href="ft2-basic_types.html#FT_Glyph_Format">FT_GLYPH_FORMAT_OUTLINE</a></td><td><a href="ft2-header_file_macros.html#FT_SFNT_NAMES_H">FT_SFNT_NAMES_H</a></td><td><a href="ft2-truetype_tables.html#TT_APPLE_ID_XXX">TT_APPLE_ID_XXX</a></td></tr> -<tr><td><a href="ft2-basic_types.html#FT_Glyph_Format">FT_GLYPH_FORMAT_PLOTTER</a></td><td><a href="ft2-truetype_tables.html#FT_Sfnt_Table_Info">FT_Sfnt_Table_Info</a></td><td><a href="ft2-truetype_tables.html#TT_Header">TT_Header</a></td></tr> -<tr><td><a href="ft2-header_file_macros.html#FT_GLYPH_H">FT_GLYPH_H</a></td><td><a href="ft2-truetype_tables.html#FT_Sfnt_Tag">FT_Sfnt_Tag</a></td><td><a href="ft2-truetype_tables.html#TT_HoriHeader">TT_HoriHeader</a></td></tr> -<tr><td><a href="ft2-glyph_management.html#FT_Glyph">FT_Glyph</a></td><td><a href="ft2-sfnt_names.html#FT_SfntName">FT_SfntName</a></td><td><a href="ft2-truetype_tables.html#TT_ISO_ID_XXX">TT_ISO_ID_10646</a></td></tr> -<tr><td><a href="ft2-glyph_management.html#FT_Glyph_BBox_Mode">FT_Glyph_BBox_Mode</a></td><td><a href="ft2-basic_types.html#FT_Short">FT_Short</a></td><td><a href="ft2-truetype_tables.html#TT_ISO_ID_XXX">TT_ISO_ID_7BIT_ASCII</a></td></tr> -<tr><td><a href="ft2-glyph_management.html#FT_Glyph_Copy">FT_Glyph_Copy</a></td><td><a href="ft2-base_interface.html#FT_Size_Request_Type">FT_SIZE_REQUEST_TYPE_BBOX</a></td><td><a href="ft2-truetype_tables.html#TT_ISO_ID_XXX">TT_ISO_ID_8859_1</a></td></tr> -<tr><td><a href="ft2-basic_types.html#FT_Glyph_Format">FT_Glyph_Format</a></td><td><a href="ft2-base_interface.html#FT_Size_Request_Type">FT_SIZE_REQUEST_TYPE_CELL</a></td><td><a href="ft2-truetype_tables.html#TT_ISO_ID_XXX">TT_ISO_ID_XXX</a></td></tr> -<tr><td><a href="ft2-glyph_management.html#FT_Glyph_Get_CBox">FT_Glyph_Get_CBox</a></td><td><a href="ft2-base_interface.html#FT_Size_Request_Type">FT_SIZE_REQUEST_TYPE_NOMINAL</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_ARABIC</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Glyph_Metrics">FT_Glyph_Metrics</a></td><td><a href="ft2-base_interface.html#FT_Size_Request_Type">FT_SIZE_REQUEST_TYPE_REAL_DIM</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_ARMENIAN</a></td></tr> -<tr><td><a href="ft2-glyph_stroker.html#FT_Glyph_Stroke">FT_Glyph_Stroke</a></td><td><a href="ft2-base_interface.html#FT_Size_Request_Type">FT_SIZE_REQUEST_TYPE_SCALES</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_BENGALI</a></td></tr> -<tr><td><a href="ft2-glyph_stroker.html#FT_Glyph_StrokeBorder">FT_Glyph_StrokeBorder</a></td><td><a href="ft2-header_file_macros.html#FT_SIZES_H">FT_SIZES_H</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_BURMESE</a></td></tr> -<tr><td><a href="ft2-glyph_management.html#FT_Glyph_To_Bitmap">FT_Glyph_To_Bitmap</a></td><td><a href="ft2-computations.html#FT_Sin">FT_Sin</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_DEVANAGARI</a></td></tr> -<tr><td><a href="ft2-glyph_management.html#FT_Glyph_Transform">FT_Glyph_Transform</a></td><td><a href="ft2-base_interface.html#FT_Size">FT_Size</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_GEEZ</a></td></tr> -<tr><td><a href="ft2-glyph_management.html#FT_GlyphRec">FT_GlyphRec</a></td><td><a href="ft2-base_interface.html#FT_Size_Internal">FT_Size_Internal</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_GEORGIAN</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_GlyphSlot">FT_GlyphSlot</a></td><td><a href="ft2-base_interface.html#FT_Size_Metrics">FT_Size_Metrics</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_GREEK</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_GlyphSlotRec">FT_GlyphSlotRec</a></td><td><a href="ft2-base_interface.html#FT_Size_Request">FT_Size_Request</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_GUJARATI</a></td></tr> -<tr><td><a href="ft2-header_file_macros.html#FT_GX_VALIDATE_H">FT_GX_VALIDATE_H</a></td><td><a href="ft2-base_interface.html#FT_Size_Request_Type">FT_Size_Request_Type</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_GURMUKHI</a></td></tr> -<tr><td><a href="ft2-header_file_macros.html#FT_GZIP_H">FT_GZIP_H</a></td><td><a href="ft2-base_interface.html#FT_Size_RequestRec">FT_Size_RequestRec</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_HEBREW</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_HAS_FAST_GLYPHS">FT_HAS_FAST_GLYPHS</a></td><td><a href="ft2-base_interface.html#FT_SizeRec">FT_SizeRec</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_JAPANESE</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_HAS_FIXED_SIZES">FT_HAS_FIXED_SIZES</a></td><td><a href="ft2-base_interface.html#FT_Slot_Internal">FT_Slot_Internal</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_KANNADA</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_HAS_GLYPH_NAMES">FT_HAS_GLYPH_NAMES</a></td><td><a href="ft2-raster.html#FT_Span">FT_Span</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_KHMER</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_HAS_HORIZONTAL">FT_HAS_HORIZONTAL</a></td><td><a href="ft2-raster.html#FT_SpanFunc">FT_SpanFunc</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_KOREAN</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_HAS_KERNING">FT_HAS_KERNING</a></td><td><a href="ft2-glyph_stroker.html#FT_StrokerBorder">FT_STROKER_BORDER_LEFT</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_LAOTIAN</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_HAS_MULTIPLE_MASTERS">FT_HAS_MULTIPLE_MASTERS</a></td><td><a href="ft2-glyph_stroker.html#FT_StrokerBorder">FT_STROKER_BORDER_RIGHT</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_MALAYALAM</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_HAS_VERTICAL">FT_HAS_VERTICAL</a></td><td><a href="ft2-header_file_macros.html#FT_STROKER_H">FT_STROKER_H</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_MALDIVIAN</a></td></tr> -<tr><td><a href="ft2-type1_tables.html#FT_Has_PS_Glyph_Names">FT_Has_PS_Glyph_Names</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineCap">FT_STROKER_LINECAP_BUTT</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_MONGOLIAN</a></td></tr> -<tr><td><a href="ft2-header_file_macros.html#FT_IMAGE_H">FT_IMAGE_H</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineCap">FT_STROKER_LINECAP_ROUND</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_ORIYA</a></td></tr> -<tr><td><a href="ft2-basic_types.html#FT_IMAGE_TAG">FT_IMAGE_TAG</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineCap">FT_STROKER_LINECAP_SQUARE</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_ROMAN</a></td></tr> -<tr><td><a href="ft2-header_file_macros.html#FT_INCREMENTAL_H">FT_INCREMENTAL_H</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineJoin">FT_STROKER_LINEJOIN_BEVEL</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_RSYMBOL</a></td></tr> -<tr><td><a href="ft2-incremental.html#FT_Incremental">FT_Incremental</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineJoin">FT_STROKER_LINEJOIN_MITER</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_RUSSIAN</a></td></tr> -<tr><td><a href="ft2-incremental.html#FT_Incremental_FreeGlyphDataFunc">FT_Incremental_FreeGlyphDataFunc</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineJoin">FT_STROKER_LINEJOIN_ROUND</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_SIMPLIFIED_CHINESE</a></td></tr> -<tr><td><a href="ft2-incremental.html#FT_Incremental_FuncsRec">FT_Incremental_FuncsRec</a></td><td><a href="ft2-base_interface.html#FT_STYLE_FLAG_XXX">FT_STYLE_FLAG_BOLD</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_SINDHI</a></td></tr> -<tr><td><a href="ft2-incremental.html#FT_Incremental_GetGlyphDataFunc">FT_Incremental_GetGlyphDataFunc</a></td><td><a href="ft2-base_interface.html#FT_STYLE_FLAG_XXX">FT_STYLE_FLAG_ITALIC</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_SINHALESE</a></td></tr> -<tr><td><a href="ft2-incremental.html#FT_Incremental_GetGlyphMetricsFunc">FT_Incremental_GetGlyphMetricsFunc</a></td><td><a href="ft2-base_interface.html#FT_STYLE_FLAG_XXX">FT_STYLE_FLAG_XXX</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_SLAVIC</a></td></tr> -<tr><td><a href="ft2-incremental.html#FT_Incremental_Interface">FT_Incremental_Interface</a></td><td><a href="ft2-system_interface.html#FT_Stream">FT_Stream</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_TAMIL</a></td></tr> -<tr><td><a href="ft2-incremental.html#FT_Incremental_InterfaceRec">FT_Incremental_InterfaceRec</a></td><td><a href="ft2-system_interface.html#FT_Stream_CloseFunc">FT_Stream_CloseFunc</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_TELUGU</a></td></tr> -<tr><td><a href="ft2-incremental.html#FT_Incremental_Metrics">FT_Incremental_Metrics</a></td><td><a href="ft2-system_interface.html#FT_Stream_IoFunc">FT_Stream_IoFunc</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_THAI</a></td></tr> -<tr><td><a href="ft2-incremental.html#FT_Incremental_MetricsRec">FT_Incremental_MetricsRec</a></td><td><a href="ft2-gzip.html#FT_Stream_OpenGzip">FT_Stream_OpenGzip</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_TIBETAN</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Init_FreeType">FT_Init_FreeType</a></td><td><a href="ft2-lzw.html#FT_Stream_OpenLZW">FT_Stream_OpenLZW</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_TRADITIONAL_CHINESE</a></td></tr> -<tr><td><a href="ft2-basic_types.html#FT_Int">FT_Int</a></td><td><a href="ft2-system_interface.html#FT_StreamDesc">FT_StreamDesc</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_UNINTERP</a></td></tr> -<tr><td><a href="ft2-basic_types.html#FT_Int16">FT_Int16</a></td><td><a href="ft2-system_interface.html#FT_StreamRec">FT_StreamRec</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_VIETNAMESE</a></td></tr> -<tr><td><a href="ft2-basic_types.html#FT_Int32">FT_Int32</a></td><td><a href="ft2-basic_types.html#FT_String">FT_String</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_XXX</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_IS_CID_KEYED">FT_IS_CID_KEYED</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker">FT_Stroker</a></td><td><a href="ft2-truetype_tables.html#TT_MaxProfile">TT_MaxProfile</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_IS_FIXED_WIDTH">FT_IS_FIXED_WIDTH</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_BeginSubPath">FT_Stroker_BeginSubPath</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_BIG_5</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_IS_SCALABLE">FT_IS_SCALABLE</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_ConicTo">FT_Stroker_ConicTo</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_GB2312</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_IS_SFNT">FT_IS_SFNT</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_CubicTo">FT_Stroker_CubicTo</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_JOHAB</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Kerning_Mode">FT_KERNING_DEFAULT</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_Done">FT_Stroker_Done</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_SJIS</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Kerning_Mode">FT_KERNING_UNFITTED</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_EndSubPath">FT_Stroker_EndSubPath</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_SYMBOL_CS</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Kerning_Mode">FT_KERNING_UNSCALED</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_Export">FT_Stroker_Export</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_UCS_4</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Kerning_Mode">FT_Kerning_Mode</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_ExportBorder">FT_Stroker_ExportBorder</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_UNICODE_CS</a></td></tr> -<tr><td><a href="ft2-lcd_filtering.html#FT_LcdFilter">FT_LCD_FILTER_DEFAULT</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_GetBorderCounts">FT_Stroker_GetBorderCounts</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_WANSUNG</a></td></tr> -<tr><td><a href="ft2-header_file_macros.html#FT_LCD_FILTER_H">FT_LCD_FILTER_H</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_GetCounts">FT_Stroker_GetCounts</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_XXX</a></td></tr> -<tr><td><a href="ft2-lcd_filtering.html#FT_LcdFilter">FT_LCD_FILTER_LEGACY</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineCap">FT_Stroker_LineCap</a></td><td><a href="ft2-truetype_tables.html#TT_OS2">TT_OS2</a></td></tr> -<tr><td><a href="ft2-lcd_filtering.html#FT_LcdFilter">FT_LCD_FILTER_LIGHT</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineJoin">FT_Stroker_LineJoin</a></td><td><a href="ft2-truetype_tables.html#TT_PCLT">TT_PCLT</a></td></tr> -<tr><td><a href="ft2-lcd_filtering.html#FT_LcdFilter">FT_LCD_FILTER_NONE</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineTo">FT_Stroker_LineTo</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_ADOBE</a></td></tr> -<tr><td><a href="ft2-lcd_filtering.html#FT_LcdFilter">FT_LcdFilter</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_New">FT_Stroker_New</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_APPLE_UNICODE</a></td></tr> -<tr><td><a href="ft2-header_file_macros.html#FT_LIST_H">FT_LIST_H</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_ParseOutline">FT_Stroker_ParseOutline</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_CUSTOM</a></td></tr> -<tr><td><a href="ft2-base_interface.html#FT_Library">FT_Library</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_Rewind">FT_Stroker_Rewind</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_ISO</a></td></tr> -<tr><td><a href="ft2-lcd_filtering.html#FT_Library_SetLcdFilter">FT_Library_SetLcdFilter</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_Set">FT_Stroker_Set</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_MACINTOSH</a></td></tr> -<tr><td><a href="ft2-version.html#FT_Library_Version">FT_Library_Version</a></td><td><a href="ft2-glyph_stroker.html#FT_StrokerBorder">FT_StrokerBorder</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_MICROSOFT</a></td></tr> -<tr><td><a href="ft2-list_processing.html#FT_List">FT_List</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_2X2</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_XXX</a></td></tr> -<tr><td><a href="ft2-list_processing.html#FT_List_Add">FT_List_Add</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS</a></td><td><a href="ft2-truetype_tables.html#TT_Postscript">TT_Postscript</a></td></tr> -<tr><td><a href="ft2-list_processing.html#FT_List_Destructor">FT_List_Destructor</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES</a></td><td><a href="ft2-truetype_tables.html#TT_VertHeader">TT_VertHeader</a></td></tr> +<tr><td><a href="ft2-bdf_fonts.html#FT_PropertyType">BDF_PROPERTY_TYPE_ATOM</a></td><td><a href="ft2-lcd_filtering.html#FT_LcdFilter">FT_LCD_FILTER_LIGHT</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_Set">FT_Stroker_Set</a></td></tr> +<tr><td><a href="ft2-bdf_fonts.html#FT_PropertyType">BDF_PROPERTY_TYPE_CARDINAL</a></td><td><a href="ft2-lcd_filtering.html#FT_LcdFilter">FT_LCD_FILTER_NONE</a></td><td><a href="ft2-glyph_stroker.html#FT_StrokerBorder">FT_StrokerBorder</a></td></tr> +<tr><td><a href="ft2-bdf_fonts.html#FT_PropertyType">BDF_PROPERTY_TYPE_INTEGER</a></td><td><a href="ft2-lcd_filtering.html#FT_LcdFilter">FT_LcdFilter</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_2X2</a></td></tr> +<tr><td><a href="ft2-bdf_fonts.html#FT_PropertyType">BDF_PROPERTY_TYPE_NONE</a></td><td><a href="ft2-header_file_macros.html#FT_LIST_H">FT_LIST_H</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS</a></td></tr> +<tr><td><a href="ft2-bdf_fonts.html#BDF_Property">BDF_Property</a></td><td><a href="ft2-base_interface.html#FT_Library">FT_Library</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES</a></td></tr> +<tr><td><a href="ft2-bdf_fonts.html#BDF_PropertyRec">BDF_PropertyRec</a></td><td><a href="ft2-lcd_filtering.html#FT_Library_SetLcdFilter">FT_Library_SetLcdFilter</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_ROUND_XY_TO_GRID</a></td></tr> +<tr><td><a href="ft2-type1_tables.html#CID_FaceDict">CID_FaceDict</a></td><td><a href="ft2-version.html#FT_Library_Version">FT_Library_Version</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_SCALE</a></td></tr> +<tr><td><a href="ft2-type1_tables.html#CID_FaceDictRec">CID_FaceDictRec</a></td><td><a href="ft2-list_processing.html#FT_List">FT_List</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_USE_MY_METRICS</a></td></tr> +<tr><td><a href="ft2-type1_tables.html#CID_FaceInfo">CID_FaceInfo</a></td><td><a href="ft2-list_processing.html#FT_List_Add">FT_List_Add</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_XXX</a></td></tr> +<tr><td><a href="ft2-type1_tables.html#CID_FaceInfoRec">CID_FaceInfoRec</a></td><td><a href="ft2-list_processing.html#FT_List_Destructor">FT_List_Destructor</a></td><td><a href="ft2-base_interface.html#FT_SUBGLYPH_FLAG_XXX">FT_SUBGLYPH_FLAG_XY_SCALE</a></td></tr> +<tr><td><a href="ft2-type1_tables.html#CID_Info">CID_Info</a></td><td><a href="ft2-list_processing.html#FT_List_Finalize">FT_List_Finalize</a></td><td><a href="ft2-base_interface.html#FT_SubGlyph">FT_SubGlyph</a></td></tr> +<tr><td><a href="ft2-version.html#FREETYPE_XXX">FREETYPE_MAJOR</a></td><td><a href="ft2-list_processing.html#FT_List_Find">FT_List_Find</a></td><td><a href="ft2-header_file_macros.html#FT_SYNTHESIS_H">FT_SYNTHESIS_H</a></td></tr> +<tr><td><a href="ft2-version.html#FREETYPE_XXX">FREETYPE_MINOR</a></td><td><a href="ft2-list_processing.html#FT_List_Insert">FT_List_Insert</a></td><td><a href="ft2-header_file_macros.html#FT_SYSTEM_H">FT_SYSTEM_H</a></td></tr> +<tr><td><a href="ft2-version.html#FREETYPE_XXX">FREETYPE_PATCH</a></td><td><a href="ft2-list_processing.html#FT_List_Iterate">FT_List_Iterate</a></td><td><a href="ft2-basic_types.html#FT_Tag">FT_Tag</a></td></tr> +<tr><td><a href="ft2-version.html#FREETYPE_XXX">FREETYPE_XXX</a></td><td><a href="ft2-list_processing.html#FT_List_Iterator">FT_List_Iterator</a></td><td><a href="ft2-computations.html#FT_Tan">FT_Tan</a></td></tr> +<tr><td><a href="ft2-sizes_management.html#FT_Activate_Size">FT_Activate_Size</a></td><td><a href="ft2-list_processing.html#FT_List_Remove">FT_List_Remove</a></td><td><a href="ft2-header_file_macros.html#FT_TRIGONOMETRY_H">FT_TRIGONOMETRY_H</a></td></tr> +<tr><td><a href="ft2-quick_advance.html#FT_ADVANCE_FLAG_FAST_ONLY">FT_ADVANCE_FLAG_FAST_ONLY</a></td><td><a href="ft2-list_processing.html#FT_List_Up">FT_List_Up</a></td><td><a href="ft2-truetype_engine.html#FT_TrueTypeEngineType">FT_TRUETYPE_ENGINE_TYPE_NONE</a></td></tr> +<tr><td><a href="ft2-header_file_macros.html#FT_ADVANCES_H">FT_ADVANCES_H</a></td><td><a href="ft2-list_processing.html#FT_ListNode">FT_ListNode</a></td><td><a href="ft2-truetype_engine.html#FT_TrueTypeEngineType">FT_TRUETYPE_ENGINE_TYPE_PATENTED</a></td></tr> +<tr><td><a href="ft2-module_management.html#FT_Add_Default_Modules">FT_Add_Default_Modules</a></td><td><a href="ft2-list_processing.html#FT_ListNodeRec">FT_ListNodeRec</a></td><td><a href="ft2-truetype_engine.html#FT_TrueTypeEngineType">FT_TRUETYPE_ENGINE_TYPE_UNPATENTED</a></td></tr> +<tr><td><a href="ft2-module_management.html#FT_Add_Module">FT_Add_Module</a></td><td><a href="ft2-list_processing.html#FT_ListRec">FT_ListRec</a></td><td><a href="ft2-header_file_macros.html#FT_TRUETYPE_IDS_H">FT_TRUETYPE_IDS_H</a></td></tr> +<tr><td><a href="ft2-system_interface.html#FT_Alloc_Func">FT_Alloc_Func</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_CROP_BITMAP</a></td><td><a href="ft2-header_file_macros.html#FT_TRUETYPE_TABLES_H">FT_TRUETYPE_TABLES_H</a></td></tr> +<tr><td><a href="ft2-computations.html#FT_ANGLE_2PI">FT_ANGLE_2PI</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_DEFAULT</a></td><td><a href="ft2-header_file_macros.html#FT_TRUETYPE_TAGS_H">FT_TRUETYPE_TAGS_H</a></td></tr> +<tr><td><a href="ft2-computations.html#FT_ANGLE_PI">FT_ANGLE_PI</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_FORCE_AUTOHINT</a></td><td><a href="ft2-truetype_engine.html#FT_TrueTypeEngineType">FT_TrueTypeEngineType</a></td></tr> +<tr><td><a href="ft2-computations.html#FT_ANGLE_PI2">FT_ANGLE_PI2</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH</a></td><td><a href="ft2-gx_validation.html#FT_TrueTypeGX_Free">FT_TrueTypeGX_Free</a></td></tr> +<tr><td><a href="ft2-computations.html#FT_ANGLE_PI4">FT_ANGLE_PI4</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_IGNORE_TRANSFORM</a></td><td><a href="ft2-gx_validation.html#FT_TrueTypeGX_Validate">FT_TrueTypeGX_Validate</a></td></tr> +<tr><td><a href="ft2-computations.html#FT_Angle">FT_Angle</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_LINEAR_DESIGN</a></td><td><a href="ft2-header_file_macros.html#FT_TYPE1_TABLES_H">FT_TYPE1_TABLES_H</a></td></tr> +<tr><td><a href="ft2-computations.html#FT_Angle_Diff">FT_Angle_Diff</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_MONOCHROME</a></td><td><a href="ft2-header_file_macros.html#FT_TYPES_H">FT_TYPES_H</a></td></tr> +<tr><td><a href="ft2-computations.html#FT_Atan2">FT_Atan2</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_NO_AUTOHINT</a></td><td><a href="ft2-basic_types.html#FT_UFWord">FT_UFWord</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Attach_File">FT_Attach_File</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_NO_BITMAP</a></td><td><a href="ft2-basic_types.html#FT_UInt">FT_UInt</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Attach_Stream">FT_Attach_Stream</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_NO_HINTING</a></td><td><a href="ft2-basic_types.html#FT_UInt16">FT_UInt16</a></td></tr> +<tr><td><a href="ft2-header_file_macros.html#FT_BBOX_H">FT_BBOX_H</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_NO_RECURSE</a></td><td><a href="ft2-basic_types.html#FT_UInt32">FT_UInt32</a></td></tr> +<tr><td><a href="ft2-basic_types.html#FT_BBox">FT_BBox</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_NO_SCALE</a></td><td><a href="ft2-basic_types.html#FT_ULong">FT_ULong</a></td></tr> +<tr><td><a href="ft2-header_file_macros.html#FT_BDF_H">FT_BDF_H</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_PEDANTIC</a></td><td><a href="ft2-header_file_macros.html#FT_UNPATENTED_HINTING_H">FT_UNPATENTED_HINTING_H</a></td></tr> +<tr><td><a href="ft2-header_file_macros.html#FT_BITMAP_H">FT_BITMAP_H</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_RENDER</a></td><td><a href="ft2-basic_types.html#FT_UnitVector">FT_UnitVector</a></td></tr> +<tr><td><a href="ft2-basic_types.html#FT_Bitmap">FT_Bitmap</a></td><td><a href="ft2-base_interface.html#FT_LOAD_TARGET_XXX">FT_LOAD_TARGET_LCD</a></td><td><a href="ft2-basic_types.html#FT_UShort">FT_UShort</a></td></tr> +<tr><td><a href="ft2-bitmap_handling.html#FT_Bitmap_Convert">FT_Bitmap_Convert</a></td><td><a href="ft2-base_interface.html#FT_LOAD_TARGET_XXX">FT_LOAD_TARGET_LCD_V</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_CKERNXXX">FT_VALIDATE_APPLE</a></td></tr> +<tr><td><a href="ft2-bitmap_handling.html#FT_Bitmap_Copy">FT_Bitmap_Copy</a></td><td><a href="ft2-base_interface.html#FT_LOAD_TARGET_XXX">FT_LOAD_TARGET_LIGHT</a></td><td><a href="ft2-ot_validation.html#FT_VALIDATE_OTXXX">FT_VALIDATE_BASE</a></td></tr> +<tr><td><a href="ft2-bitmap_handling.html#FT_Bitmap_Done">FT_Bitmap_Done</a></td><td><a href="ft2-base_interface.html#FT_LOAD_TARGET_MODE">FT_LOAD_TARGET_MODE</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_bsln</a></td></tr> +<tr><td><a href="ft2-bitmap_handling.html#FT_Bitmap_Embolden">FT_Bitmap_Embolden</a></td><td><a href="ft2-base_interface.html#FT_LOAD_TARGET_XXX">FT_LOAD_TARGET_MONO</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_CKERNXXX">FT_VALIDATE_CKERN</a></td></tr> +<tr><td><a href="ft2-bitmap_handling.html#FT_Bitmap_New">FT_Bitmap_New</a></td><td><a href="ft2-base_interface.html#FT_LOAD_TARGET_XXX">FT_LOAD_TARGET_NORMAL</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_CKERNXXX">FT_VALIDATE_CKERNXXX</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Bitmap_Size">FT_Bitmap_Size</a></td><td><a href="ft2-base_interface.html#FT_LOAD_TARGET_XXX">FT_LOAD_TARGET_XXX</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_feat</a></td></tr> +<tr><td><a href="ft2-glyph_management.html#FT_BitmapGlyph">FT_BitmapGlyph</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_VERTICAL_LAYOUT</a></td><td><a href="ft2-ot_validation.html#FT_VALIDATE_OTXXX">FT_VALIDATE_GDEF</a></td></tr> +<tr><td><a href="ft2-glyph_management.html#FT_BitmapGlyphRec">FT_BitmapGlyphRec</a></td><td><a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_XXX</a></td><td><a href="ft2-ot_validation.html#FT_VALIDATE_OTXXX">FT_VALIDATE_GPOS</a></td></tr> +<tr><td><a href="ft2-basic_types.html#FT_Bool">FT_Bool</a></td><td><a href="ft2-base_interface.html#FT_Load_Char">FT_Load_Char</a></td><td><a href="ft2-ot_validation.html#FT_VALIDATE_OTXXX">FT_VALIDATE_GSUB</a></td></tr> +<tr><td><a href="ft2-basic_types.html#FT_Byte">FT_Byte</a></td><td><a href="ft2-base_interface.html#FT_Load_Glyph">FT_Load_Glyph</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_GX</a></td></tr> +<tr><td><a href="ft2-basic_types.html#FT_Bytes">FT_Bytes</a></td><td><a href="ft2-truetype_tables.html#FT_Load_Sfnt_Table">FT_Load_Sfnt_Table</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GX_LENGTH">FT_VALIDATE_GX_LENGTH</a></td></tr> +<tr><td><a href="ft2-header_file_macros.html#FT_CACHE_CHARMAP_H">FT_CACHE_CHARMAP_H</a></td><td><a href="ft2-basic_types.html#FT_Long">FT_Long</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_GXXXX</a></td></tr> +<tr><td><a href="ft2-header_file_macros.html#FT_CACHE_H">FT_CACHE_H</a></td><td><a href="ft2-header_file_macros.html#FT_LZW_H">FT_LZW_H</a></td><td><a href="ft2-ot_validation.html#FT_VALIDATE_OTXXX">FT_VALIDATE_JSTF</a></td></tr> +<tr><td><a href="ft2-header_file_macros.html#FT_CACHE_IMAGE_H">FT_CACHE_IMAGE_H</a></td><td><a href="ft2-header_file_macros.html#FT_MAC_H">FT_MAC_H</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_just</a></td></tr> +<tr><td><a href="ft2-header_file_macros.html#FT_CACHE_SMALL_BITMAPS_H">FT_CACHE_SMALL_BITMAPS_H</a></td><td><a href="ft2-basic_types.html#FT_MAKE_TAG">FT_MAKE_TAG</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_kern</a></td></tr> +<tr><td><a href="ft2-computations.html#FT_CeilFix">FT_CeilFix</a></td><td><a href="ft2-basic_types.html#FT_Matrix">FT_Matrix</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_lcar</a></td></tr> +<tr><td><a href="ft2-basic_types.html#FT_Char">FT_Char</a></td><td><a href="ft2-computations.html#FT_Matrix_Invert">FT_Matrix_Invert</a></td><td><a href="ft2-ot_validation.html#FT_VALIDATE_OTXXX">FT_VALIDATE_MATH</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_CharMap">FT_CharMap</a></td><td><a href="ft2-computations.html#FT_Matrix_Multiply">FT_Matrix_Multiply</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_CKERNXXX">FT_VALIDATE_MS</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_CharMapRec">FT_CharMapRec</a></td><td><a href="ft2-system_interface.html#FT_Memory">FT_Memory</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_mort</a></td></tr> +<tr><td><a href="ft2-header_file_macros.html#FT_CID_H">FT_CID_H</a></td><td><a href="ft2-system_interface.html#FT_MemoryRec">FT_MemoryRec</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_morx</a></td></tr> +<tr><td><a href="ft2-gx_validation.html#FT_ClassicKern_Free">FT_ClassicKern_Free</a></td><td><a href="ft2-multiple_masters.html#FT_MM_Axis">FT_MM_Axis</a></td><td><a href="ft2-ot_validation.html#FT_VALIDATE_OTXXX">FT_VALIDATE_OT</a></td></tr> +<tr><td><a href="ft2-gx_validation.html#FT_ClassicKern_Validate">FT_ClassicKern_Validate</a></td><td><a href="ft2-multiple_masters.html#FT_MM_Var">FT_MM_Var</a></td><td><a href="ft2-ot_validation.html#FT_VALIDATE_OTXXX">FT_VALIDATE_OTXXX</a></td></tr> +<tr><td><a href="ft2-header_file_macros.html#FT_CONFIG_CONFIG_H">FT_CONFIG_CONFIG_H</a></td><td><a href="ft2-header_file_macros.html#FT_MODULE_ERRORS_H">FT_MODULE_ERRORS_H</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_opbd</a></td></tr> +<tr><td><a href="ft2-header_file_macros.html#FT_CONFIG_MODULES_H">FT_CONFIG_MODULES_H</a></td><td><a href="ft2-header_file_macros.html#FT_MODULE_H">FT_MODULE_H</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_prop</a></td></tr> +<tr><td><a href="ft2-header_file_macros.html#FT_CONFIG_OPTIONS_H">FT_CONFIG_OPTIONS_H</a></td><td><a href="ft2-base_interface.html#FT_Module">FT_Module</a></td><td><a href="ft2-gx_validation.html#FT_VALIDATE_GXXXX">FT_VALIDATE_trak</a></td></tr> +<tr><td><a href="ft2-header_file_macros.html#FT_CONFIG_STANDARD_LIBRARY_H">FT_CONFIG_STANDARD_LIBRARY_H</a></td><td><a href="ft2-module_management.html#FT_Module_Class">FT_Module_Class</a></td><td><a href="ft2-multiple_masters.html#FT_Var_Axis">FT_Var_Axis</a></td></tr> +<tr><td><a href="ft2-computations.html#FT_Cos">FT_Cos</a></td><td><a href="ft2-module_management.html#FT_Module_Constructor">FT_Module_Constructor</a></td><td><a href="ft2-multiple_masters.html#FT_Var_Named_Style">FT_Var_Named_Style</a></td></tr> +<tr><td><a href="ft2-basic_types.html#FT_Data">FT_Data</a></td><td><a href="ft2-module_management.html#FT_Module_Destructor">FT_Module_Destructor</a></td><td><a href="ft2-basic_types.html#FT_Vector">FT_Vector</a></td></tr> +<tr><td><a href="ft2-computations.html#FT_DivFix">FT_DivFix</a></td><td><a href="ft2-module_management.html#FT_Module_Requester">FT_Module_Requester</a></td><td><a href="ft2-computations.html#FT_Vector_From_Polar">FT_Vector_From_Polar</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Done_Face">FT_Done_Face</a></td><td><a href="ft2-header_file_macros.html#FT_MULTIPLE_MASTERS_H">FT_MULTIPLE_MASTERS_H</a></td><td><a href="ft2-computations.html#FT_Vector_Length">FT_Vector_Length</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Done_FreeType">FT_Done_FreeType</a></td><td><a href="ft2-computations.html#FT_MulDiv">FT_MulDiv</a></td><td><a href="ft2-computations.html#FT_Vector_Polarize">FT_Vector_Polarize</a></td></tr> +<tr><td><a href="ft2-glyph_management.html#FT_Done_Glyph">FT_Done_Glyph</a></td><td><a href="ft2-computations.html#FT_MulFix">FT_MulFix</a></td><td><a href="ft2-computations.html#FT_Vector_Rotate">FT_Vector_Rotate</a></td></tr> +<tr><td><a href="ft2-module_management.html#FT_Done_Library">FT_Done_Library</a></td><td><a href="ft2-multiple_masters.html#FT_Multi_Master">FT_Multi_Master</a></td><td><a href="ft2-computations.html#FT_Vector_Transform">FT_Vector_Transform</a></td></tr> +<tr><td><a href="ft2-sizes_management.html#FT_Done_Size">FT_Done_Size</a></td><td><a href="ft2-base_interface.html#FT_New_Face">FT_New_Face</a></td><td><a href="ft2-computations.html#FT_Vector_Unit">FT_Vector_Unit</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Driver">FT_Driver</a></td><td><a href="ft2-mac_specific.html#FT_New_Face_From_FOND">FT_New_Face_From_FOND</a></td><td><a href="ft2-header_file_macros.html#FT_WINFONTS_H">FT_WINFONTS_H</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_ENC_TAG">FT_ENC_TAG</a></td><td><a href="ft2-mac_specific.html#FT_New_Face_From_FSRef">FT_New_Face_From_FSRef</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_Header">FT_WinFNT_Header</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_ADOBE_CUSTOM</a></td><td><a href="ft2-mac_specific.html#FT_New_Face_From_FSSpec">FT_New_Face_From_FSSpec</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_HeaderRec">FT_WinFNT_HeaderRec</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_ADOBE_EXPERT</a></td><td><a href="ft2-module_management.html#FT_New_Library">FT_New_Library</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP1250</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_ADOBE_LATIN_1</a></td><td><a href="ft2-base_interface.html#FT_New_Memory_Face">FT_New_Memory_Face</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP1251</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_ADOBE_STANDARD</a></td><td><a href="ft2-sizes_management.html#FT_New_Size">FT_New_Size</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP1252</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_APPLE_ROMAN</a></td><td><a href="ft2-basic_types.html#FT_Offset">FT_Offset</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP1253</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_BIG5</a></td><td><a href="ft2-base_interface.html#FT_OPEN_XXX">FT_OPEN_DRIVER</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP1254</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_GB2312</a></td><td><a href="ft2-base_interface.html#FT_OPEN_XXX">FT_OPEN_MEMORY</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP1255</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_JOHAB</a></td><td><a href="ft2-base_interface.html#FT_OPEN_XXX">FT_OPEN_PARAMS</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP1256</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_MS_BIG5</a></td><td><a href="ft2-base_interface.html#FT_OPEN_XXX">FT_OPEN_PATHNAME</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP1257</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_MS_GB2312</a></td><td><a href="ft2-base_interface.html#FT_OPEN_XXX">FT_OPEN_STREAM</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP1258</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_MS_JOHAB</a></td><td><a href="ft2-base_interface.html#FT_OPEN_XXX">FT_OPEN_XXX</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP1361</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_MS_SJIS</a></td><td><a href="ft2-header_file_macros.html#FT_OPENTYPE_VALIDATE_H">FT_OPENTYPE_VALIDATE_H</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP874</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_MS_SYMBOL</a></td><td><a href="ft2-base_interface.html#FT_Open_Args">FT_Open_Args</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP932</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_MS_WANSUNG</a></td><td><a href="ft2-base_interface.html#FT_Open_Face">FT_Open_Face</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP936</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_NONE</a></td><td><a href="ft2-ot_validation.html#FT_OpenType_Free">FT_OpenType_Free</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP949</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_OLD_LATIN_2</a></td><td><a href="ft2-ot_validation.html#FT_OpenType_Validate">FT_OpenType_Validate</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_CP950</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_SJIS</a></td><td><a href="ft2-outline_processing.html#FT_Orientation">FT_ORIENTATION_FILL_LEFT</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_DEFAULT</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_UNICODE</a></td><td><a href="ft2-outline_processing.html#FT_Orientation">FT_ORIENTATION_FILL_RIGHT</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_MAC</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_ENCODING_WANSUNG</a></td><td><a href="ft2-outline_processing.html#FT_Orientation">FT_ORIENTATION_NONE</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_OEM</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Encoding">FT_Encoding</a></td><td><a href="ft2-outline_processing.html#FT_Orientation">FT_ORIENTATION_POSTSCRIPT</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_SYMBOL</a></td></tr> +<tr><td><a href="ft2-header_file_macros.html#FT_ERRORS_H">FT_ERRORS_H</a></td><td><a href="ft2-outline_processing.html#FT_Orientation">FT_ORIENTATION_TRUETYPE</a></td><td><a href="ft2-winfnt_fonts.html#FT_WinFNT_ID_XXX">FT_WinFNT_ID_XXX</a></td></tr> +<tr><td><a href="ft2-basic_types.html#FT_Error">FT_Error</a></td><td><a href="ft2-outline_processing.html#FT_Orientation">FT_Orientation</a></td><td><a href="ft2-header_file_macros.html#FT_XFREE86_H">FT_XFREE86_H</a></td></tr> +<tr><td><a href="ft2-basic_types.html#FT_F26Dot6">FT_F26Dot6</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_EVEN_ODD_FILL</a></td><td><a href="ft2-cache_subsystem.html#FTC_CMapCache">FTC_CMapCache</a></td></tr> +<tr><td><a href="ft2-basic_types.html#FT_F2Dot14">FT_F2Dot14</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_FLAGS</a></td><td><a href="ft2-cache_subsystem.html#FTC_CMapCache_Lookup">FTC_CMapCache_Lookup</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_CID_KEYED</a></td><td><a href="ft2-header_file_macros.html#FT_OUTLINE_H">FT_OUTLINE_H</a></td><td><a href="ft2-cache_subsystem.html#FTC_CMapCache_New">FTC_CMapCache_New</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_EXTERNAL_STREAM</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_HIGH_PRECISION</a></td><td><a href="ft2-cache_subsystem.html#FTC_Face_Requester">FTC_Face_Requester</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_FAST_GLYPHS</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_IGNORE_DROPOUTS</a></td><td><a href="ft2-cache_subsystem.html#FTC_FaceID">FTC_FaceID</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_FIXED_SIZES</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_INCLUDE_STUBS</a></td><td><a href="ft2-cache_subsystem.html#FTC_ImageCache">FTC_ImageCache</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_FIXED_WIDTH</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_NONE</a></td><td><a href="ft2-cache_subsystem.html#FTC_ImageCache_Lookup">FTC_ImageCache_Lookup</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_GLYPH_NAMES</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_OWNER</a></td><td><a href="ft2-cache_subsystem.html#FTC_ImageCache_LookupScaler">FTC_ImageCache_LookupScaler</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_HINTER</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_REVERSE_FILL</a></td><td><a href="ft2-cache_subsystem.html#FTC_ImageCache_New">FTC_ImageCache_New</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_HORIZONTAL</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_SINGLE_PASS</a></td><td><a href="ft2-cache_subsystem.html#FTC_ImageType">FTC_ImageType</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_KERNING</a></td><td><a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_SMART_DROPOUTS</a></td><td><a href="ft2-cache_subsystem.html#FTC_ImageTypeRec">FTC_ImageTypeRec</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_MULTIPLE_MASTERS</a></td><td><a href="ft2-outline_processing.html#FT_Outline">FT_Outline</a></td><td><a href="ft2-cache_subsystem.html#FTC_Manager">FTC_Manager</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_SCALABLE</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Check">FT_Outline_Check</a></td><td><a href="ft2-cache_subsystem.html#FTC_Manager_Done">FTC_Manager_Done</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_SFNT</a></td><td><a href="ft2-outline_processing.html#FT_Outline_ConicToFunc">FT_Outline_ConicToFunc</a></td><td><a href="ft2-cache_subsystem.html#FTC_Manager_LookupFace">FTC_Manager_LookupFace</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_TRICKY</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Copy">FT_Outline_Copy</a></td><td><a href="ft2-cache_subsystem.html#FTC_Manager_LookupSize">FTC_Manager_LookupSize</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_VERTICAL</a></td><td><a href="ft2-outline_processing.html#FT_Outline_CubicToFunc">FT_Outline_CubicToFunc</a></td><td><a href="ft2-cache_subsystem.html#FTC_Manager_New">FTC_Manager_New</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_FACE_FLAG_XXX">FT_FACE_FLAG_XXX</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Decompose">FT_Outline_Decompose</a></td><td><a href="ft2-cache_subsystem.html#FTC_Manager_RemoveFaceID">FTC_Manager_RemoveFaceID</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Face">FT_Face</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Done">FT_Outline_Done</a></td><td><a href="ft2-cache_subsystem.html#FTC_Manager_Reset">FTC_Manager_Reset</a></td></tr> +<tr><td><a href="ft2-version.html#FT_Face_CheckTrueTypePatents">FT_Face_CheckTrueTypePatents</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Embolden">FT_Outline_Embolden</a></td><td><a href="ft2-cache_subsystem.html#FTC_Node">FTC_Node</a></td></tr> +<tr><td><a href="ft2-glyph_variants.html#FT_Face_GetCharsOfVariant">FT_Face_GetCharsOfVariant</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Funcs">FT_Outline_Funcs</a></td><td><a href="ft2-cache_subsystem.html#FTC_Node_Unref">FTC_Node_Unref</a></td></tr> +<tr><td><a href="ft2-glyph_variants.html#FT_Face_GetCharVariantIndex">FT_Face_GetCharVariantIndex</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Get_BBox">FT_Outline_Get_BBox</a></td><td><a href="ft2-cache_subsystem.html#FTC_SBit">FTC_SBit</a></td></tr> +<tr><td><a href="ft2-glyph_variants.html#FT_Face_GetCharVariantIsDefault">FT_Face_GetCharVariantIsDefault</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Get_Bitmap">FT_Outline_Get_Bitmap</a></td><td><a href="ft2-cache_subsystem.html#FTC_SBitCache">FTC_SBitCache</a></td></tr> +<tr><td><a href="ft2-glyph_variants.html#FT_Face_GetVariantSelectors">FT_Face_GetVariantSelectors</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Get_CBox">FT_Outline_Get_CBox</a></td><td><a href="ft2-cache_subsystem.html#FTC_SBitCache_Lookup">FTC_SBitCache_Lookup</a></td></tr> +<tr><td><a href="ft2-glyph_variants.html#FT_Face_GetVariantsOfChar">FT_Face_GetVariantsOfChar</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Get_Orientation">FT_Outline_Get_Orientation</a></td><td><a href="ft2-cache_subsystem.html#FTC_SBitCache_LookupScaler">FTC_SBitCache_LookupScaler</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Face_Internal">FT_Face_Internal</a></td><td><a href="ft2-glyph_stroker.html#FT_Outline_GetInsideBorder">FT_Outline_GetInsideBorder</a></td><td><a href="ft2-cache_subsystem.html#FTC_SBitCache_New">FTC_SBitCache_New</a></td></tr> +<tr><td><a href="ft2-version.html#FT_Face_SetUnpatentedHinting">FT_Face_SetUnpatentedHinting</a></td><td><a href="ft2-glyph_stroker.html#FT_Outline_GetOutsideBorder">FT_Outline_GetOutsideBorder</a></td><td><a href="ft2-cache_subsystem.html#FTC_SBitRec">FTC_SBitRec</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_FaceRec">FT_FaceRec</a></td><td><a href="ft2-outline_processing.html#FT_Outline_LineToFunc">FT_Outline_LineToFunc</a></td><td><a href="ft2-cache_subsystem.html#FTC_Scaler">FTC_Scaler</a></td></tr> +<tr><td><a href="ft2-basic_types.html#FT_Fixed">FT_Fixed</a></td><td><a href="ft2-outline_processing.html#FT_Outline_MoveToFunc">FT_Outline_MoveToFunc</a></td><td><a href="ft2-cache_subsystem.html#FTC_ScalerRec">FTC_ScalerRec</a></td></tr> +<tr><td><a href="ft2-computations.html#FT_FloorFix">FT_FloorFix</a></td><td><a href="ft2-outline_processing.html#FT_Outline_New">FT_Outline_New</a></td><td><a href="ft2-base_interface.html#ft_encoding_xxx">ft_encoding_xxx</a></td></tr> +<tr><td><a href="ft2-header_file_macros.html#FT_FREETYPE_H">FT_FREETYPE_H</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Render">FT_Outline_Render</a></td><td><a href="ft2-glyph_management.html#ft_glyph_bbox_xxx">ft_glyph_bbox_gridfit</a></td></tr> +<tr><td><a href="ft2-system_interface.html#FT_Free_Func">FT_Free_Func</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Reverse">FT_Outline_Reverse</a></td><td><a href="ft2-glyph_management.html#ft_glyph_bbox_xxx">ft_glyph_bbox_pixels</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_FSTYPE_XXX">FT_FSTYPE_BITMAP_EMBEDDING_ONLY</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Transform">FT_Outline_Transform</a></td><td><a href="ft2-glyph_management.html#ft_glyph_bbox_xxx">ft_glyph_bbox_subpixels</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_FSTYPE_XXX">FT_FSTYPE_EDITABLE_EMBEDDING</a></td><td><a href="ft2-outline_processing.html#FT_Outline_Translate">FT_Outline_Translate</a></td><td><a href="ft2-glyph_management.html#ft_glyph_bbox_xxx">ft_glyph_bbox_truncate</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_FSTYPE_XXX">FT_FSTYPE_INSTALLABLE_EMBEDDING</a></td><td><a href="ft2-glyph_management.html#FT_OutlineGlyph">FT_OutlineGlyph</a></td><td><a href="ft2-glyph_management.html#ft_glyph_bbox_xxx">ft_glyph_bbox_unscaled</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_FSTYPE_XXX">FT_FSTYPE_NO_SUBSETTING</a></td><td><a href="ft2-glyph_management.html#FT_OutlineGlyphRec">FT_OutlineGlyphRec</a></td><td><a href="ft2-glyph_management.html#ft_glyph_bbox_xxx">ft_glyph_bbox_xxx</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_FSTYPE_XXX">FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING</a></td><td><a href="ft2-incremental.html#FT_PARAM_TAG_INCREMENTAL">FT_PARAM_TAG_INCREMENTAL</a></td><td><a href="ft2-basic_types.html#ft_glyph_format_xxx">ft_glyph_format_bitmap</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_FSTYPE_XXX">FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING</a></td><td><a href="ft2-truetype_tables.html#FT_PARAM_TAG_UNPATENTED_HINTING">FT_PARAM_TAG_UNPATENTED_HINTING</a></td><td><a href="ft2-basic_types.html#ft_glyph_format_xxx">ft_glyph_format_composite</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_FSTYPE_XXX">FT_FSTYPE_XXX</a></td><td><a href="ft2-basic_types.html#FT_Palette_Mode">FT_Palette_Mode</a></td><td><a href="ft2-basic_types.html#ft_glyph_format_xxx">ft_glyph_format_none</a></td></tr> +<tr><td><a href="ft2-basic_types.html#FT_FWord">FT_FWord</a></td><td><a href="ft2-base_interface.html#FT_Parameter">FT_Parameter</a></td><td><a href="ft2-basic_types.html#ft_glyph_format_xxx">ft_glyph_format_outline</a></td></tr> +<tr><td><a href="ft2-gasp_table.html#FT_GASP_XXX">FT_GASP_DO_GRAY</a></td><td><a href="ft2-header_file_macros.html#FT_PFR_H">FT_PFR_H</a></td><td><a href="ft2-basic_types.html#ft_glyph_format_xxx">ft_glyph_format_plotter</a></td></tr> +<tr><td><a href="ft2-gasp_table.html#FT_GASP_XXX">FT_GASP_DO_GRIDFIT</a></td><td><a href="ft2-basic_types.html#FT_Pixel_Mode">FT_PIXEL_MODE_GRAY</a></td><td><a href="ft2-basic_types.html#ft_glyph_format_xxx">ft_glyph_format_xxx</a></td></tr> +<tr><td><a href="ft2-header_file_macros.html#FT_GASP_H">FT_GASP_H</a></td><td><a href="ft2-basic_types.html#FT_Pixel_Mode">FT_PIXEL_MODE_GRAY2</a></td><td><a href="ft2-base_interface.html#ft_kerning_default">ft_kerning_default</a></td></tr> +<tr><td><a href="ft2-gasp_table.html#FT_GASP_XXX">FT_GASP_NO_TABLE</a></td><td><a href="ft2-basic_types.html#FT_Pixel_Mode">FT_PIXEL_MODE_GRAY4</a></td><td><a href="ft2-base_interface.html#ft_kerning_unfitted">ft_kerning_unfitted</a></td></tr> +<tr><td><a href="ft2-gasp_table.html#FT_GASP_XXX">FT_GASP_SYMMETRIC_GRIDFIT</a></td><td><a href="ft2-basic_types.html#FT_Pixel_Mode">FT_PIXEL_MODE_LCD</a></td><td><a href="ft2-base_interface.html#ft_kerning_unscaled">ft_kerning_unscaled</a></td></tr> +<tr><td><a href="ft2-gasp_table.html#FT_GASP_XXX">FT_GASP_SYMMETRIC_SMOOTHING</a></td><td><a href="ft2-basic_types.html#FT_Pixel_Mode">FT_PIXEL_MODE_LCD_V</a></td><td><a href="ft2-base_interface.html#FT_OPEN_XXX">ft_open_driver</a></td></tr> +<tr><td><a href="ft2-gasp_table.html#FT_GASP_XXX">FT_GASP_XXX</a></td><td><a href="ft2-basic_types.html#FT_Pixel_Mode">FT_PIXEL_MODE_MONO</a></td><td><a href="ft2-base_interface.html#FT_OPEN_XXX">ft_open_memory</a></td></tr> +<tr><td><a href="ft2-basic_types.html#FT_Generic">FT_Generic</a></td><td><a href="ft2-basic_types.html#FT_Pixel_Mode">FT_PIXEL_MODE_NONE</a></td><td><a href="ft2-base_interface.html#FT_OPEN_XXX">ft_open_params</a></td></tr> +<tr><td><a href="ft2-basic_types.html#FT_Generic_Finalizer">FT_Generic_Finalizer</a></td><td><a href="ft2-basic_types.html#FT_Pixel_Mode">FT_Pixel_Mode</a></td><td><a href="ft2-base_interface.html#FT_OPEN_XXX">ft_open_pathname</a></td></tr> +<tr><td><a href="ft2-quick_advance.html#FT_Get_Advance">FT_Get_Advance</a></td><td><a href="ft2-basic_types.html#FT_Pointer">FT_Pointer</a></td><td><a href="ft2-base_interface.html#FT_OPEN_XXX">ft_open_stream</a></td></tr> +<tr><td><a href="ft2-quick_advance.html#FT_Get_Advances">FT_Get_Advances</a></td><td><a href="ft2-basic_types.html#FT_Pos">FT_Pos</a></td><td><a href="ft2-outline_processing.html#ft_outline_flags">ft_outline_even_odd_fill</a></td></tr> +<tr><td><a href="ft2-bdf_fonts.html#FT_Get_BDF_Charset_ID">FT_Get_BDF_Charset_ID</a></td><td><a href="ft2-bdf_fonts.html#FT_PropertyType">FT_PropertyType</a></td><td><a href="ft2-outline_processing.html#ft_outline_flags">ft_outline_flags</a></td></tr> +<tr><td><a href="ft2-bdf_fonts.html#FT_Get_BDF_Property">FT_Get_BDF_Property</a></td><td><a href="ft2-basic_types.html#FT_PtrDist">FT_PtrDist</a></td><td><a href="ft2-outline_processing.html#ft_outline_flags">ft_outline_high_precision</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Get_Char_Index">FT_Get_Char_Index</a></td><td><a href="ft2-raster.html#FT_RASTER_FLAG_XXX">FT_RASTER_FLAG_AA</a></td><td><a href="ft2-outline_processing.html#ft_outline_flags">ft_outline_ignore_dropouts</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Get_Charmap_Index">FT_Get_Charmap_Index</a></td><td><a href="ft2-raster.html#FT_RASTER_FLAG_XXX">FT_RASTER_FLAG_CLIP</a></td><td><a href="ft2-outline_processing.html#ft_outline_flags">ft_outline_none</a></td></tr> +<tr><td><a href="ft2-cid_fonts.html#FT_Get_CID_From_Glyph_Index">FT_Get_CID_From_Glyph_Index</a></td><td><a href="ft2-raster.html#FT_RASTER_FLAG_XXX">FT_RASTER_FLAG_DEFAULT</a></td><td><a href="ft2-outline_processing.html#ft_outline_flags">ft_outline_owner</a></td></tr> +<tr><td><a href="ft2-cid_fonts.html#FT_Get_CID_Is_Internally_CID_Keyed">FT_Get_CID_Is_Internally_CID_Keyed</a></td><td><a href="ft2-raster.html#FT_RASTER_FLAG_XXX">FT_RASTER_FLAG_DIRECT</a></td><td><a href="ft2-outline_processing.html#ft_outline_flags">ft_outline_reverse_fill</a></td></tr> +<tr><td><a href="ft2-cid_fonts.html#FT_Get_CID_Registry_Ordering_Supplement">FT_Get_CID_Registry_Ordering_Supplement</a></td><td><a href="ft2-raster.html#FT_RASTER_FLAG_XXX">FT_RASTER_FLAG_XXX</a></td><td><a href="ft2-outline_processing.html#ft_outline_flags">ft_outline_single_pass</a></td></tr> +<tr><td><a href="ft2-truetype_tables.html#FT_Get_CMap_Format">FT_Get_CMap_Format</a></td><td><a href="ft2-raster.html#FT_Raster">FT_Raster</a></td><td><a href="ft2-basic_types.html#FT_Palette_Mode">ft_palette_mode_rgb</a></td></tr> +<tr><td><a href="ft2-truetype_tables.html#FT_Get_CMap_Language_ID">FT_Get_CMap_Language_ID</a></td><td><a href="ft2-raster.html#FT_Raster_BitSet_Func">FT_Raster_BitSet_Func</a></td><td><a href="ft2-basic_types.html#FT_Palette_Mode">ft_palette_mode_rgba</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Get_First_Char">FT_Get_First_Char</a></td><td><a href="ft2-raster.html#FT_Raster_BitTest_Func">FT_Raster_BitTest_Func</a></td><td><a href="ft2-basic_types.html#ft_pixel_mode_xxx">ft_pixel_mode_grays</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Get_FSType_Flags">FT_Get_FSType_Flags</a></td><td><a href="ft2-raster.html#FT_Raster_DoneFunc">FT_Raster_DoneFunc</a></td><td><a href="ft2-basic_types.html#ft_pixel_mode_xxx">ft_pixel_mode_mono</a></td></tr> +<tr><td><a href="ft2-gasp_table.html#FT_Get_Gasp">FT_Get_Gasp</a></td><td><a href="ft2-raster.html#FT_Raster_Funcs">FT_Raster_Funcs</a></td><td><a href="ft2-basic_types.html#ft_pixel_mode_xxx">ft_pixel_mode_none</a></td></tr> +<tr><td><a href="ft2-glyph_management.html#FT_Get_Glyph">FT_Get_Glyph</a></td><td><a href="ft2-raster.html#FT_Raster_NewFunc">FT_Raster_NewFunc</a></td><td><a href="ft2-basic_types.html#ft_pixel_mode_xxx">ft_pixel_mode_pal2</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Get_Glyph_Name">FT_Get_Glyph_Name</a></td><td><a href="ft2-raster.html#FT_Raster_Params">FT_Raster_Params</a></td><td><a href="ft2-basic_types.html#ft_pixel_mode_xxx">ft_pixel_mode_pal4</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Get_Kerning">FT_Get_Kerning</a></td><td><a href="ft2-raster.html#FT_Raster_RenderFunc">FT_Raster_RenderFunc</a></td><td><a href="ft2-basic_types.html#ft_pixel_mode_xxx">ft_pixel_mode_xxx</a></td></tr> +<tr><td><a href="ft2-multiple_masters.html#FT_Get_MM_Var">FT_Get_MM_Var</a></td><td><a href="ft2-raster.html#FT_Raster_ResetFunc">FT_Raster_ResetFunc</a></td><td><a href="ft2-base_interface.html#ft_render_mode_xxx">ft_render_mode_mono</a></td></tr> +<tr><td><a href="ft2-module_management.html#FT_Get_Module">FT_Get_Module</a></td><td><a href="ft2-raster.html#FT_Raster_SetModeFunc">FT_Raster_SetModeFunc</a></td><td><a href="ft2-base_interface.html#ft_render_mode_xxx">ft_render_mode_normal</a></td></tr> +<tr><td><a href="ft2-multiple_masters.html#FT_Get_Multi_Master">FT_Get_Multi_Master</a></td><td><a href="ft2-header_file_macros.html#FT_RENDER_H">FT_RENDER_H</a></td><td><a href="ft2-base_interface.html#ft_render_mode_xxx">ft_render_mode_xxx</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Get_Name_Index">FT_Get_Name_Index</a></td><td><a href="ft2-base_interface.html#FT_Render_Mode">FT_RENDER_MODE_LCD</a></td><td><a href="ft2-type1_tables.html#PS_FontInfo">PS_FontInfo</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Get_Next_Char">FT_Get_Next_Char</a></td><td><a href="ft2-base_interface.html#FT_Render_Mode">FT_RENDER_MODE_LCD_V</a></td><td><a href="ft2-type1_tables.html#PS_FontInfoRec">PS_FontInfoRec</a></td></tr> +<tr><td><a href="ft2-pfr_fonts.html#FT_Get_PFR_Advance">FT_Get_PFR_Advance</a></td><td><a href="ft2-base_interface.html#FT_Render_Mode">FT_RENDER_MODE_LIGHT</a></td><td><a href="ft2-type1_tables.html#PS_Private">PS_Private</a></td></tr> +<tr><td><a href="ft2-pfr_fonts.html#FT_Get_PFR_Kerning">FT_Get_PFR_Kerning</a></td><td><a href="ft2-base_interface.html#FT_Render_Mode">FT_RENDER_MODE_MONO</a></td><td><a href="ft2-type1_tables.html#PS_PrivateRec">PS_PrivateRec</a></td></tr> +<tr><td><a href="ft2-pfr_fonts.html#FT_Get_PFR_Metrics">FT_Get_PFR_Metrics</a></td><td><a href="ft2-base_interface.html#FT_Render_Mode">FT_RENDER_MODE_NORMAL</a></td><td><a href="ft2-type1_tables.html#T1_Blend_Flags">T1_Blend_Flags</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Get_Postscript_Name">FT_Get_Postscript_Name</a></td><td><a href="ft2-system_interface.html#FT_Realloc_Func">FT_Realloc_Func</a></td><td><a href="ft2-type1_tables.html#T1_FontInfo">T1_FontInfo</a></td></tr> +<tr><td><a href="ft2-type1_tables.html#FT_Get_PS_Font_Info">FT_Get_PS_Font_Info</a></td><td><a href="ft2-module_management.html#FT_Remove_Module">FT_Remove_Module</a></td><td><a href="ft2-type1_tables.html#T1_Private">T1_Private</a></td></tr> +<tr><td><a href="ft2-type1_tables.html#FT_Get_PS_Font_Private">FT_Get_PS_Font_Private</a></td><td><a href="ft2-base_interface.html#FT_Render_Glyph">FT_Render_Glyph</a></td><td><a href="ft2-truetype_tables.html#TT_ADOBE_ID_XXX">TT_ADOBE_ID_CUSTOM</a></td></tr> +<tr><td><a href="ft2-module_management.html#FT_Get_Renderer">FT_Get_Renderer</a></td><td><a href="ft2-base_interface.html#FT_Render_Mode">FT_Render_Mode</a></td><td><a href="ft2-truetype_tables.html#TT_ADOBE_ID_XXX">TT_ADOBE_ID_EXPERT</a></td></tr> +<tr><td><a href="ft2-sfnt_names.html#FT_Get_Sfnt_Name">FT_Get_Sfnt_Name</a></td><td><a href="ft2-base_interface.html#FT_Renderer">FT_Renderer</a></td><td><a href="ft2-truetype_tables.html#TT_ADOBE_ID_XXX">TT_ADOBE_ID_LATIN_1</a></td></tr> +<tr><td><a href="ft2-sfnt_names.html#FT_Get_Sfnt_Name_Count">FT_Get_Sfnt_Name_Count</a></td><td><a href="ft2-module_management.html#FT_Renderer_Class">FT_Renderer_Class</a></td><td><a href="ft2-truetype_tables.html#TT_ADOBE_ID_XXX">TT_ADOBE_ID_STANDARD</a></td></tr> +<tr><td><a href="ft2-truetype_tables.html#FT_Get_Sfnt_Table">FT_Get_Sfnt_Table</a></td><td><a href="ft2-base_interface.html#FT_Request_Size">FT_Request_Size</a></td><td><a href="ft2-truetype_tables.html#TT_ADOBE_ID_XXX">TT_ADOBE_ID_XXX</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Get_SubGlyph_Info">FT_Get_SubGlyph_Info</a></td><td><a href="ft2-computations.html#FT_RoundFix">FT_RoundFix</a></td><td><a href="ft2-truetype_tables.html#TT_APPLE_ID_XXX">TT_APPLE_ID_DEFAULT</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Get_Track_Kerning">FT_Get_Track_Kerning</a></td><td><a href="ft2-base_interface.html#FT_Select_Charmap">FT_Select_Charmap</a></td><td><a href="ft2-truetype_tables.html#TT_APPLE_ID_XXX">TT_APPLE_ID_ISO_10646</a></td></tr> +<tr><td><a href="ft2-truetype_engine.html#FT_Get_TrueType_Engine_Type">FT_Get_TrueType_Engine_Type</a></td><td><a href="ft2-base_interface.html#FT_Select_Size">FT_Select_Size</a></td><td><a href="ft2-truetype_tables.html#TT_APPLE_ID_XXX">TT_APPLE_ID_UNICODE_1_1</a></td></tr> +<tr><td><a href="ft2-winfnt_fonts.html#FT_Get_WinFNT_Header">FT_Get_WinFNT_Header</a></td><td><a href="ft2-base_interface.html#FT_Set_Char_Size">FT_Set_Char_Size</a></td><td><a href="ft2-truetype_tables.html#TT_APPLE_ID_XXX">TT_APPLE_ID_UNICODE_2_0</a></td></tr> +<tr><td><a href="ft2-font_formats.html#FT_Get_X11_Font_Format">FT_Get_X11_Font_Format</a></td><td><a href="ft2-base_interface.html#FT_Set_Charmap">FT_Set_Charmap</a></td><td><a href="ft2-truetype_tables.html#TT_APPLE_ID_XXX">TT_APPLE_ID_UNICODE_32</a></td></tr> +<tr><td><a href="ft2-mac_specific.html#FT_GetFile_From_Mac_ATS_Name">FT_GetFile_From_Mac_ATS_Name</a></td><td><a href="ft2-module_management.html#FT_Set_Debug_Hook">FT_Set_Debug_Hook</a></td><td><a href="ft2-truetype_tables.html#TT_APPLE_ID_XXX">TT_APPLE_ID_VARIANT_SELECTOR</a></td></tr> +<tr><td><a href="ft2-mac_specific.html#FT_GetFile_From_Mac_Name">FT_GetFile_From_Mac_Name</a></td><td><a href="ft2-multiple_masters.html#FT_Set_MM_Blend_Coordinates">FT_Set_MM_Blend_Coordinates</a></td><td><a href="ft2-truetype_tables.html#TT_APPLE_ID_XXX">TT_APPLE_ID_XXX</a></td></tr> +<tr><td><a href="ft2-mac_specific.html#FT_GetFilePath_From_Mac_ATS_Name">FT_GetFilePath_From_Mac_ATS_Name</a></td><td><a href="ft2-multiple_masters.html#FT_Set_MM_Design_Coordinates">FT_Set_MM_Design_Coordinates</a></td><td><a href="ft2-truetype_tables.html#TT_Header">TT_Header</a></td></tr> +<tr><td><a href="ft2-glyph_management.html#FT_Glyph_BBox_Mode">FT_GLYPH_BBOX_GRIDFIT</a></td><td><a href="ft2-base_interface.html#FT_Set_Pixel_Sizes">FT_Set_Pixel_Sizes</a></td><td><a href="ft2-truetype_tables.html#TT_HoriHeader">TT_HoriHeader</a></td></tr> +<tr><td><a href="ft2-glyph_management.html#FT_Glyph_BBox_Mode">FT_GLYPH_BBOX_PIXELS</a></td><td><a href="ft2-module_management.html#FT_Set_Renderer">FT_Set_Renderer</a></td><td><a href="ft2-truetype_tables.html#TT_ISO_ID_XXX">TT_ISO_ID_10646</a></td></tr> +<tr><td><a href="ft2-glyph_management.html#FT_Glyph_BBox_Mode">FT_GLYPH_BBOX_SUBPIXELS</a></td><td><a href="ft2-base_interface.html#FT_Set_Transform">FT_Set_Transform</a></td><td><a href="ft2-truetype_tables.html#TT_ISO_ID_XXX">TT_ISO_ID_7BIT_ASCII</a></td></tr> +<tr><td><a href="ft2-glyph_management.html#FT_Glyph_BBox_Mode">FT_GLYPH_BBOX_TRUNCATE</a></td><td><a href="ft2-multiple_masters.html#FT_Set_Var_Blend_Coordinates">FT_Set_Var_Blend_Coordinates</a></td><td><a href="ft2-truetype_tables.html#TT_ISO_ID_XXX">TT_ISO_ID_8859_1</a></td></tr> +<tr><td><a href="ft2-glyph_management.html#FT_Glyph_BBox_Mode">FT_GLYPH_BBOX_UNSCALED</a></td><td><a href="ft2-multiple_masters.html#FT_Set_Var_Design_Coordinates">FT_Set_Var_Design_Coordinates</a></td><td><a href="ft2-truetype_tables.html#TT_ISO_ID_XXX">TT_ISO_ID_XXX</a></td></tr> +<tr><td><a href="ft2-basic_types.html#FT_Glyph_Format">FT_GLYPH_FORMAT_BITMAP</a></td><td><a href="ft2-header_file_macros.html#FT_SFNT_NAMES_H">FT_SFNT_NAMES_H</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_ARABIC</a></td></tr> +<tr><td><a href="ft2-basic_types.html#FT_Glyph_Format">FT_GLYPH_FORMAT_COMPOSITE</a></td><td><a href="ft2-truetype_tables.html#FT_Sfnt_Table_Info">FT_Sfnt_Table_Info</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_ARMENIAN</a></td></tr> +<tr><td><a href="ft2-basic_types.html#FT_Glyph_Format">FT_GLYPH_FORMAT_NONE</a></td><td><a href="ft2-truetype_tables.html#FT_Sfnt_Tag">FT_Sfnt_Tag</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_BENGALI</a></td></tr> +<tr><td><a href="ft2-basic_types.html#FT_Glyph_Format">FT_GLYPH_FORMAT_OUTLINE</a></td><td><a href="ft2-sfnt_names.html#FT_SfntName">FT_SfntName</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_BURMESE</a></td></tr> +<tr><td><a href="ft2-basic_types.html#FT_Glyph_Format">FT_GLYPH_FORMAT_PLOTTER</a></td><td><a href="ft2-basic_types.html#FT_Short">FT_Short</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_DEVANAGARI</a></td></tr> +<tr><td><a href="ft2-header_file_macros.html#FT_GLYPH_H">FT_GLYPH_H</a></td><td><a href="ft2-base_interface.html#FT_Size_Request_Type">FT_SIZE_REQUEST_TYPE_BBOX</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_GEEZ</a></td></tr> +<tr><td><a href="ft2-glyph_management.html#FT_Glyph">FT_Glyph</a></td><td><a href="ft2-base_interface.html#FT_Size_Request_Type">FT_SIZE_REQUEST_TYPE_CELL</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_GEORGIAN</a></td></tr> +<tr><td><a href="ft2-glyph_management.html#FT_Glyph_BBox_Mode">FT_Glyph_BBox_Mode</a></td><td><a href="ft2-base_interface.html#FT_Size_Request_Type">FT_SIZE_REQUEST_TYPE_NOMINAL</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_GREEK</a></td></tr> +<tr><td><a href="ft2-glyph_management.html#FT_Glyph_Copy">FT_Glyph_Copy</a></td><td><a href="ft2-base_interface.html#FT_Size_Request_Type">FT_SIZE_REQUEST_TYPE_REAL_DIM</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_GUJARATI</a></td></tr> +<tr><td><a href="ft2-basic_types.html#FT_Glyph_Format">FT_Glyph_Format</a></td><td><a href="ft2-base_interface.html#FT_Size_Request_Type">FT_SIZE_REQUEST_TYPE_SCALES</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_GURMUKHI</a></td></tr> +<tr><td><a href="ft2-glyph_management.html#FT_Glyph_Get_CBox">FT_Glyph_Get_CBox</a></td><td><a href="ft2-header_file_macros.html#FT_SIZES_H">FT_SIZES_H</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_HEBREW</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Glyph_Metrics">FT_Glyph_Metrics</a></td><td><a href="ft2-computations.html#FT_Sin">FT_Sin</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_JAPANESE</a></td></tr> +<tr><td><a href="ft2-glyph_stroker.html#FT_Glyph_Stroke">FT_Glyph_Stroke</a></td><td><a href="ft2-base_interface.html#FT_Size">FT_Size</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_KANNADA</a></td></tr> +<tr><td><a href="ft2-glyph_stroker.html#FT_Glyph_StrokeBorder">FT_Glyph_StrokeBorder</a></td><td><a href="ft2-base_interface.html#FT_Size_Internal">FT_Size_Internal</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_KHMER</a></td></tr> +<tr><td><a href="ft2-glyph_management.html#FT_Glyph_To_Bitmap">FT_Glyph_To_Bitmap</a></td><td><a href="ft2-base_interface.html#FT_Size_Metrics">FT_Size_Metrics</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_KOREAN</a></td></tr> +<tr><td><a href="ft2-glyph_management.html#FT_Glyph_Transform">FT_Glyph_Transform</a></td><td><a href="ft2-base_interface.html#FT_Size_Request">FT_Size_Request</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_LAOTIAN</a></td></tr> +<tr><td><a href="ft2-glyph_management.html#FT_GlyphRec">FT_GlyphRec</a></td><td><a href="ft2-base_interface.html#FT_Size_Request_Type">FT_Size_Request_Type</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_MALAYALAM</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_GlyphSlot">FT_GlyphSlot</a></td><td><a href="ft2-base_interface.html#FT_Size_RequestRec">FT_Size_RequestRec</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_MALDIVIAN</a></td></tr> +<tr><td><a href="ft2-bitmap_handling.html#FT_GlyphSlot_Own_Bitmap">FT_GlyphSlot_Own_Bitmap</a></td><td><a href="ft2-base_interface.html#FT_SizeRec">FT_SizeRec</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_MONGOLIAN</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_GlyphSlotRec">FT_GlyphSlotRec</a></td><td><a href="ft2-base_interface.html#FT_Slot_Internal">FT_Slot_Internal</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_ORIYA</a></td></tr> +<tr><td><a href="ft2-header_file_macros.html#FT_GX_VALIDATE_H">FT_GX_VALIDATE_H</a></td><td><a href="ft2-raster.html#FT_Span">FT_Span</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_ROMAN</a></td></tr> +<tr><td><a href="ft2-header_file_macros.html#FT_GZIP_H">FT_GZIP_H</a></td><td><a href="ft2-raster.html#FT_SpanFunc">FT_SpanFunc</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_RSYMBOL</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_HAS_FAST_GLYPHS">FT_HAS_FAST_GLYPHS</a></td><td><a href="ft2-glyph_stroker.html#FT_StrokerBorder">FT_STROKER_BORDER_LEFT</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_RUSSIAN</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_HAS_FIXED_SIZES">FT_HAS_FIXED_SIZES</a></td><td><a href="ft2-glyph_stroker.html#FT_StrokerBorder">FT_STROKER_BORDER_RIGHT</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_SIMPLIFIED_CHINESE</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_HAS_GLYPH_NAMES">FT_HAS_GLYPH_NAMES</a></td><td><a href="ft2-header_file_macros.html#FT_STROKER_H">FT_STROKER_H</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_SINDHI</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_HAS_HORIZONTAL">FT_HAS_HORIZONTAL</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineCap">FT_STROKER_LINECAP_BUTT</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_SINHALESE</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_HAS_KERNING">FT_HAS_KERNING</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineCap">FT_STROKER_LINECAP_ROUND</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_SLAVIC</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_HAS_MULTIPLE_MASTERS">FT_HAS_MULTIPLE_MASTERS</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineCap">FT_STROKER_LINECAP_SQUARE</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_TAMIL</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_HAS_VERTICAL">FT_HAS_VERTICAL</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineJoin">FT_STROKER_LINEJOIN_BEVEL</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_TELUGU</a></td></tr> +<tr><td><a href="ft2-type1_tables.html#FT_Has_PS_Glyph_Names">FT_Has_PS_Glyph_Names</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineJoin">FT_STROKER_LINEJOIN_MITER</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_THAI</a></td></tr> +<tr><td><a href="ft2-header_file_macros.html#FT_IMAGE_H">FT_IMAGE_H</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineJoin">FT_STROKER_LINEJOIN_ROUND</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_TIBETAN</a></td></tr> +<tr><td><a href="ft2-basic_types.html#FT_IMAGE_TAG">FT_IMAGE_TAG</a></td><td><a href="ft2-base_interface.html#FT_STYLE_FLAG_XXX">FT_STYLE_FLAG_BOLD</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_TRADITIONAL_CHINESE</a></td></tr> +<tr><td><a href="ft2-header_file_macros.html#FT_INCREMENTAL_H">FT_INCREMENTAL_H</a></td><td><a href="ft2-base_interface.html#FT_STYLE_FLAG_XXX">FT_STYLE_FLAG_ITALIC</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_UNINTERP</a></td></tr> +<tr><td><a href="ft2-incremental.html#FT_Incremental">FT_Incremental</a></td><td><a href="ft2-base_interface.html#FT_STYLE_FLAG_XXX">FT_STYLE_FLAG_XXX</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_VIETNAMESE</a></td></tr> +<tr><td><a href="ft2-incremental.html#FT_Incremental_FreeGlyphDataFunc">FT_Incremental_FreeGlyphDataFunc</a></td><td><a href="ft2-system_interface.html#FT_Stream">FT_Stream</a></td><td><a href="ft2-truetype_tables.html#TT_MAC_ID_XXX">TT_MAC_ID_XXX</a></td></tr> +<tr><td><a href="ft2-incremental.html#FT_Incremental_FuncsRec">FT_Incremental_FuncsRec</a></td><td><a href="ft2-system_interface.html#FT_Stream_CloseFunc">FT_Stream_CloseFunc</a></td><td><a href="ft2-truetype_tables.html#TT_MaxProfile">TT_MaxProfile</a></td></tr> +<tr><td><a href="ft2-incremental.html#FT_Incremental_GetGlyphDataFunc">FT_Incremental_GetGlyphDataFunc</a></td><td><a href="ft2-system_interface.html#FT_Stream_IoFunc">FT_Stream_IoFunc</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_BIG_5</a></td></tr> +<tr><td><a href="ft2-incremental.html#FT_Incremental_GetGlyphMetricsFunc">FT_Incremental_GetGlyphMetricsFunc</a></td><td><a href="ft2-gzip.html#FT_Stream_OpenGzip">FT_Stream_OpenGzip</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_GB2312</a></td></tr> +<tr><td><a href="ft2-incremental.html#FT_Incremental_Interface">FT_Incremental_Interface</a></td><td><a href="ft2-lzw.html#FT_Stream_OpenLZW">FT_Stream_OpenLZW</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_JOHAB</a></td></tr> +<tr><td><a href="ft2-incremental.html#FT_Incremental_InterfaceRec">FT_Incremental_InterfaceRec</a></td><td><a href="ft2-system_interface.html#FT_StreamDesc">FT_StreamDesc</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_SJIS</a></td></tr> +<tr><td><a href="ft2-incremental.html#FT_Incremental_Metrics">FT_Incremental_Metrics</a></td><td><a href="ft2-system_interface.html#FT_StreamRec">FT_StreamRec</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_SYMBOL_CS</a></td></tr> +<tr><td><a href="ft2-incremental.html#FT_Incremental_MetricsRec">FT_Incremental_MetricsRec</a></td><td><a href="ft2-basic_types.html#FT_String">FT_String</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_UCS_4</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Init_FreeType">FT_Init_FreeType</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker">FT_Stroker</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_UNICODE_CS</a></td></tr> +<tr><td><a href="ft2-basic_types.html#FT_Int">FT_Int</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_BeginSubPath">FT_Stroker_BeginSubPath</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_WANSUNG</a></td></tr> +<tr><td><a href="ft2-basic_types.html#FT_Int16">FT_Int16</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_ConicTo">FT_Stroker_ConicTo</a></td><td><a href="ft2-truetype_tables.html#TT_MS_ID_XXX">TT_MS_ID_XXX</a></td></tr> +<tr><td><a href="ft2-basic_types.html#FT_Int32">FT_Int32</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_CubicTo">FT_Stroker_CubicTo</a></td><td><a href="ft2-truetype_tables.html#TT_OS2">TT_OS2</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_IS_CID_KEYED">FT_IS_CID_KEYED</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_Done">FT_Stroker_Done</a></td><td><a href="ft2-truetype_tables.html#TT_PCLT">TT_PCLT</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_IS_FIXED_WIDTH">FT_IS_FIXED_WIDTH</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_EndSubPath">FT_Stroker_EndSubPath</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_ADOBE</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_IS_SCALABLE">FT_IS_SCALABLE</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_Export">FT_Stroker_Export</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_APPLE_UNICODE</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_IS_SFNT">FT_IS_SFNT</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_ExportBorder">FT_Stroker_ExportBorder</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_CUSTOM</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_IS_TRICKY">FT_IS_TRICKY</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_GetBorderCounts">FT_Stroker_GetBorderCounts</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_ISO</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Kerning_Mode">FT_KERNING_DEFAULT</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_GetCounts">FT_Stroker_GetCounts</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_MACINTOSH</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Kerning_Mode">FT_KERNING_UNFITTED</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineCap">FT_Stroker_LineCap</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_MICROSOFT</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Kerning_Mode">FT_KERNING_UNSCALED</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineJoin">FT_Stroker_LineJoin</a></td><td><a href="ft2-truetype_tables.html#TT_PLATFORM_XXX">TT_PLATFORM_XXX</a></td></tr> +<tr><td><a href="ft2-base_interface.html#FT_Kerning_Mode">FT_Kerning_Mode</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_LineTo">FT_Stroker_LineTo</a></td><td><a href="ft2-truetype_tables.html#TT_Postscript">TT_Postscript</a></td></tr> +<tr><td><a href="ft2-lcd_filtering.html#FT_LcdFilter">FT_LCD_FILTER_DEFAULT</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_New">FT_Stroker_New</a></td><td><a href="ft2-truetype_tables.html#TT_VertHeader">TT_VertHeader</a></td></tr> +<tr><td><a href="ft2-header_file_macros.html#FT_LCD_FILTER_H">FT_LCD_FILTER_H</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_ParseOutline">FT_Stroker_ParseOutline</a></td><td></td></tr> +<tr><td><a href="ft2-lcd_filtering.html#FT_LcdFilter">FT_LCD_FILTER_LEGACY</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_Rewind">FT_Stroker_Rewind</a></td><td></td></tr> </table> <hr> <table><tr><td width="100%"></td> -<td><font size=-2>[<a href=" -ft2-toc.html">TOC</a>]</font></td></tr></table> +<td><font size=-2>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> +<center><font size=-2>generated on Thu Mar 12 10:57:36 2009</font></center></body> +</html> diff --git a/src/3rdparty/freetype/docs/reference/ft2-lcd_filtering.html b/src/3rdparty/freetype/docs/reference/ft2-lcd_filtering.html index 5543304..9ae6a5f 100644 --- a/src/3rdparty/freetype/docs/reference/ft2-lcd_filtering.html +++ b/src/3rdparty/freetype/docs/reference/ft2-lcd_filtering.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.3.6 API Reference</title> +<title>FreeType-2.3.9 API Reference</title> <style type="text/css"> body { font-family: Verdana, Geneva, Arial, Helvetica, serif; color: #000000; @@ -31,7 +31,11 @@ </style> </head> <body> -<center><h1>FreeType-2.3.6 API Reference</h1></center> + +<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td> +<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> +<center><h1>FreeType-2.3.9 API Reference</h1></center> <center><h1> LCD Filtering @@ -122,14 +126,14 @@ Defined in FT_LCD_FILTER_H (freetype/ftlcdfil.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>This feature is always disabled by default. Clients must make an explicit call to this function with a ‘filter’ value other than <a href="ft2-lcd_filtering.html#FT_LcdFilter">FT_LCD_FILTER_NONE</a> in order to enable it.</p> <p>Due to <b>PATENTS</b> covering subpixel rendering, this function doesn't do anything except returning ‘FT_Err_Unimplemented_Feature’ if the configuration macro FT_CONFIG_OPTION_SUBPIXEL_RENDERING is not defined in your build of the library, which should correspond to all default builds of FreeType.</p> <p>The filter affects glyph bitmaps rendered through <a href="ft2-base_interface.html#FT_Render_Glyph">FT_Render_Glyph</a>, <a href="ft2-outline_processing.html#FT_Outline_Get_Bitmap">FT_Outline_Get_Bitmap</a>, <a href="ft2-base_interface.html#FT_Load_Glyph">FT_Load_Glyph</a>, and <a href="ft2-base_interface.html#FT_Load_Char">FT_Load_Char</a>.</p> <p>It does <i>not</i> affect the output of <a href="ft2-outline_processing.html#FT_Outline_Render">FT_Outline_Render</a> and <a href="ft2-outline_processing.html#FT_Outline_Get_Bitmap">FT_Outline_Get_Bitmap</a>.</p> -<p>If this feature is activated, the dimensions of LCD glyph bitmaps are either larger or taller than the dimensions of the corresponding outline with regards to the pixel grid. For example, for <a href="ft2-base_interface.html#FT_Render_Mode">FT_RENDER_MODE_LCD</a>, the filter adds up to 3 pixels to the left, and up to 3 pixels to the right.</p> +<p>If this feature is activated, the dimensions of LCD glyph bitmaps are either larger or taller than the dimensions of the corresponding outline with regards to the pixel grid. For example, for <a href="ft2-base_interface.html#FT_Render_Mode">FT_RENDER_MODE_LCD</a>, the filter adds up to 3 pixels to the left, and up to 3 pixels to the right.</p> <p>The bitmap offset values are adjusted correctly, so clients shouldn't need to modify their layout and glyph positioning code when enabling the filter.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>since</b></em></td></tr><tr><td> diff --git a/src/3rdparty/freetype/docs/reference/ft2-list_processing.html b/src/3rdparty/freetype/docs/reference/ft2-list_processing.html index 5264236..bf0df50 100644 --- a/src/3rdparty/freetype/docs/reference/ft2-list_processing.html +++ b/src/3rdparty/freetype/docs/reference/ft2-list_processing.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.3.6 API Reference</title> +<title>FreeType-2.3.9 API Reference</title> <style type="text/css"> body { font-family: Verdana, Geneva, Arial, Helvetica, serif; color: #000000; @@ -31,7 +31,11 @@ </style> </head> <body> -<center><h1>FreeType-2.3.6 API Reference</h1></center> + +<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td> +<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> +<center><h1>FreeType-2.3.9 API Reference</h1></center> <center><h1> List Processing @@ -51,14 +55,6 @@ List Processing <table align=center width="75%"><tr><td> <h4><a name="FT_List">FT_List</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_TYPES_H (freetype/fttypes.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_ListRec_* <b>FT_List</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>A handle to a list record (see <a href="ft2-list_processing.html#FT_ListRec">FT_ListRec</a>).</p> </td></tr></table><br> </td></tr></table> @@ -70,14 +66,6 @@ Defined in FT_TYPES_H (freetype/fttypes.h). <table align=center width="75%"><tr><td> <h4><a name="FT_ListNode">FT_ListNode</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_TYPES_H (freetype/fttypes.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_ListNodeRec_* <b>FT_ListNode</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>Many elements and objects in FreeType are listed through an <a href="ft2-list_processing.html#FT_List">FT_List</a> record (see <a href="ft2-list_processing.html#FT_ListRec">FT_ListRec</a>). As its name suggests, an FT_ListNode is a handle to a single list element.</p> </td></tr></table><br> </td></tr></table> @@ -173,7 +161,7 @@ Defined in FT_LIST_H (freetype/ftlist.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Finds the list node for a given listed object.</p> +<p>Find the list node for a given listed object.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> <p></p> @@ -208,7 +196,7 @@ Defined in FT_LIST_H (freetype/ftlist.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Appends an element to the end of a list.</p> +<p>Append an element to the end of a list.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>inout</b></em></td></tr><tr><td> <p></p> @@ -240,7 +228,7 @@ Defined in FT_LIST_H (freetype/ftlist.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Inserts an element at the head of a list.</p> +<p>Insert an element at the head of a list.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>inout</b></em></td></tr><tr><td> <p></p> @@ -272,7 +260,7 @@ Defined in FT_LIST_H (freetype/ftlist.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Removes a node from a list. This function doesn't check whether the node is in the list!</p> +<p>Remove a node from a list. This function doesn't check whether the node is in the list!</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> <p></p> @@ -309,7 +297,7 @@ Defined in FT_LIST_H (freetype/ftlist.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Moves a node to the head/top of a list. Used to maintain LRU lists.</p> +<p>Move a node to the head/top of a list. Used to maintain LRU lists.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>inout</b></em></td></tr><tr><td> <p></p> @@ -374,7 +362,7 @@ Defined in FT_LIST_H (freetype/ftlist.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Parses a list and calls a given iterator function on each element. Note that parsing is stopped as soon as one of the iterator calls returns a non-zero value.</p> +<p>Parse a list and calls a given iterator function on each element. Note that parsing is stopped as soon as one of the iterator calls returns a non-zero value.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> <p></p> @@ -450,7 +438,7 @@ Defined in FT_LIST_H (freetype/ftlist.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Destroys all elements in the list as well as the list itself.</p> +<p>Destroy all elements in the list as well as the list itself.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> <p></p> diff --git a/src/3rdparty/freetype/docs/reference/ft2-lzw.html b/src/3rdparty/freetype/docs/reference/ft2-lzw.html index 232091b..5ef0a5f 100644 --- a/src/3rdparty/freetype/docs/reference/ft2-lzw.html +++ b/src/3rdparty/freetype/docs/reference/ft2-lzw.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.3.6 API Reference</title> +<title>FreeType-2.3.9 API Reference</title> <style type="text/css"> body { font-family: Verdana, Geneva, Arial, Helvetica, serif; color: #000000; @@ -31,7 +31,11 @@ </style> </head> <body> -<center><h1>FreeType-2.3.6 API Reference</h1></center> + +<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td> +<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> +<center><h1>FreeType-2.3.9 API Reference</h1></center> <center><h1> LZW Streams @@ -71,7 +75,7 @@ Defined in FT_LZW_H (freetype/ftlzw.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>The source stream must be opened <i>before</i> calling this function.</p> diff --git a/src/3rdparty/freetype/docs/reference/ft2-mac_specific.html b/src/3rdparty/freetype/docs/reference/ft2-mac_specific.html index 4ae69b7..3528c72 100644 --- a/src/3rdparty/freetype/docs/reference/ft2-mac_specific.html +++ b/src/3rdparty/freetype/docs/reference/ft2-mac_specific.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.3.6 API Reference</title> +<title>FreeType-2.3.9 API Reference</title> <style type="text/css"> body { font-family: Verdana, Geneva, Arial, Helvetica, serif; color: #000000; @@ -31,7 +31,11 @@ </style> </head> <body> -<center><h1>FreeType-2.3.6 API Reference</h1></center> + +<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td> +<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> +<center><h1>FreeType-2.3.9 API Reference</h1></center> <center><h1> Mac Specific Interface @@ -92,7 +96,7 @@ Defined in FT_MAC_H (freetype/ftmac.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>notes</b></em></td></tr><tr><td> <p>This function can be used to create <a href="ft2-base_interface.html#FT_Face">FT_Face</a> objects from fonts that are installed in the system as follows.</p> @@ -144,7 +148,7 @@ Defined in FT_MAC_H (freetype/ftmac.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -189,7 +193,7 @@ Defined in FT_MAC_H (freetype/ftmac.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -238,7 +242,7 @@ Defined in FT_MAC_H (freetype/ftmac.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -279,7 +283,7 @@ Defined in FT_MAC_H (freetype/ftmac.h). <p>FSSpec to the font file.</p> </td></tr> <tr valign=top><td><b>face_index</b></td><td> -<p>The index of the face within the resource. The first face has index 0.</p> +<p>The index of the face within the resource. The first face has index 0.</p> </td></tr> </table> </td></tr></table> @@ -292,7 +296,7 @@ Defined in FT_MAC_H (freetype/ftmac.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p><a href="ft2-mac_specific.html#FT_New_Face_From_FSSpec">FT_New_Face_From_FSSpec</a> is identical to <a href="ft2-base_interface.html#FT_New_Face">FT_New_Face</a> except it accepts an FSSpec instead of a path.</p> @@ -336,7 +340,7 @@ Defined in FT_MAC_H (freetype/ftmac.h). <p>FSRef to the font file.</p> </td></tr> <tr valign=top><td><b>face_index</b></td><td> -<p>The index of the face within the resource. The first face has index 0.</p> +<p>The index of the face within the resource. The first face has index 0.</p> </td></tr> </table> </td></tr></table> @@ -349,7 +353,7 @@ Defined in FT_MAC_H (freetype/ftmac.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p><a href="ft2-mac_specific.html#FT_New_Face_From_FSRef">FT_New_Face_From_FSRef</a> is identical to <a href="ft2-base_interface.html#FT_New_Face">FT_New_Face</a> except it accepts an FSRef instead of a path.</p> diff --git a/src/3rdparty/freetype/docs/reference/ft2-module_management.html b/src/3rdparty/freetype/docs/reference/ft2-module_management.html index 173d2bb..e621f27 100644 --- a/src/3rdparty/freetype/docs/reference/ft2-module_management.html +++ b/src/3rdparty/freetype/docs/reference/ft2-module_management.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.3.6 API Reference</title> +<title>FreeType-2.3.9 API Reference</title> <style type="text/css"> body { font-family: Verdana, Geneva, Arial, Helvetica, serif; color: #000000; @@ -31,7 +31,11 @@ </style> </head> <body> -<center><h1>FreeType-2.3.6 API Reference</h1></center> + +<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td> +<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> +<center><h1>FreeType-2.3.9 API Reference</h1></center> <center><h1> Module Management @@ -211,7 +215,7 @@ Defined in FT_MODULE_H (freetype/ftmodapi.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Adds a new module to a given library instance.</p> +<p>Add a new module to a given library instance.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>inout</b></em></td></tr><tr><td> <p></p> @@ -230,7 +234,7 @@ Defined in FT_MODULE_H (freetype/ftmodapi.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>An error will be returned if a module already exists by that name, or if the module requires a version of FreeType that is too great.</p> @@ -254,7 +258,7 @@ Defined in FT_MODULE_H (freetype/ftmodapi.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Finds a module by its name.</p> +<p>Find a module by its name.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> <p></p> @@ -268,7 +272,7 @@ Defined in FT_MODULE_H (freetype/ftmodapi.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>A module handle. 0 if none was found.</p> +<p>A module handle. 0 if none was found.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>FreeType's internal modules aren't documented very well, and you should look up the source code for details.</p> @@ -292,7 +296,7 @@ Defined in FT_MODULE_H (freetype/ftmodapi.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Removes a given module from a library instance.</p> +<p>Remove a given module from a library instance.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>inout</b></em></td></tr><tr><td> <p></p> @@ -311,7 +315,7 @@ Defined in FT_MODULE_H (freetype/ftmodapi.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>The module object is destroyed by the function in case of success.</p> @@ -354,7 +358,7 @@ Defined in FT_MODULE_H (freetype/ftmodapi.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -374,7 +378,7 @@ Defined in FT_MODULE_H (freetype/ftmodapi.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Discards a given library object. This closes all drivers and discards all resource objects.</p> +<p>Discard a given library object. This closes all drivers and discards all resource objects.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> <p></p> @@ -385,7 +389,7 @@ Defined in FT_MODULE_H (freetype/ftmodapi.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -407,7 +411,7 @@ Defined in FT_MODULE_H (freetype/ftmodapi.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Sets a debug hook function for debugging the interpreter of a font format.</p> +<p>Set a debug hook function for debugging the interpreter of a font format.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>inout</b></em></td></tr><tr><td> <p></p> @@ -429,7 +433,7 @@ Defined in FT_MODULE_H (freetype/ftmodapi.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> -<p>Currently, four debug hook slots are available, but only two (for the TrueType and the Type 1 interpreter) are defined.</p> +<p>Currently, four debug hook slots are available, but only two (for the TrueType and the Type 1 interpreter) are defined.</p> <p>Since the internal headers of FreeType are no longer installed, the symbol ‘FT_DEBUG_HOOK_TRUETYPE’ isn't available publicly. This is a bug and will be fixed in a forthcoming release.</p> </td></tr></table> </td></tr></table> @@ -450,7 +454,7 @@ Defined in FT_MODULE_H (freetype/ftmodapi.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Adds the set of default drivers to a given library object. This is only useful when you create a library object with <a href="ft2-module_management.html#FT_New_Library">FT_New_Library</a> (usually to plug a custom memory manager).</p> +<p>Add the set of default drivers to a given library object. This is only useful when you create a library object with <a href="ft2-module_management.html#FT_New_Library">FT_New_Library</a> (usually to plug a custom memory manager).</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>inout</b></em></td></tr><tr><td> <p></p> @@ -540,7 +544,7 @@ Defined in FT_RENDER_H (freetype/ftrender.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Retrieves the current renderer for a given glyph format.</p> +<p>Retrieve the current renderer for a given glyph format.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> <p></p> @@ -554,7 +558,7 @@ Defined in FT_RENDER_H (freetype/ftrender.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>A renderer handle. 0 if none found.</p> +<p>A renderer handle. 0 if none found.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>An error will be returned if a module already exists by that name, or if the module requires a version of FreeType that is too great.</p> @@ -581,7 +585,7 @@ Defined in FT_RENDER_H (freetype/ftrender.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Sets the current renderer to use, and set additional mode.</p> +<p>Set the current renderer to use, and set additional mode.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>inout</b></em></td></tr><tr><td> <p></p> @@ -606,7 +610,7 @@ Defined in FT_RENDER_H (freetype/ftrender.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>In case of success, the renderer will be used to convert glyph images in the renderer's known format into bitmaps.</p> diff --git a/src/3rdparty/freetype/docs/reference/ft2-multiple_masters.html b/src/3rdparty/freetype/docs/reference/ft2-multiple_masters.html index 94aecc2..a977f87 100644 --- a/src/3rdparty/freetype/docs/reference/ft2-multiple_masters.html +++ b/src/3rdparty/freetype/docs/reference/ft2-multiple_masters.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.3.6 API Reference</title> +<title>FreeType-2.3.9 API Reference</title> <style type="text/css"> body { font-family: Verdana, Geneva, Arial, Helvetica, serif; color: #000000; @@ -31,7 +31,11 @@ </style> </head> <body> -<center><h1>FreeType-2.3.6 API Reference</h1></center> + +<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td> +<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> +<center><h1>FreeType-2.3.9 API Reference</h1></center> <center><h1> Multiple Masters @@ -48,7 +52,7 @@ Multiple Masters <table align=center width="87%"><tr><td> <p>The following types and functions are used to manage Multiple Master fonts, i.e., the selection of specific design instances by setting design axis coordinates.</p> -<p>George Williams has extended this interface to make it work with both Type 1 Multiple Masters fonts and GX distortable (var) fonts. Some of these routines only work with MM fonts, others will work with both types. They are similar enough that a consistent interface makes sense.</p> +<p>George Williams has extended this interface to make it work with both Type 1 Multiple Masters fonts and GX distortable (var) fonts. Some of these routines only work with MM fonts, others will work with both types. They are similar enough that a consistent interface makes sense.</p> </td></tr></table><br> <table align=center width="75%"><tr><td> <h4><a name="FT_MM_Axis">FT_MM_Axis</a></h4> @@ -114,10 +118,10 @@ Defined in FT_MULTIPLE_MASTERS_H (freetype/ftmm.h). <p></p> <table cellpadding=3 border=0> <tr valign=top><td><b>num_axis</b></td><td> -<p>Number of axes. Cannot exceed 4.</p> +<p>Number of axes. Cannot exceed 4.</p> </td></tr> <tr valign=top><td><b>num_designs</b></td><td> -<p>Number of designs; should be normally 2^num_axis even though the Type 1 specification strangely allows for intermediate designs to be present. This number cannot exceed 16.</p> +<p>Number of designs; should be normally 2^num_axis even though the Type 1 specification strangely allows for intermediate designs to be present. This number cannot exceed 16.</p> </td></tr> <tr valign=top><td><b>axis</b></td><td> <p>A table of axis descriptors.</p> @@ -245,7 +249,7 @@ Defined in FT_MULTIPLE_MASTERS_H (freetype/ftmm.h). <p></p> <table cellpadding=3 border=0> <tr valign=top><td><b>num_axis</b></td><td> -<p>The number of axes. The maximum value is 4 for MM; no limit in GX.</p> +<p>The number of axes. The maximum value is 4 for MM; no limit in GX.</p> </td></tr> <tr valign=top><td><b>num_designs</b></td><td> <p>The number of designs; should be normally 2^num_axis for MM fonts. Not meaningful for GX (where every glyph could have a different number of designs).</p> @@ -280,7 +284,7 @@ Defined in FT_MULTIPLE_MASTERS_H (freetype/ftmm.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Retrieves the Multiple Master descriptor of a given font.</p> +<p>Retrieve the Multiple Master descriptor of a given font.</p> <p>This function can't be used with GX fonts.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> @@ -300,7 +304,7 @@ Defined in FT_MULTIPLE_MASTERS_H (freetype/ftmm.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -321,7 +325,7 @@ Defined in FT_MULTIPLE_MASTERS_H (freetype/ftmm.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Retrieves the Multiple Master/GX var descriptor of a given font.</p> +<p>Retrieve the Multiple Master/GX var descriptor of a given font.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> <p></p> @@ -335,12 +339,12 @@ Defined in FT_MULTIPLE_MASTERS_H (freetype/ftmm.h). <p></p> <table cellpadding=3 border=0> <tr valign=top><td><b>amaster</b></td><td> -<p>The Multiple Masters descriptor. Allocates a data structure, which the user must free (a single call to FT_FREE will do it).</p> +<p>The Multiple Masters/GX var descriptor. Allocates a data structure, which the user must free (a single call to FT_FREE will do it).</p> </td></tr> </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -385,7 +389,7 @@ Defined in FT_MULTIPLE_MASTERS_H (freetype/ftmm.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -429,7 +433,7 @@ Defined in FT_MULTIPLE_MASTERS_H (freetype/ftmm.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -473,7 +477,7 @@ Defined in FT_MULTIPLE_MASTERS_H (freetype/ftmm.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> </td></tr></table> <hr width="75%"> diff --git a/src/3rdparty/freetype/docs/reference/ft2-ot_validation.html b/src/3rdparty/freetype/docs/reference/ft2-ot_validation.html index 9db7884..e2289ef 100644 --- a/src/3rdparty/freetype/docs/reference/ft2-ot_validation.html +++ b/src/3rdparty/freetype/docs/reference/ft2-ot_validation.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.3.6 API Reference</title> +<title>FreeType-2.3.9 API Reference</title> <style type="text/css"> body { font-family: Verdana, Geneva, Arial, Helvetica, serif; color: #000000; @@ -31,7 +31,11 @@ </style> </head> <body> -<center><h1>FreeType-2.3.6 API Reference</h1></center> + +<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td> +<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> +<center><h1>FreeType-2.3.9 API Reference</h1></center> <center><h1> OpenType Validation @@ -153,7 +157,7 @@ Defined in FT_OPENTYPE_VALIDATE_H (freetype/ftotval.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>This function only works with OpenType fonts, returning an error otherwise.</p> diff --git a/src/3rdparty/freetype/docs/reference/ft2-outline_processing.html b/src/3rdparty/freetype/docs/reference/ft2-outline_processing.html index 9153b8d..d0b670e 100644 --- a/src/3rdparty/freetype/docs/reference/ft2-outline_processing.html +++ b/src/3rdparty/freetype/docs/reference/ft2-outline_processing.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.3.6 API Reference</title> +<title>FreeType-2.3.9 API Reference</title> <style type="text/css"> body { font-family: Verdana, Geneva, Arial, Helvetica, serif; color: #000000; @@ -31,7 +31,11 @@ </style> </head> <body> -<center><h1>FreeType-2.3.6 API Reference</h1></center> + +<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td> +<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> +<center><h1>FreeType-2.3.9 API Reference</h1></center> <center><h1> Outline Processing @@ -92,8 +96,8 @@ Defined in FT_IMAGE_H (freetype/ftimage.h). <p>A pointer to an array of ‘n_points’ <a href="ft2-basic_types.html#FT_Vector">FT_Vector</a> elements, giving the outline's point coordinates.</p> </td></tr> <tr valign=top><td><b>tags</b></td><td> -<p>A pointer to an array of ‘n_points’ chars, giving each outline point's type. If bit 0 is unset, the point is ‘off’ the curve, i.e., a Bézier control point, while it is ‘on’ when set.</p> -<p>Bit 1 is meaningful for ‘off’ points only. If set, it indicates a third-order Bézier arc control point; and a second-order control point if unset.</p> +<p>A pointer to an array of ‘n_points’ chars, giving each outline point's type. If bit 0 is unset, the point is ‘off’ the curve, i.e., a Bézier control point, while it is ‘on’ when set.</p> +<p>Bit 1 is meaningful for ‘off’ points only. If set, it indicates a third-order Bézier arc control point; and a second-order control point if unset.</p> </td></tr> <tr valign=top><td><b>contours</b></td><td> <p>An array of ‘n_contours’ shorts, giving the end point of each contour within the outline. For example, the first contour is defined by the points ‘0’ to ‘contours[0]’, the second one is defined by the points ‘contours[0]+1’ to ‘contours[1]’, etc.</p> @@ -121,6 +125,8 @@ Defined in FT_IMAGE_H (freetype/ftimage.h). #define <a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_EVEN_ODD_FILL</a> 0x2 #define <a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_REVERSE_FILL</a> 0x4 #define <a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_IGNORE_DROPOUTS</a> 0x8 +#define <a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_SMART_DROPOUTS</a> 0x10 +#define <a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_INCLUDE_STUBS</a> 0x20 #define <a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_HIGH_PRECISION</a> 0x100 #define <a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_SINGLE_PASS</a> 0x200 @@ -133,10 +139,10 @@ Defined in FT_IMAGE_H (freetype/ftimage.h). <p></p> <table cellpadding=3 border=0> <tr valign=top><td><b>FT_OUTLINE_NONE</b></td><td> -<p>Value 0 is reserved.</p> +<p>Value 0 is reserved.</p> </td></tr> <tr valign=top><td><b>FT_OUTLINE_OWNER</b></td><td> -<p>If set, this flag indicates that the outline's field arrays (i.e., ‘points’, ‘flags’ & ‘contours’) are ‘owned’ by the outline object, and should thus be freed when it is destroyed.</p> +<p>If set, this flag indicates that the outline's field arrays (i.e., ‘points’, ‘flags’, and ‘contours’) are ‘owned’ by the outline object, and should thus be freed when it is destroyed.</p> </td></tr> <tr valign=top><td colspan=0><b>FT_OUTLINE_EVEN_ODD_FILL</b></td></tr> <tr valign=top><td></td><td> @@ -144,21 +150,32 @@ Defined in FT_IMAGE_H (freetype/ftimage.h). </td></tr> <tr valign=top><td colspan=0><b>FT_OUTLINE_REVERSE_FILL</b></td></tr> <tr valign=top><td></td><td> -<p>By default, outside contours of an outline are oriented in clock-wise direction, as defined in the TrueType specification. This flag is set if the outline uses the opposite direction (typically for Type 1 fonts). This flag is ignored by the scan-converter.</p> +<p>By default, outside contours of an outline are oriented in clock-wise direction, as defined in the TrueType specification. This flag is set if the outline uses the opposite direction (typically for Type 1 fonts). This flag is ignored by the scan converter.</p> </td></tr> <tr valign=top><td colspan=0><b>FT_OUTLINE_IGNORE_DROPOUTS</b></td></tr> <tr valign=top><td></td><td> <p>By default, the scan converter will try to detect drop-outs in an outline and correct the glyph bitmap to ensure consistent shape continuity. If set, this flag hints the scan-line converter to ignore such cases.</p> </td></tr> +<tr valign=top><td colspan=0><b>FT_OUTLINE_SMART_DROPOUTS</b></td></tr> +<tr valign=top><td></td><td> +<p>Select smart dropout control. If unset, use simple dropout control. Ignored if <a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_IGNORE_DROPOUTS</a> is set.</p> +</td></tr> +<tr valign=top><td colspan=0><b>FT_OUTLINE_INCLUDE_STUBS</b></td></tr> +<tr valign=top><td></td><td> +<p>If set, turn pixels on for ‘stubs’, otherwise exclude them. Ignored if <a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_IGNORE_DROPOUTS</a> is set.</p> +</td></tr> <tr valign=top><td colspan=0><b>FT_OUTLINE_HIGH_PRECISION</b></td></tr> <tr valign=top><td></td><td> -<p>This flag indicates that the scan-line converter should try to convert this outline to bitmaps with the highest possible quality. It is typically set for small character sizes. Note that this is only a hint, that might be completely ignored by a given scan-converter.</p> +<p>This flag indicates that the scan-line converter should try to convert this outline to bitmaps with the highest possible quality. It is typically set for small character sizes. Note that this is only a hint that might be completely ignored by a given scan-converter.</p> </td></tr> <tr valign=top><td><b>FT_OUTLINE_SINGLE_PASS</b></td><td> -<p>This flag is set to force a given scan-converter to only use a single pass over the outline to render a bitmap glyph image. Normally, it is set for very large character sizes. It is only a hint, that might be completely ignored by a given scan-converter.</p> +<p>This flag is set to force a given scan-converter to only use a single pass over the outline to render a bitmap glyph image. Normally, it is set for very large character sizes. It is only a hint that might be completely ignored by a given scan-converter.</p> </td></tr> </table> </td></tr></table> +<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> +<p>Please refer to the description of the ‘SCANTYPE’ instruction in the OpenType specification (in file ‘ttinst1.doc’) how simple drop-outs, smart drop-outs, and stubs are defined.</p> +</td></tr></table> </td></tr></table> <hr width="75%"> <table align=center width="75%"><tr><td><font size=-2>[<a href="ft2-index.html">Index</a>]</font></td> @@ -187,7 +204,7 @@ Defined in FT_OUTLINE_H (freetype/ftoutln.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Creates a new outline of a given size.</p> +<p>Create a new outline of a given size.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> <p></p> @@ -207,12 +224,12 @@ Defined in FT_OUTLINE_H (freetype/ftoutln.h). <p></p> <table cellpadding=3 border=0> <tr valign=top><td><b>anoutline</b></td><td> -<p>A handle to the new outline. NULL in case of error.</p> +<p>A handle to the new outline.</p> </td></tr> </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>The reason why this function takes a ‘library’ parameter is simply to use the library's memory allocator.</p> @@ -241,7 +258,7 @@ Defined in FT_OUTLINE_H (freetype/ftoutln.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Destroys an outline created with <a href="ft2-outline_processing.html#FT_Outline_New">FT_Outline_New</a>.</p> +<p>Destroy an outline created with <a href="ft2-outline_processing.html#FT_Outline_New">FT_Outline_New</a>.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> <p></p> @@ -255,7 +272,7 @@ Defined in FT_OUTLINE_H (freetype/ftoutln.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>If the outline's ‘owner’ field is not set, only the outline descriptor will be released.</p> @@ -280,7 +297,7 @@ Defined in FT_OUTLINE_H (freetype/ftoutln.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Copies an outline into another one. Both objects must have the same sizes (number of points & number of contours) when this function is called.</p> +<p>Copy an outline into another one. Both objects must have the same sizes (number of points & number of contours) when this function is called.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> <p></p> @@ -299,7 +316,7 @@ Defined in FT_OUTLINE_H (freetype/ftoutln.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -321,7 +338,7 @@ Defined in FT_OUTLINE_H (freetype/ftoutln.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Applies a simple translation to the points of an outline.</p> +<p>Apply a simple translation to the points of an outline.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>inout</b></em></td></tr><tr><td> <p></p> @@ -361,7 +378,7 @@ Defined in FT_OUTLINE_H (freetype/ftoutln.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Applies a simple 2x2 matrix to all of an outline's points. Useful for applying rotations, slanting, flipping, etc.</p> +<p>Apply a simple 2x2 matrix to all of an outline's points. Useful for applying rotations, slanting, flipping, etc.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>inout</b></em></td></tr><tr><td> <p></p> @@ -401,7 +418,7 @@ Defined in FT_OUTLINE_H (freetype/ftoutln.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Emboldens an outline. The new outline will be at most 4 times ‘strength’ pixels wider and higher. You may think of the left and bottom borders as unchanged.</p> +<p>Embolden an outline. The new outline will be at most 4 times ‘strength’ pixels wider and higher. You may think of the left and bottom borders as unchanged.</p> <p>Negative ‘strength’ values to reduce the outline thickness are possible also.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>inout</b></em></td></tr><tr><td> @@ -421,10 +438,11 @@ Defined in FT_OUTLINE_H (freetype/ftoutln.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>The used algorithm to increase or decrease the thickness of the glyph doesn't change the number of points; this means that certain situations like acute angles or intersections are sometimes handled incorrectly.</p> +<p>If you need ‘better’ metrics values you should call <a href="ft2-outline_processing.html#FT_Outline_Get_CBox">FT_Outline_Get_CBox</a> ot <a href="ft2-outline_processing.html#FT_Outline_Get_BBox">FT_Outline_Get_BBox</a>.</p> <p>Example call:</p> <pre class="colored"> FT_Load_Glyph( face, index, FT_LOAD_DEFAULT ); @@ -450,7 +468,7 @@ Defined in FT_OUTLINE_H (freetype/ftoutln.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Reverses the drawing direction of an outline. This is used to ensure consistent fill conventions for mirrored glyphs.</p> +<p>Reverse the drawing direction of an outline. This is used to ensure consistent fill conventions for mirrored glyphs.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>inout</b></em></td></tr><tr><td> <p></p> @@ -461,7 +479,7 @@ Defined in FT_OUTLINE_H (freetype/ftoutln.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> -<p>This functions toggles the bit flag <a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_REVERSE_FILL</a> in the outline's ‘flags’ field.</p> +<p>This function toggles the bit flag <a href="ft2-outline_processing.html#FT_OUTLINE_FLAGS">FT_OUTLINE_REVERSE_FILL</a> in the outline's ‘flags’ field.</p> <p>It shouldn't be used by a normal client application, unless it knows what it is doing.</p> </td></tr></table> </td></tr></table> @@ -493,7 +511,7 @@ Defined in FT_OUTLINE_H (freetype/ftoutln.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -514,7 +532,7 @@ Defined in FT_BBOX_H (freetype/ftbbox.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Computes the exact bounding box of an outline. This is slower than computing the control box. However, it uses an advanced algorithm which returns <i>very</i> quickly when the two boxes coincide. Otherwise, the outline Bézier arcs are traversed to extract their extrema.</p> +<p>Compute the exact bounding box of an outline. This is slower than computing the control box. However, it uses an advanced algorithm which returns <i>very</i> quickly when the two boxes coincide. Otherwise, the outline Bézier arcs are traversed to extract their extrema.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> <p></p> @@ -533,7 +551,7 @@ Defined in FT_BBOX_H (freetype/ftbbox.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -626,7 +644,7 @@ Defined in FT_IMAGE_H (freetype/ftimage.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>Error code. 0 means success.</p> +<p>Error code. 0 means success.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -664,7 +682,7 @@ Defined in FT_IMAGE_H (freetype/ftimage.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>Error code. 0 means success.</p> +<p>Error code. 0 means success.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -706,7 +724,7 @@ Defined in FT_IMAGE_H (freetype/ftimage.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>Error code. 0 means success.</p> +<p>Error code. 0 means success.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -752,7 +770,7 @@ Defined in FT_IMAGE_H (freetype/ftimage.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>Error code. 0 means success.</p> +<p>Error code. 0 means success.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -812,7 +830,7 @@ Defined in FT_IMAGE_H (freetype/ftimage.h). x' = (x << shift) - delta y' = (x << shift) - delta </pre> -<p>Set the value of ‘shift’ and ‘delta’ to 0 to get the original point coordinates.</p> +<p>Set the value of ‘shift’ and ‘delta’ to 0 to get the original point coordinates.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -834,7 +852,7 @@ Defined in FT_OUTLINE_H (freetype/ftoutln.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Walks over an outline's structure to decompose it into individual segments and Bézier arcs. This function is also able to emit ‘move to’ and ‘close to’ operations to indicate the start and end of new contours in the outline.</p> +<p>Walk over an outline's structure to decompose it into individual segments and Bézier arcs. This function is also able to emit ‘move to’ and ‘close to’ operations to indicate the start and end of new contours in the outline.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> <p></p> @@ -843,7 +861,7 @@ Defined in FT_OUTLINE_H (freetype/ftoutln.h). <p>A pointer to the source target.</p> </td></tr> <tr valign=top><td><b>func_interface</b></td><td> -<p>A table of ‘emitters’, i.e,. function pointers called during decomposition to indicate path operations.</p> +<p>A table of ‘emitters’, i.e., function pointers called during decomposition to indicate path operations.</p> </td></tr> </table> </td></tr></table> @@ -856,7 +874,7 @@ Defined in FT_OUTLINE_H (freetype/ftoutln.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -877,7 +895,7 @@ Defined in FT_OUTLINE_H (freetype/ftoutln.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Returns an outline's ‘control box’. The control box encloses all the outline's points, including Bézier control points. Though it coincides with the exact bounding box for most glyphs, it can be slightly larger in some situations (like when rotating an outline which contains Bézier outside arcs).</p> +<p>Return an outline's ‘control box’. The control box encloses all the outline's points, including Bézier control points. Though it coincides with the exact bounding box for most glyphs, it can be slightly larger in some situations (like when rotating an outline which contains Bézier outside arcs).</p> <p>Computing the control box is very fast, while getting the bounding box can take much more time as it needs to walk over all segments and arcs in the outline. To get the latter, you can use the ‘ftbbox’ component which is dedicated to this single task.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> @@ -916,7 +934,7 @@ Defined in FT_OUTLINE_H (freetype/ftoutln.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Renders an outline within a bitmap. The outline's image is simply OR-ed to the target bitmap.</p> +<p>Render an outline within a bitmap. The outline's image is simply OR-ed to the target bitmap.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> <p></p> @@ -938,11 +956,12 @@ Defined in FT_OUTLINE_H (freetype/ftoutln.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> -<p>This function does NOT CREATE the bitmap, it only renders an outline image within the one you pass to it!</p> +<p>This function does NOT CREATE the bitmap, it only renders an outline image within the one you pass to it! Consequently, the various fields in ‘abitmap’ should be set accordingly.</p> <p>It will use the raster corresponding to the default glyph format.</p> +<p>The value of the ‘num_grays’ field in ‘abitmap’ is ignored. If you select the gray-level rasterizer, and you want less than 256 gray levels, you have to use <a href="ft2-outline_processing.html#FT_Outline_Render">FT_Outline_Render</a> directly.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -964,7 +983,7 @@ Defined in FT_OUTLINE_H (freetype/ftoutln.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Renders an outline within a bitmap using the current scan-convert. This functions uses an <a href="ft2-raster.html#FT_Raster_Params">FT_Raster_Params</a> structure as an argument, allowing advanced features like direct composition, translucency, etc.</p> +<p>Render an outline within a bitmap using the current scan-convert. This function uses an <a href="ft2-raster.html#FT_Raster_Params">FT_Raster_Params</a> structure as an argument, allowing advanced features like direct composition, translucency, etc.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> <p></p> @@ -986,11 +1005,12 @@ Defined in FT_OUTLINE_H (freetype/ftoutln.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>You should know what you are doing and how <a href="ft2-raster.html#FT_Raster_Params">FT_Raster_Params</a> works to use this function.</p> <p>The field ‘params.source’ will be set to ‘outline’ before the scan converter is called, which means that the value you give to it is actually ignored.</p> +<p>The gray-level rasterizer always uses 256 gray levels. If you want less gray levels, you have to provide your own span callback. See the <a href="ft2-raster.html#FT_RASTER_FLAG_XXX">FT_RASTER_FLAG_DIRECT</a> value of the ‘flags’ field in the <a href="ft2-raster.html#FT_Raster_Params">FT_Raster_Params</a> structure for more details.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -1018,7 +1038,7 @@ Defined in FT_OUTLINE_H (freetype/ftoutln.h). </pre></table><br> <table align=center width="87%"><tr><td> <p>A list of values used to describe an outline's contour orientation.</p> -<p>The TrueType and Postscript specifications use different conventions to determine whether outline contours should be filled or unfilled.</p> +<p>The TrueType and PostScript specifications use different conventions to determine whether outline contours should be filled or unfilled.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>values</b></em></td></tr><tr><td> <p></p> @@ -1029,7 +1049,7 @@ Defined in FT_OUTLINE_H (freetype/ftoutln.h). </td></tr> <tr valign=top><td colspan=0><b>FT_ORIENTATION_POSTSCRIPT</b></td></tr> <tr valign=top><td></td><td> -<p>According to the Postscript specification, counter-clockwise contours must be filled, and clockwise ones must be unfilled.</p> +<p>According to the PostScript specification, counter-clockwise contours must be filled, and clockwise ones must be unfilled.</p> </td></tr> <tr valign=top><td colspan=0><b>FT_ORIENTATION_FILL_RIGHT</b></td></tr> <tr valign=top><td></td><td> @@ -1037,7 +1057,7 @@ Defined in FT_OUTLINE_H (freetype/ftoutln.h). </td></tr> <tr valign=top><td colspan=0><b>FT_ORIENTATION_FILL_LEFT</b></td></tr> <tr valign=top><td></td><td> -<p>This is identical to <a href="ft2-outline_processing.html#FT_Orientation">FT_ORIENTATION_POSTSCRIPT</a>, but is used to remember that in Postscript, everything that is to the left of the drawing direction of a contour must be filled.</p> +<p>This is identical to <a href="ft2-outline_processing.html#FT_Orientation">FT_ORIENTATION_POSTSCRIPT</a>, but is used to remember that in PostScript, everything that is to the left of the drawing direction of a contour must be filled.</p> </td></tr> <tr valign=top><td><b>FT_ORIENTATION_NONE</b></td><td> <p>The orientation cannot be determined. That is, different parts of the glyph have different orientation.</p> diff --git a/src/3rdparty/freetype/docs/reference/ft2-pfr_fonts.html b/src/3rdparty/freetype/docs/reference/ft2-pfr_fonts.html index 3a45e4e..8edf34e 100644 --- a/src/3rdparty/freetype/docs/reference/ft2-pfr_fonts.html +++ b/src/3rdparty/freetype/docs/reference/ft2-pfr_fonts.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.3.6 API Reference</title> +<title>FreeType-2.3.9 API Reference</title> <style type="text/css"> body { font-family: Verdana, Geneva, Arial, Helvetica, serif; color: #000000; @@ -31,7 +31,11 @@ </style> </head> <body> -<center><h1>FreeType-2.3.6 API Reference</h1></center> + +<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td> +<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> +<center><h1>FreeType-2.3.9 API Reference</h1></center> <center><h1> PFR Fonts @@ -74,21 +78,21 @@ Defined in FT_PFR_H (freetype/ftpfr.h). <p></p> <table cellpadding=3 border=0> <tr valign=top><td><b>aoutline_resolution</b></td><td> -<p>Outline resolution. This is equivalent to ‘face->units_per_EM’. Optional (parameter can be NULL).</p> +<p>Outline resolution. This is equivalent to ‘face->units_per_EM’ for non-PFR fonts. Optional (parameter can be NULL).</p> </td></tr> <tr valign=top><td><b>ametrics_resolution</b></td><td> <p>Metrics resolution. This is equivalent to ‘outline_resolution’ for non-PFR fonts. Optional (parameter can be NULL).</p> </td></tr> <tr valign=top><td><b>ametrics_x_scale</b></td><td> -<p>A 16.16 fixed-point number used to scale distance expressed in metrics units to device sub-pixels. This is equivalent to ‘face->size->x_scale’, but for metrics only. Optional (parameter can be NULL)</p> +<p>A 16.16 fixed-point number used to scale distance expressed in metrics units to device sub-pixels. This is equivalent to ‘face->size->x_scale’, but for metrics only. Optional (parameter can be NULL).</p> </td></tr> <tr valign=top><td><b>ametrics_y_scale</b></td><td> -<p>Same as ‘ametrics_x_scale’ but for the vertical direction. optional (parameter can be NULL)</p> +<p>Same as ‘ametrics_x_scale’ but for the vertical direction. optional (parameter can be NULL).</p> </td></tr> </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>If the input face is not a PFR, this function will return an error. However, in all cases, it will return valid values.</p> @@ -139,7 +143,7 @@ Defined in FT_PFR_H (freetype/ftpfr.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>This function always return distances in original PFR metrics units. This is unlike <a href="ft2-base_interface.html#FT_Get_Kerning">FT_Get_Kerning</a> with the <a href="ft2-base_interface.html#FT_Kerning_Mode">FT_KERNING_UNSCALED</a> mode, which always returns distances converted to outline units.</p> @@ -187,7 +191,7 @@ Defined in FT_PFR_H (freetype/ftpfr.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>You can use the ‘x_scale’ or ‘y_scale’ results of <a href="ft2-pfr_fonts.html#FT_Get_PFR_Metrics">FT_Get_PFR_Metrics</a> to convert the advance to device sub-pixels (i.e., 1/64th of pixels).</p> diff --git a/src/3rdparty/freetype/docs/reference/ft2-quick_advance.html b/src/3rdparty/freetype/docs/reference/ft2-quick_advance.html new file mode 100644 index 0000000..c832d43 --- /dev/null +++ b/src/3rdparty/freetype/docs/reference/ft2-quick_advance.html @@ -0,0 +1,177 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" +"http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<title>FreeType-2.3.9 API Reference</title> +<style type="text/css"> + body { font-family: Verdana, Geneva, Arial, Helvetica, serif; + color: #000000; + background: #FFFFFF; } + + p { text-align: justify; } + h1 { text-align: center; } + li { text-align: justify; } + td { padding: 0 0.5em 0 0.5em; } + td.left { padding: 0 0.5em 0 0.5em; + text-align: left; } + + a:link { color: #0000EF; } + a:visited { color: #51188E; } + a:hover { color: #FF0000; } + + span.keyword { font-family: monospace; + text-align: left; + white-space: pre; + color: darkblue; } + + pre.colored { color: blue; } + + ul.empty { list-style-type: none; } +</style> +</head> +<body> + +<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td> +<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> +<center><h1>FreeType-2.3.9 API Reference</h1></center> + +<center><h1> +Quick retrieval of advance values +</h1></center> +<h2>Synopsis</h2> +<table align=center cellspacing=5 cellpadding=0 border=0> +<tr><td></td><td><a href="#FT_ADVANCE_FLAG_FAST_ONLY">FT_ADVANCE_FLAG_FAST_ONLY</a></td><td></td><td><a href="#FT_Get_Advances">FT_Get_Advances</a></td></tr> +<tr><td></td><td><a href="#FT_Get_Advance">FT_Get_Advance</a></td><td></td><td></td></tr> +</table><br><br> + +<table align=center width="87%"><tr><td> +<p>This section contains functions to quickly extract advance values without handling glyph outlines, if possible.</p> +</td></tr></table><br> +<table align=center width="75%"><tr><td> +<h4><a name="FT_ADVANCE_FLAG_FAST_ONLY">FT_ADVANCE_FLAG_FAST_ONLY</a></h4> +<table align=center width="87%"><tr><td> +<p>A bit-flag to be OR-ed with the ‘flags’ parameter of the <a href="ft2-quick_advance.html#FT_Get_Advance">FT_Get_Advance</a> and <a href="ft2-quick_advance.html#FT_Get_Advances">FT_Get_Advances</a> functions.</p> +<p>If set, it indicates that you want these functions to fail if the corresponding hinting mode or font driver doesn't allow for very quick advance computation.</p> +<p>Typically, glyphs which are either unscaled, unhinted, bitmapped, or light-hinted can have their advance width computed very quickly.</p> +<p>Normal and bytecode hinted modes, which require loading, scaling, and hinting of the glyph outline, are extremely slow by comparison.</p> +</td></tr></table><br> +</td></tr></table> +<hr width="75%"> +<table align=center width="75%"><tr><td><font size=-2>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td> +<td><font size=-2>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> + +<table align=center width="75%"><tr><td> +<h4><a name="FT_Get_Advance">FT_Get_Advance</a></h4> +<table align=center width="87%"><tr><td> +Defined in FT_ADVANCES_H (freetype/ftadvanc.h). +</td></tr></table><br> +<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> + + FT_EXPORT( <a href="ft2-basic_types.html#FT_Error">FT_Error</a> ) + <b>FT_Get_Advance</b>( <a href="ft2-base_interface.html#FT_Face">FT_Face</a> face, + <a href="ft2-basic_types.html#FT_UInt">FT_UInt</a> gindex, + <a href="ft2-basic_types.html#FT_Int32">FT_Int32</a> load_flags, + <a href="ft2-basic_types.html#FT_Fixed">FT_Fixed</a> *padvance ); + +</pre></table><br> +<table align=center width="87%"><tr><td> +<p>Retrieve the advance value of a given glyph outline in an <a href="ft2-base_interface.html#FT_Face">FT_Face</a>. By default, the unhinted advance is returned in font units.</p> +</td></tr></table><br> +<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> +<p></p> +<table cellpadding=3 border=0> +<tr valign=top><td><b>face</b></td><td> +<p>The source <a href="ft2-base_interface.html#FT_Face">FT_Face</a> handle.</p> +</td></tr> +<tr valign=top><td><b>gindex</b></td><td> +<p>The glyph index.</p> +</td></tr> +<tr valign=top><td><b>load_flags</b></td><td> +<p>A set of bit flags similar to those used when calling <a href="ft2-base_interface.html#FT_Load_Glyph">FT_Load_Glyph</a>, used to determine what kind of advances you need.</p> +</td></tr> +</table> +</td></tr></table> +<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>output</b></em></td></tr><tr><td> +<p></p> +<table cellpadding=3 border=0> +<tr valign=top><td><b>padvance</b></td><td> +<p>The advance value, in either font units or 16.16 format.</p> +<p>If <a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_VERTICAL_LAYOUT</a> is set, this is the vertical advance corresponding to a vertical layout. Otherwise, it is the horizontal advance in a horizontal layout.</p> +</td></tr> +</table> +</td></tr></table> +<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> +<p>FreeType error code. 0 means success.</p> +</td></tr></table> +<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> +<p>This function may fail if you use <a href="ft2-quick_advance.html#FT_ADVANCE_FLAG_FAST_ONLY">FT_ADVANCE_FLAG_FAST_ONLY</a> and if the corresponding font backend doesn't have a quick way to retrieve the advances.</p> +<p>A scaled advance is returned in 16.16 format but isn't transformed by the affine transformation specified by <a href="ft2-base_interface.html#FT_Set_Transform">FT_Set_Transform</a>.</p> +</td></tr></table> +</td></tr></table> +<hr width="75%"> +<table align=center width="75%"><tr><td><font size=-2>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td> +<td><font size=-2>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> + +<table align=center width="75%"><tr><td> +<h4><a name="FT_Get_Advances">FT_Get_Advances</a></h4> +<table align=center width="87%"><tr><td> +Defined in FT_ADVANCES_H (freetype/ftadvanc.h). +</td></tr></table><br> +<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> + + FT_EXPORT( <a href="ft2-basic_types.html#FT_Error">FT_Error</a> ) + <b>FT_Get_Advances</b>( <a href="ft2-base_interface.html#FT_Face">FT_Face</a> face, + <a href="ft2-basic_types.html#FT_UInt">FT_UInt</a> start, + <a href="ft2-basic_types.html#FT_UInt">FT_UInt</a> count, + <a href="ft2-basic_types.html#FT_Int32">FT_Int32</a> load_flags, + <a href="ft2-basic_types.html#FT_Fixed">FT_Fixed</a> *padvances ); + +</pre></table><br> +<table align=center width="87%"><tr><td> +<p>Retrieve the advance values of several glyph outlines in an <a href="ft2-base_interface.html#FT_Face">FT_Face</a>. By default, the unhinted advances are returned in font units.</p> +</td></tr></table><br> +<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> +<p></p> +<table cellpadding=3 border=0> +<tr valign=top><td><b>face</b></td><td> +<p>The source <a href="ft2-base_interface.html#FT_Face">FT_Face</a> handle.</p> +</td></tr> +<tr valign=top><td><b>start</b></td><td> +<p>The first glyph index.</p> +</td></tr> +<tr valign=top><td><b>count</b></td><td> +<p>The number of advance values you want to retrieve.</p> +</td></tr> +<tr valign=top><td><b>load_flags</b></td><td> +<p>A set of bit flags similar to those used when calling <a href="ft2-base_interface.html#FT_Load_Glyph">FT_Load_Glyph</a>.</p> +</td></tr> +</table> +</td></tr></table> +<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>output</b></em></td></tr><tr><td> +<p></p> +<table cellpadding=3 border=0> +<tr valign=top><td><b>padvance</b></td><td> +<p>The advances, in either font units or 16.16 format. This array must contain at least ‘count’ elements.</p> +<p>If <a href="ft2-base_interface.html#FT_LOAD_XXX">FT_LOAD_VERTICAL_LAYOUT</a> is set, these are the vertical advances corresponding to a vertical layout. Otherwise, they are the horizontal advances in a horizontal layout.</p> +</td></tr> +</table> +</td></tr></table> +<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> +<p>FreeType error code. 0 means success.</p> +</td></tr></table> +<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> +<p>This function may fail if you use <a href="ft2-quick_advance.html#FT_ADVANCE_FLAG_FAST_ONLY">FT_ADVANCE_FLAG_FAST_ONLY</a> and if the corresponding font backend doesn't have a quick way to retrieve the advances.</p> +<p>Scaled advances are returned in 16.16 format but aren't transformed by the affine transformation specified by <a href="ft2-base_interface.html#FT_Set_Transform">FT_Set_Transform</a>.</p> +</td></tr></table> +</td></tr></table> +<hr width="75%"> +<table align=center width="75%"><tr><td><font size=-2>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td> +<td><font size=-2>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> + +</body> +</html> diff --git a/src/3rdparty/freetype/docs/reference/ft2-raster.html b/src/3rdparty/freetype/docs/reference/ft2-raster.html index 8eeaa7d..9840eb4 100644 --- a/src/3rdparty/freetype/docs/reference/ft2-raster.html +++ b/src/3rdparty/freetype/docs/reference/ft2-raster.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.3.6 API Reference</title> +<title>FreeType-2.3.9 API Reference</title> <style type="text/css"> body { font-family: Verdana, Geneva, Arial, Helvetica, serif; color: #000000; @@ -31,7 +31,11 @@ </style> </head> <body> -<center><h1>FreeType-2.3.6 API Reference</h1></center> + +<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td> +<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> +<center><h1>FreeType-2.3.9 API Reference</h1></center> <center><h1> Scanline Converter @@ -51,14 +55,6 @@ Scanline Converter <table align=center width="75%"><tr><td> <h4><a name="FT_Raster">FT_Raster</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_IMAGE_H (freetype/ftimage.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_RasterRec_* <b>FT_Raster</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>A handle (pointer) to a raster object. Each object can be used independently to convert an outline into a bitmap or pixmap.</p> </td></tr></table><br> </td></tr></table> @@ -101,8 +97,8 @@ Defined in FT_IMAGE_H (freetype/ftimage.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> -<p>This structure is used by the span drawing callback type named <a href="ft2-raster.html#FT_SpanFunc">FT_SpanFunc</a> which takes the y-coordinate of the span as a a parameter.</p> -<p>The coverage value is always between 0 and 255.</p> +<p>This structure is used by the span drawing callback type named <a href="ft2-raster.html#FT_SpanFunc">FT_SpanFunc</a> which takes the y coordinate of the span as a a parameter.</p> +<p>The coverage value is always between 0 and 255. If you want less gray values, the callback function has to reduce them.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -133,7 +129,7 @@ Defined in FT_IMAGE_H (freetype/ftimage.h). <p></p> <table cellpadding=3 border=0> <tr valign=top><td><b>y</b></td><td> -<p>The scanline's y-coordinate.</p> +<p>The scanline's y coordinate.</p> </td></tr> <tr valign=top><td><b>count</b></td><td> <p>The number of spans to draw on this scanline.</p> @@ -149,7 +145,7 @@ Defined in FT_IMAGE_H (freetype/ftimage.h). <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>This callback allows client applications to directly render the gray spans of the anti-aliased bitmap to any kind of surfaces.</p> <p>This can be used to write anti-aliased outlines directly to a given background bitmap, and even perform translucency.</p> -<p>Note that the ‘count’ field cannot be greater than a fixed value defined by the ‘FT_MAX_GRAY_SPANS’ configuration macro in ‘ftoption.h’. By default, this value is set to 32, which means that if there are more than 32 spans on a given scanline, the callback is called several times with the same ‘y’ parameter in order to draw all callbacks.</p> +<p>Note that the ‘count’ field cannot be greater than a fixed value defined by the ‘FT_MAX_GRAY_SPANS’ configuration macro in ‘ftoption.h’. By default, this value is set to 32, which means that if there are more than 32 spans on a given scanline, the callback is called several times with the same ‘y’ parameter in order to draw all callbacks.</p> <p>Otherwise, the callback is only called once per scan-line, and only for those scanlines that do have ‘gray’ pixels on them.</p> </td></tr></table> </td></tr></table> @@ -179,10 +175,10 @@ Defined in FT_IMAGE_H (freetype/ftimage.h). <p></p> <table cellpadding=3 border=0> <tr valign=top><td><b>y</b></td><td> -<p>The pixel's y-coordinate.</p> +<p>The pixel's y coordinate.</p> </td></tr> <tr valign=top><td><b>x</b></td><td> -<p>The pixel's x-coordinate.</p> +<p>The pixel's x coordinate.</p> </td></tr> <tr valign=top><td><b>user</b></td><td> <p>User-supplied data that is passed to the callback.</p> @@ -190,7 +186,7 @@ Defined in FT_IMAGE_H (freetype/ftimage.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>1 if the pixel is ‘set’, 0 otherwise.</p> +<p>1 if the pixel is ‘set’, 0 otherwise.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -219,10 +215,10 @@ Defined in FT_IMAGE_H (freetype/ftimage.h). <p></p> <table cellpadding=3 border=0> <tr valign=top><td><b>y</b></td><td> -<p>The pixel's y-coordinate.</p> +<p>The pixel's y coordinate.</p> </td></tr> <tr valign=top><td><b>x</b></td><td> -<p>The pixel's x-coordinate.</p> +<p>The pixel's x coordinate.</p> </td></tr> <tr valign=top><td><b>user</b></td><td> <p>User-supplied data that is passed to the callback.</p> @@ -230,7 +226,7 @@ Defined in FT_IMAGE_H (freetype/ftimage.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>1 if the pixel is ‘set’, 0 otherwise.</p> +<p>1 if the pixel is ‘set’, 0 otherwise.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -387,7 +383,7 @@ Defined in FT_IMAGE_H (freetype/ftimage.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>Error code. 0 means success.</p> +<p>Error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>The ‘memory’ parameter is a typeless pointer in order to avoid un-wanted dependencies on the rest of the FreeType code. In practice, it is an <a href="ft2-system_interface.html#FT_Memory">FT_Memory</a> object, i.e., a handle to the standard FreeType memory allocator. However, this field can be completely ignored by a given raster implementation.</p> @@ -523,7 +519,7 @@ Defined in FT_IMAGE_H (freetype/ftimage.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Invokes a given raster to scan-convert a given glyph image into a target bitmap.</p> +<p>Invoke a given raster to scan-convert a given glyph image into a target bitmap.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> <p></p> @@ -537,7 +533,7 @@ Defined in FT_IMAGE_H (freetype/ftimage.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>Error code. 0 means success.</p> +<p>Error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>The exact format of the source image depends on the raster's glyph format defined in its <a href="ft2-raster.html#FT_Raster_Funcs">FT_Raster_Funcs</a> structure. It can be an <a href="ft2-outline_processing.html#FT_Outline">FT_Outline</a> or anything else in order to support a large array of glyph formats.</p> diff --git a/src/3rdparty/freetype/docs/reference/ft2-sfnt_names.html b/src/3rdparty/freetype/docs/reference/ft2-sfnt_names.html index bf64117..94cddd8 100644 --- a/src/3rdparty/freetype/docs/reference/ft2-sfnt_names.html +++ b/src/3rdparty/freetype/docs/reference/ft2-sfnt_names.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.3.6 API Reference</title> +<title>FreeType-2.3.9 API Reference</title> <style type="text/css"> body { font-family: Verdana, Geneva, Arial, Helvetica, serif; color: #000000; @@ -31,7 +31,11 @@ </style> </head> <body> -<center><h1>FreeType-2.3.6 API Reference</h1></center> + +<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td> +<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> +<center><h1>FreeType-2.3.9 API Reference</h1></center> <center><h1> SFNT Names @@ -42,7 +46,7 @@ SFNT Names </table><br><br> <table align=center width="87%"><tr><td> -<p>The TrueType and OpenType specification allow the inclusion of a special ‘names table’ in font files. This table contains textual (and internationalized) information regarding the font, like family name, copyright, version, etc.</p> +<p>The TrueType and OpenType specifications allow the inclusion of a special ‘names table’ in font files. This table contains textual (and internationalized) information regarding the font, like family name, copyright, version, etc.</p> <p>The definitions below are used to access them if available.</p> <p>Note that this has nothing to do with glyph names!</p> </td></tr></table><br> @@ -115,7 +119,7 @@ Defined in FT_SFNT_NAMES_H (freetype/ftsnames.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Retrieves the number of name strings in the SFNT ‘name’ table.</p> +<p>Retrieve the number of name strings in the SFNT ‘name’ table.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> <p></p> @@ -148,7 +152,7 @@ Defined in FT_SFNT_NAMES_H (freetype/ftsnames.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Retrieves a string of the SFNT ‘name’ table for a given index.</p> +<p>Retrieve a string of the SFNT ‘name’ table for a given index.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> <p></p> @@ -170,7 +174,7 @@ Defined in FT_SFNT_NAMES_H (freetype/ftsnames.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>The ‘string’ array returned in the ‘aname’ structure is not null-terminated.</p> diff --git a/src/3rdparty/freetype/docs/reference/ft2-sizes_management.html b/src/3rdparty/freetype/docs/reference/ft2-sizes_management.html index 66f6365..324e584 100644 --- a/src/3rdparty/freetype/docs/reference/ft2-sizes_management.html +++ b/src/3rdparty/freetype/docs/reference/ft2-sizes_management.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.3.6 API Reference</title> +<title>FreeType-2.3.9 API Reference</title> <style type="text/css"> body { font-family: Verdana, Geneva, Arial, Helvetica, serif; color: #000000; @@ -31,7 +31,11 @@ </style> </head> <body> -<center><h1>FreeType-2.3.6 API Reference</h1></center> + +<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td> +<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> +<center><h1>FreeType-2.3.9 API Reference</h1></center> <center><h1> Size Management @@ -79,7 +83,7 @@ Defined in FT_SIZES_H (freetype/ftsizes.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>You need to call <a href="ft2-sizes_management.html#FT_Activate_Size">FT_Activate_Size</a> in order to select the new size for upcoming calls to <a href="ft2-base_interface.html#FT_Set_Pixel_Sizes">FT_Set_Pixel_Sizes</a>, <a href="ft2-base_interface.html#FT_Set_Char_Size">FT_Set_Char_Size</a>, <a href="ft2-base_interface.html#FT_Load_Glyph">FT_Load_Glyph</a>, <a href="ft2-base_interface.html#FT_Load_Char">FT_Load_Char</a>, etc.</p> @@ -113,7 +117,7 @@ Defined in FT_SIZES_H (freetype/ftsizes.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -133,7 +137,7 @@ Defined in FT_SIZES_H (freetype/ftsizes.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Even though it is possible to create several size objects for a given face (see <a href="ft2-sizes_management.html#FT_New_Size">FT_New_Size</a> for details), functions like <a href="ft2-base_interface.html#FT_Load_Glyph">FT_Load_Glyph</a> or <a href="ft2-base_interface.html#FT_Load_Char">FT_Load_Char</a> only use the last-created one to determine the ‘current character pixel size’.</p> +<p>Even though it is possible to create several size objects for a given face (see <a href="ft2-sizes_management.html#FT_New_Size">FT_New_Size</a> for details), functions like <a href="ft2-base_interface.html#FT_Load_Glyph">FT_Load_Glyph</a> or <a href="ft2-base_interface.html#FT_Load_Char">FT_Load_Char</a> only use the one which has been activated last to determine the ‘current character pixel size’.</p> <p>This function can be used to ‘activate’ a previously created size object.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> @@ -145,7 +149,7 @@ Defined in FT_SIZES_H (freetype/ftsizes.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>If ‘face’ is the size's parent face object, this function changes the value of ‘face->size’ to the input size handle.</p> diff --git a/src/3rdparty/freetype/docs/reference/ft2-system_interface.html b/src/3rdparty/freetype/docs/reference/ft2-system_interface.html index a726795..809e2a7 100644 --- a/src/3rdparty/freetype/docs/reference/ft2-system_interface.html +++ b/src/3rdparty/freetype/docs/reference/ft2-system_interface.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.3.6 API Reference</title> +<title>FreeType-2.3.9 API Reference</title> <style type="text/css"> body { font-family: Verdana, Geneva, Arial, Helvetica, serif; color: #000000; @@ -31,7 +31,11 @@ </style> </head> <body> -<center><h1>FreeType-2.3.6 API Reference</h1></center> + +<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td> +<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> +<center><h1>FreeType-2.3.9 API Reference</h1></center> <center><h1> System Interface @@ -50,14 +54,6 @@ System Interface <table align=center width="75%"><tr><td> <h4><a name="FT_Memory">FT_Memory</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_SYSTEM_H (freetype/ftsystem.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_MemoryRec_* <b>FT_Memory</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>A handle to a given memory manager object, defined with an <a href="ft2-system_interface.html#FT_MemoryRec">FT_MemoryRec</a> structure.</p> </td></tr></table><br> </td></tr></table> @@ -93,7 +89,7 @@ Defined in FT_SYSTEM_H (freetype/ftsystem.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>Address of new memory block. 0 in case of failure.</p> +<p>Address of new memory block. 0 in case of failure.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -168,7 +164,7 @@ Defined in FT_SYSTEM_H (freetype/ftsystem.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>New block address. 0 in case of memory shortage.</p> +<p>New block address. 0 in case of memory shortage.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>In case of error, the old block must still be available.</p> @@ -196,7 +192,7 @@ Defined in FT_SYSTEM_H (freetype/ftsystem.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>A structure used to describe a given memory manager to FreeType 2.</p> +<p>A structure used to describe a given memory manager to FreeType 2.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>fields</b></em></td></tr><tr><td> <p></p> @@ -224,14 +220,6 @@ Defined in FT_SYSTEM_H (freetype/ftsystem.h). <table align=center width="75%"><tr><td> <h4><a name="FT_Stream">FT_Stream</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_SYSTEM_H (freetype/ftsystem.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_StreamRec_* <b>FT_Stream</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>A handle to an input stream.</p> </td></tr></table><br> </td></tr></table> @@ -302,7 +290,7 @@ Defined in FT_SYSTEM_H (freetype/ftsystem.h). <p>The number of bytes effectively read by the stream.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> -<p>This function might be called to perform a seek or skip operation with a ‘count’ of 0.</p> +<p>This function might be called to perform a seek or skip operation with a ‘count’ of 0.</p> </td></tr></table> </td></tr></table> <hr width="75%"> diff --git a/src/3rdparty/freetype/docs/reference/ft2-toc.html b/src/3rdparty/freetype/docs/reference/ft2-toc.html index e3df83c..cb51bdb 100644 --- a/src/3rdparty/freetype/docs/reference/ft2-toc.html +++ b/src/3rdparty/freetype/docs/reference/ft2-toc.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.3.6 API Reference</title> +<title>FreeType-2.3.9 API Reference</title> <style type="text/css"> body { font-family: Verdana, Geneva, Arial, Helvetica, serif; color: #000000; @@ -31,7 +31,10 @@ </style> </head> <body> -<center><h1>FreeType-2.3.6 API Reference</h1></center> + +<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td></tr></table> +<center><h1>FreeType-2.3.9 API Reference</h1></center> <center><h1>Table of Contents</h1></center> <br><table align=center width="75%"><tr><td><h2>General Remarks</h2><ul class="empty"><li> @@ -54,11 +57,11 @@ </td></tr> <tr valign=top><td class="left"> <a href="ft2-base_interface.html">Base Interface</a></td><td> -<p>The FreeType 2 base font interface.</p> +<p>The FreeType 2 base font interface.</p> </td></tr> <tr valign=top><td class="left"> <a href="ft2-glyph_variants.html">Glyph Variants</a></td><td> -<p>The FreeType 2 interface to Unicode Ideographic Variation Sequences (IVS), using the SFNT cmap format 14.</p> +<p>The FreeType 2 interface to Unicode Ideographic Variation Sequences (IVS), using the SFNT cmap format 14.</p> </td></tr> <tr valign=top><td class="left"> <a href="ft2-glyph_management.html">Glyph Management</a></td><td> @@ -90,15 +93,15 @@ </td></tr> <tr valign=top><td class="left"> <a href="ft2-type1_tables.html">Type 1 Tables</a></td><td> -<p>Type 1 (PostScript) specific font tables.</p> +<p>Type 1 (PostScript) specific font tables.</p> </td></tr> <tr valign=top><td class="left"> <a href="ft2-sfnt_names.html">SFNT Names</a></td><td> <p>Access the names embedded in TrueType and OpenType files.</p> </td></tr> <tr valign=top><td class="left"> -<a href="ft2-bdf_fonts.html">BDF Files</a></td><td> -<p>BDF specific API.</p> +<a href="ft2-bdf_fonts.html">BDF and PCF Files</a></td><td> +<p>BDF and PCF specific API.</p> </td></tr> <tr valign=top><td class="left"> <a href="ft2-cid_fonts.html">CID Fonts</a></td><td> @@ -118,7 +121,7 @@ </td></tr> <tr valign=top><td class="left"> <a href="ft2-gasp_table.html">Gasp Table</a></td><td> -<p>Retrieving TrueType ‘gasp’ table entries</p> +<p>Retrieving TrueType ‘gasp’ table entries.</p> </td></tr> </table> </li></ul></td></tr></table> @@ -126,7 +129,7 @@ <table cellpadding=5> <tr valign=top><td class="left"> <a href="ft2-cache_subsystem.html">Cache Sub-System</a></td><td> -<p>How to cache face, size, and glyph data with FreeType 2.</p> +<p>How to cache face, size, and glyph data with FreeType 2.</p> </td></tr> </table> </li></ul></td></tr></table> @@ -145,6 +148,10 @@ <p>Functions to create, transform, and render vectorial glyph images.</p> </td></tr> <tr valign=top><td class="left"> +<a href="ft2-quick_advance.html">Quick retrieval of advance values</a></td><td> +<p>Retrieve horizontal and vertical advance values without processing glyph outlines, if possible.</p> +</td></tr> +<tr valign=top><td class="left"> <a href="ft2-bitmap_handling.html">Bitmap Handling</a></td><td> <p>Handling FT_Bitmap objects.</p> </td></tr> @@ -199,5 +206,10 @@ </table> </li></ul></td></tr></table> <br><table align=center width="75%"><tr><td><h2><a href="ft2-index.html">Global Index</a></h2><ul class="empty"><li></li></ul></td></tr></table> -<center><font size=-2>generated on Tue Jun 10 08:02:21 2008</font></center></body> +<hr> +<table><tr><td><font size=-2>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td> +</tr></table> + +<center><font size=-2>generated on Thu Mar 12 10:57:36 2009</font></center></body> </html> diff --git a/src/3rdparty/freetype/docs/reference/ft2-truetype_engine.html b/src/3rdparty/freetype/docs/reference/ft2-truetype_engine.html index 4f1292a..007e833 100644 --- a/src/3rdparty/freetype/docs/reference/ft2-truetype_engine.html +++ b/src/3rdparty/freetype/docs/reference/ft2-truetype_engine.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.3.6 API Reference</title> +<title>FreeType-2.3.9 API Reference</title> <style type="text/css"> body { font-family: Verdana, Geneva, Arial, Helvetica, serif; color: #000000; @@ -31,7 +31,11 @@ </style> </head> <body> -<center><h1>FreeType-2.3.6 API Reference</h1></center> + +<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td> +<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> +<center><h1>FreeType-2.3.9 API Reference</h1></center> <center><h1> The TrueType Engine @@ -102,7 +106,7 @@ Defined in FT_MODULE_H (freetype/ftmodapi.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Return a <a href="ft2-truetype_engine.html#FT_TrueTypeEngineType">FT_TrueTypeEngineType</a> value to indicate which level of the TrueType virtual machine a given library instance supports.</p> +<p>Return an <a href="ft2-truetype_engine.html#FT_TrueTypeEngineType">FT_TrueTypeEngineType</a> value to indicate which level of the TrueType virtual machine a given library instance supports.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> <p></p> diff --git a/src/3rdparty/freetype/docs/reference/ft2-truetype_tables.html b/src/3rdparty/freetype/docs/reference/ft2-truetype_tables.html index 75c0293..6d83a1a 100644 --- a/src/3rdparty/freetype/docs/reference/ft2-truetype_tables.html +++ b/src/3rdparty/freetype/docs/reference/ft2-truetype_tables.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.3.6 API Reference</title> +<title>FreeType-2.3.9 API Reference</title> <style type="text/css"> body { font-family: Verdana, Geneva, Arial, Helvetica, serif; color: #000000; @@ -31,7 +31,11 @@ </style> </head> <body> -<center><h1>FreeType-2.3.6 API Reference</h1></center> + +<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td> +<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> +<center><h1>FreeType-2.3.9 API Reference</h1></center> <center><h1> TrueType Tables @@ -432,7 +436,7 @@ Defined in FT_TRUETYPE_IDS_H (freetype/ttnameid.h). <p>Adobe custom encoding.</p> </td></tr> <tr valign=top><td><b>TT_ADOBE_ID_LATIN_1</b></td><td> -<p>Adobe Latin 1 encoding.</p> +<p>Adobe Latin 1 encoding.</p> </td></tr> </table> </td></tr></table> @@ -566,10 +570,10 @@ Defined in FT_TRUETYPE_TABLES_H (freetype/tttables.h). <p>The run coefficient of the cursor's slope.</p> </td></tr> <tr valign=top><td><b>Reserved</b></td><td> -<p>8 reserved bytes.</p> +<p>8 reserved bytes.</p> </td></tr> <tr valign=top><td><b>metric_Data_Format</b></td><td> -<p>Always 0.</p> +<p>Always 0.</p> </td></tr> <tr valign=top><td><b>number_Of_HMetrics</b></td><td> <p>Number of HMetrics entries in the ‘hmtx’ table -- this value can be smaller than the total number of glyphs in the font.</p> @@ -675,10 +679,10 @@ Defined in FT_TRUETYPE_TABLES_H (freetype/tttables.h). <p>The cursor's offset for slanted fonts. This value is ‘reserved’ in vmtx version 1.0.</p> </td></tr> <tr valign=top><td><b>Reserved</b></td><td> -<p>8 reserved bytes.</p> +<p>8 reserved bytes.</p> </td></tr> <tr valign=top><td><b>metric_Data_Format</b></td><td> -<p>Always 0.</p> +<p>Always 0.</p> </td></tr> <tr valign=top><td><b>number_Of_HMetrics</b></td><td> <p>Number of VMetrics entries in the ‘vmtx’ table -- this value can be smaller than the total number of glyphs in the font.</p> @@ -797,7 +801,7 @@ Defined in FT_TRUETYPE_TABLES_H (freetype/tttables.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>A structure used to model a TrueType Postscript table. All fields comply to the TrueType specification. This structure does not reference the Postscript glyph names, which can be nevertheless accessed with the ‘ttpost’ module.</p> +<p>A structure used to model a TrueType PostScript table. All fields comply to the TrueType specification. This structure does not reference the PostScript glyph names, which can be nevertheless accessed with the ‘ttpost’ module.</p> </td></tr></table><br> </td></tr></table> <hr width="75%"> @@ -976,7 +980,7 @@ Defined in FT_TRUETYPE_TABLES_H (freetype/tttables.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Returns a pointer to a given SFNT table within a face.</p> +<p>Return a pointer to a given SFNT table within a face.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> <p></p> @@ -990,7 +994,7 @@ Defined in FT_TRUETYPE_TABLES_H (freetype/tttables.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>A type-less pointer to the table. This will be 0 in case of error, or if the corresponding table was not found <b>OR</b> loaded from the file.</p> +<p>A type-less pointer to the table. This will be 0 in case of error, or if the corresponding table was not found <b>OR</b> loaded from the file.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>The table is owned by the face object and disappears with it.</p> @@ -1018,7 +1022,7 @@ Defined in FT_TRUETYPE_TABLES_H (freetype/tttables.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Loads any font table into client memory.</p> +<p>Load any font table into client memory.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> <p></p> @@ -1027,7 +1031,7 @@ Defined in FT_TRUETYPE_TABLES_H (freetype/tttables.h). <p>A handle to the source face.</p> </td></tr> <tr valign=top><td><b>tag</b></td><td> -<p>The four-byte tag of the table to load. Use the value 0 if you want to access the whole font file. Otherwise, you can use one of the definitions found in the <a href="ft2-header_file_macros.html#FT_TRUETYPE_TAGS_H">FT_TRUETYPE_TAGS_H</a> file, or forge a new one with <a href="ft2-basic_types.html#FT_MAKE_TAG">FT_MAKE_TAG</a>.</p> +<p>The four-byte tag of the table to load. Use the value 0 if you want to access the whole font file. Otherwise, you can use one of the definitions found in the <a href="ft2-header_file_macros.html#FT_TRUETYPE_TAGS_H">FT_TRUETYPE_TAGS_H</a> file, or forge a new one with <a href="ft2-basic_types.html#FT_MAKE_TAG">FT_MAKE_TAG</a>.</p> </td></tr> <tr valign=top><td><b>offset</b></td><td> <p>The starting offset in the table (or file if tag == 0).</p> @@ -1047,16 +1051,16 @@ Defined in FT_TRUETYPE_TABLES_H (freetype/tttables.h). <table cellpadding=3 border=0> <tr valign=top><td><b>length</b></td><td> <p>If the ‘length’ parameter is NULL, then try to load the whole table. Return an error code if it fails.</p> -<p>Else, if ‘*length’ is 0, exit immediately while returning the table's (or file) full size in it.</p> +<p>Else, if ‘*length’ is 0, exit immediately while returning the table's (or file) full size in it.</p> <p>Else the number of bytes to read from the table or file, from the starting offset.</p> </td></tr> </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> -<p>If you need to determine the table's length you should first call this function with ‘*length’ set to 0, as in the following example:</p> +<p>If you need to determine the table's length you should first call this function with ‘*length’ set to 0, as in the following example:</p> <pre class="colored"> FT_ULong length = 0; @@ -1092,7 +1096,7 @@ Defined in FT_TRUETYPE_TABLES_H (freetype/tttables.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Returns information on an SFNT table.</p> +<p>Return information on an SFNT table.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> <p></p> @@ -1117,10 +1121,10 @@ Defined in FT_TRUETYPE_TABLES_H (freetype/tttables.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> -<p>SFNT tables with length zero are treated as missing by Windows.</p> +<p>SFNT tables with length zero are treated as missing.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -1151,7 +1155,7 @@ Defined in FT_TRUETYPE_TABLES_H (freetype/tttables.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>The language ID of ‘charmap’. If ‘charmap’ doesn't belong to a TrueType/sfnt face, just return 0 as the default value.</p> +<p>The language ID of ‘charmap’. If ‘charmap’ doesn't belong to a TrueType/sfnt face, just return 0 as the default value.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -1193,14 +1197,6 @@ Defined in FT_TRUETYPE_TABLES_H (freetype/tttables.h). <table align=center width="75%"><tr><td> <h4><a name="FT_PARAM_TAG_UNPATENTED_HINTING">FT_PARAM_TAG_UNPATENTED_HINTING</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_UNPATENTED_HINTING_H (freetype/ttunpat.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - -#define <b>FT_PARAM_TAG_UNPATENTED_HINTING</b> <a href="ft2-basic_types.html#FT_MAKE_TAG">FT_MAKE_TAG</a>( 'u', 'n', 'p', 'a' ) - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>A constant used as the tag of an <a href="ft2-base_interface.html#FT_Parameter">FT_Parameter</a> structure to indicate that unpatented methods only should be used by the TrueType bytecode interpreter for a typeface opened by <a href="ft2-base_interface.html#FT_Open_Face">FT_Open_Face</a>.</p> </td></tr></table><br> </td></tr></table> diff --git a/src/3rdparty/freetype/docs/reference/ft2-type1_tables.html b/src/3rdparty/freetype/docs/reference/ft2-type1_tables.html index 9cc7e53..8eaa3f9 100644 --- a/src/3rdparty/freetype/docs/reference/ft2-type1_tables.html +++ b/src/3rdparty/freetype/docs/reference/ft2-type1_tables.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.3.6 API Reference</title> +<title>FreeType-2.3.9 API Reference</title> <style type="text/css"> body { font-family: Verdana, Geneva, Arial, Helvetica, serif; color: #000000; @@ -31,7 +31,11 @@ </style> </head> <body> -<center><h1>FreeType-2.3.6 API Reference</h1></center> + +<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td> +<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> +<center><h1>FreeType-2.3.9 API Reference</h1></center> <center><h1> Type 1 Tables @@ -71,7 +75,7 @@ Defined in FT_TYPE1_TABLES_H (freetype/t1tables.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>A structure used to model a Type1/Type2 FontInfo dictionary. Note that for Multiple Master fonts, each instance has its own FontInfo dictionary.</p> +<p>A structure used to model a Type 1 or Type 2 FontInfo dictionary. Note that for Multiple Master fonts, each instance has its own FontInfo dictionary.</p> </td></tr></table><br> </td></tr></table> <hr width="75%"> @@ -82,14 +86,6 @@ Defined in FT_TYPE1_TABLES_H (freetype/t1tables.h). <table align=center width="75%"><tr><td> <h4><a name="PS_FontInfo">PS_FontInfo</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_TYPE1_TABLES_H (freetype/t1tables.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">struct</span> PS_FontInfoRec_* <b>PS_FontInfo</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>A handle to a <a href="ft2-type1_tables.html#PS_FontInfoRec">PS_FontInfoRec</a> structure.</p> </td></tr></table><br> </td></tr></table> @@ -101,14 +97,6 @@ Defined in FT_TYPE1_TABLES_H (freetype/t1tables.h). <table align=center width="75%"><tr><td> <h4><a name="T1_FontInfo">T1_FontInfo</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_TYPE1_TABLES_H (freetype/t1tables.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <a href="ft2-type1_tables.html#PS_FontInfoRec">PS_FontInfoRec</a> <b>T1_FontInfo</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>This type is equivalent to <a href="ft2-type1_tables.html#PS_FontInfoRec">PS_FontInfoRec</a>. It is deprecated but kept to maintain source compatibility between various versions of FreeType.</p> </td></tr></table><br> </td></tr></table> @@ -166,7 +154,7 @@ Defined in FT_TYPE1_TABLES_H (freetype/t1tables.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>A structure used to model a Type1/Type2 private dictionary. Note that for Multiple Master fonts, each instance has its own Private dictionary.</p> +<p>A structure used to model a Type 1 or Type 2 private dictionary. Note that for Multiple Master fonts, each instance has its own Private dictionary.</p> </td></tr></table><br> </td></tr></table> <hr width="75%"> @@ -177,14 +165,6 @@ Defined in FT_TYPE1_TABLES_H (freetype/t1tables.h). <table align=center width="75%"><tr><td> <h4><a name="PS_Private">PS_Private</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_TYPE1_TABLES_H (freetype/t1tables.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">struct</span> PS_PrivateRec_* <b>PS_Private</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>A handle to a <a href="ft2-type1_tables.html#PS_PrivateRec">PS_PrivateRec</a> structure.</p> </td></tr></table><br> </td></tr></table> @@ -196,14 +176,6 @@ Defined in FT_TYPE1_TABLES_H (freetype/t1tables.h). <table align=center width="75%"><tr><td> <h4><a name="T1_Private">T1_Private</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_TYPE1_TABLES_H (freetype/t1tables.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <a href="ft2-type1_tables.html#PS_PrivateRec">PS_PrivateRec</a> <b>T1_Private</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>This type is equivalent to <a href="ft2-type1_tables.html#PS_PrivateRec">PS_PrivateRec</a>. It is deprecated but kept to maintain source compatibility between various versions of FreeType.</p> </td></tr></table><br> </td></tr></table> @@ -294,14 +266,6 @@ Defined in FT_TYPE1_TABLES_H (freetype/t1tables.h). <table align=center width="75%"><tr><td> <h4><a name="CID_FaceDict">CID_FaceDict</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_TYPE1_TABLES_H (freetype/t1tables.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">struct</span> CID_FaceDictRec_* <b>CID_FaceDict</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>A handle to a <a href="ft2-type1_tables.html#CID_FaceDictRec">CID_FaceDictRec</a> structure.</p> </td></tr></table><br> </td></tr></table> @@ -359,14 +323,6 @@ Defined in FT_TYPE1_TABLES_H (freetype/t1tables.h). <table align=center width="75%"><tr><td> <h4><a name="CID_FaceInfo">CID_FaceInfo</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_TYPE1_TABLES_H (freetype/t1tables.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">struct</span> CID_FaceInfoRec_* <b>CID_FaceInfo</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>A handle to a <a href="ft2-type1_tables.html#CID_FaceInfoRec">CID_FaceInfoRec</a> structure.</p> </td></tr></table><br> </td></tr></table> @@ -378,14 +334,6 @@ Defined in FT_TYPE1_TABLES_H (freetype/t1tables.h). <table align=center width="75%"><tr><td> <h4><a name="CID_Info">CID_Info</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_TYPE1_TABLES_H (freetype/t1tables.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <a href="ft2-type1_tables.html#CID_FaceInfoRec">CID_FaceInfoRec</a> <b>CID_Info</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>This type is equivalent to <a href="ft2-type1_tables.html#CID_FaceInfoRec">CID_FaceInfoRec</a>. It is deprecated but kept to maintain source compatibility between various versions of FreeType.</p> </td></tr></table><br> </td></tr></table> @@ -406,7 +354,7 @@ Defined in FT_TYPE1_TABLES_H (freetype/t1tables.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Return true if a given face provides reliable Postscript glyph names. This is similar to using the <a href="ft2-base_interface.html#FT_HAS_GLYPH_NAMES">FT_HAS_GLYPH_NAMES</a> macro, except that certain fonts (mostly TrueType) contain incorrect glyph name tables.</p> +<p>Return true if a given face provides reliable PostScript glyph names. This is similar to using the <a href="ft2-base_interface.html#FT_HAS_GLYPH_NAMES">FT_HAS_GLYPH_NAMES</a> macro, except that certain fonts (mostly TrueType) contain incorrect glyph name tables.</p> <p>When this function returns true, the caller is sure that the glyph names returned by <a href="ft2-base_interface.html#FT_Get_Glyph_Name">FT_Get_Glyph_Name</a> are reliable.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> @@ -439,13 +387,13 @@ Defined in FT_TYPE1_TABLES_H (freetype/t1tables.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Retrieve the <a href="ft2-type1_tables.html#PS_FontInfoRec">PS_FontInfoRec</a> structure corresponding to a given Postscript font.</p> +<p>Retrieve the <a href="ft2-type1_tables.html#PS_FontInfoRec">PS_FontInfoRec</a> structure corresponding to a given PostScript font.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> <p></p> <table cellpadding=3 border=0> <tr valign=top><td><b>face</b></td><td> -<p>Postscript face handle.</p> +<p>PostScript face handle.</p> </td></tr> </table> </td></tr></table> @@ -458,11 +406,11 @@ Defined in FT_TYPE1_TABLES_H (freetype/t1tables.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>The string pointers within the font info structure are owned by the face and don't need to be freed by the caller.</p> -<p>If the font's format is not Postscript-based, this function will return the ‘FT_Err_Invalid_Argument’ error code.</p> +<p>If the font's format is not PostScript-based, this function will return the ‘FT_Err_Invalid_Argument’ error code.</p> </td></tr></table> </td></tr></table> <hr width="75%"> @@ -483,13 +431,13 @@ Defined in FT_TYPE1_TABLES_H (freetype/t1tables.h). </pre></table><br> <table align=center width="87%"><tr><td> -<p>Retrieve the <a href="ft2-type1_tables.html#PS_PrivateRec">PS_PrivateRec</a> structure corresponding to a given Postscript font.</p> +<p>Retrieve the <a href="ft2-type1_tables.html#PS_PrivateRec">PS_PrivateRec</a> structure corresponding to a given PostScript font.</p> </td></tr></table><br> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td> <p></p> <table cellpadding=3 border=0> <tr valign=top><td><b>face</b></td><td> -<p>Postscript face handle.</p> +<p>PostScript face handle.</p> </td></tr> </table> </td></tr></table> @@ -502,11 +450,11 @@ Defined in FT_TYPE1_TABLES_H (freetype/t1tables.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> -<p>The string pointers within the font info structure are owned by the face and don't need to be freed by the caller.</p> -<p>If the font's format is not Postscript-based, this function will return the ‘FT_Err_Invalid_Argument’ error code.</p> +<p>The string pointers within the <a href="ft2-type1_tables.html#PS_PrivateRec">PS_PrivateRec</a> structure are owned by the face and don't need to be freed by the caller.</p> +<p>If the font's format is not PostScript-based, this function returns the ‘FT_Err_Invalid_Argument’ error code.</p> </td></tr></table> </td></tr></table> <hr width="75%"> diff --git a/src/3rdparty/freetype/docs/reference/ft2-user_allocation.html b/src/3rdparty/freetype/docs/reference/ft2-user_allocation.html index 0799ce1..d3b48b1 100644 --- a/src/3rdparty/freetype/docs/reference/ft2-user_allocation.html +++ b/src/3rdparty/freetype/docs/reference/ft2-user_allocation.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.3.6 API Reference</title> +<title>FreeType-2.3.9 API Reference</title> <style type="text/css"> body { font-family: Verdana, Geneva, Arial, Helvetica, serif; color: #000000; @@ -31,13 +31,17 @@ </style> </head> <body> -<center><h1>FreeType-2.3.6 API Reference</h1></center> + +<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td> +<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> +<center><h1>FreeType-2.3.9 API Reference</h1></center> <center><h1> User allocation </h1></center> <table align=center width="87%"><tr><td> -<p>FreeType assumes that structures allocated by the user and passed as arguments are zeroed out except for the actual data. With other words, it is recommended to use ‘calloc’ (or variants of it) instead of ‘malloc’ for allocation.</p> +<p>FreeType assumes that structures allocated by the user and passed as arguments are zeroed out except for the actual data. In other words, it is recommended to use ‘calloc’ (or variants of it) instead of ‘malloc’ for allocation.</p> </td></tr></table><br> </body> </html> diff --git a/src/3rdparty/freetype/docs/reference/ft2-version.html b/src/3rdparty/freetype/docs/reference/ft2-version.html index 307f089..2c7d9c1 100644 --- a/src/3rdparty/freetype/docs/reference/ft2-version.html +++ b/src/3rdparty/freetype/docs/reference/ft2-version.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.3.6 API Reference</title> +<title>FreeType-2.3.9 API Reference</title> <style type="text/css"> body { font-family: Verdana, Geneva, Arial, Helvetica, serif; color: #000000; @@ -31,7 +31,11 @@ </style> </head> <body> -<center><h1>FreeType-2.3.6 API Reference</h1></center> + +<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td> +<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> +<center><h1>FreeType-2.3.9 API Reference</h1></center> <center><h1> FreeType Version @@ -54,7 +58,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). #define <a href="ft2-version.html#FREETYPE_XXX">FREETYPE_MAJOR</a> 2 #define <a href="ft2-version.html#FREETYPE_XXX">FREETYPE_MINOR</a> 3 -#define <a href="ft2-version.html#FREETYPE_XXX">FREETYPE_PATCH</a> 6 +#define <a href="ft2-version.html#FREETYPE_XXX">FREETYPE_PATCH</a> 9 </pre></table><br> <table align=center width="87%"><tr><td> @@ -156,7 +160,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>1 if this is a TrueType font that uses one of the patented opcodes, 0 otherwise.</p> +<p>1 if this is a TrueType font that uses one of the patented opcodes, 0 otherwise.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>since</b></em></td></tr><tr><td> <p>2.3.5</p> @@ -194,7 +198,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>The old setting value. This will always be false if this is not a SFNT font, or if the unpatented hinter is not compiled in this instance of the library.</p> +<p>The old setting value. This will always be false if this is not an SFNT font, or if the unpatented hinter is not compiled in this instance of the library.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>since</b></em></td></tr><tr><td> <p>2.3.5</p> diff --git a/src/3rdparty/freetype/docs/reference/ft2-winfnt_fonts.html b/src/3rdparty/freetype/docs/reference/ft2-winfnt_fonts.html index dfaad85..7c850d7 100644 --- a/src/3rdparty/freetype/docs/reference/ft2-winfnt_fonts.html +++ b/src/3rdparty/freetype/docs/reference/ft2-winfnt_fonts.html @@ -3,7 +3,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>FreeType-2.3.6 API Reference</title> +<title>FreeType-2.3.9 API Reference</title> <style type="text/css"> body { font-family: Verdana, Geneva, Arial, Helvetica, serif; color: #000000; @@ -31,7 +31,11 @@ </style> </head> <body> -<center><h1>FreeType-2.3.6 API Reference</h1></center> + +<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td> +<td width="100%"></td> +<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table> +<center><h1>FreeType-2.3.9 API Reference</h1></center> <center><h1> Window FNT Files @@ -107,10 +111,10 @@ Defined in FT_WINFONTS_H (freetype/ftwinfnt.h). <p>A superset of simplified Chinese GB 2312-1980 (with different ordering and minor deviations).</p> </td></tr> <tr valign=top><td><b>FT_WinFNT_ID_CP949</b></td><td> -<p>A superset of Korean Hangul KS C 5601-1987 (with different ordering and minor deviations).</p> +<p>A superset of Korean Hangul KS C 5601-1987 (with different ordering and minor deviations).</p> </td></tr> <tr valign=top><td><b>FT_WinFNT_ID_CP950</b></td><td> -<p>A superset of traditional Chinese Big 5 ETen (with different ordering and minor deviations).</p> +<p>A superset of traditional Chinese Big 5 ETen (with different ordering and minor deviations).</p> </td></tr> <tr valign=top><td><b>FT_WinFNT_ID_CP1250</b></td><td> <p>A superset of East European ISO 8859-2 (with slightly different ordering).</p> @@ -211,14 +215,6 @@ Defined in FT_WINFONTS_H (freetype/ftwinfnt.h). <table align=center width="75%"><tr><td> <h4><a name="FT_WinFNT_Header">FT_WinFNT_Header</a></h4> <table align=center width="87%"><tr><td> -Defined in FT_WINFONTS_H (freetype/ftwinfnt.h). -</td></tr></table><br> -<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre> - - <span class="keyword">typedef</span> <span class="keyword">struct</span> FT_WinFNT_HeaderRec_* <b>FT_WinFNT_Header</b>; - -</pre></table><br> -<table align=center width="87%"><tr><td> <p>A handle to an <a href="ft2-winfnt_fonts.html#FT_WinFNT_HeaderRec">FT_WinFNT_HeaderRec</a> structure.</p> </td></tr></table><br> </td></tr></table> @@ -259,7 +255,7 @@ Defined in FT_WINFONTS_H (freetype/ftwinfnt.h). </table> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td> -<p>FreeType error code. 0 means success.</p> +<p>FreeType error code. 0 means success.</p> </td></tr></table> <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td> <p>This function only works with Windows FNT faces, returning an error otherwise.</p> diff --git a/src/3rdparty/freetype/docs/release b/src/3rdparty/freetype/docs/release index d68da88..e93f430 100644 --- a/src/3rdparty/freetype/docs/release +++ b/src/3rdparty/freetype/docs/release @@ -49,15 +49,16 @@ How to prepare a new release except the `reference' subdirectory. Do *not* use option `-l' from zip! - Run the following script (with updated `$VERSION' and - `$SAVANNAH_USER' variables) to sign and upload the bundles to both - Savannah and SourceForge. The signing code has been taken from the - `gnupload' script (part of the automake bundle). +. Run the following script (with updated `$VERSION', `$SAVANNAH_USER', + and $SOURCEFORGE_USER variables) to sign and upload the bundles to + both Savannah and SourceForge. The signing code has been taken from + the `gnupload' script (part of the automake bundle). #!/bin/sh - VERSION=2.3.1 + VERSION=2.3.7 SAVANNAH_USER=wl + SOURCEFORGE_USER=wlemb ##################################################################### @@ -114,9 +115,8 @@ How to prepare a new release scp $PACKAGE_LIST $SIGNATURE_LIST \ $SAVANNAH_USER@dl.sv.nongnu.org:/releases/freetype/ - for f in $PACKAGE_LIST $SIGNATURE_LIST; do - ncftpput upload.sf.net /incoming $f - done + rsync -avP -e ssh $PACKAGE_LIST $SIGNATURE_LIST \ + $SOURCEFORGE_USER@frs.sf.net:uploads/ # EOF diff --git a/src/3rdparty/freetype/include/freetype/config/ftconfig.h b/src/3rdparty/freetype/include/freetype/config/ftconfig.h index 09b2cf9..3c0b8b1 100644 --- a/src/3rdparty/freetype/include/freetype/config/ftconfig.h +++ b/src/3rdparty/freetype/include/freetype/config/ftconfig.h @@ -4,7 +4,7 @@ /* */ /* ANSI-specific configuration file (specification only). */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2007 by */ +/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2007, 2008 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -43,6 +43,7 @@ #include FT_CONFIG_OPTIONS_H #include FT_CONFIG_STANDARD_LIBRARY_H + FT_BEGIN_HEADER @@ -134,6 +135,14 @@ FT_BEGIN_HEADER #else #define FT_MACINTOSH 1 #endif + +#elif defined( __SC__ ) || defined( __MRC__ ) + /* Classic MacOS compilers */ +#include "ConditionalMacros.h" +#if TARGET_OS_MAC +#define FT_MACINTOSH 1 +#endif + #endif @@ -212,6 +221,7 @@ FT_BEGIN_HEADER #error "no 32bit type found -- please check your configuration files" #endif + /* look up an integer type that is at least 32 bits */ #if FT_SIZEOF_INT >= (32 / FT_CHAR_BIT) @@ -267,17 +277,12 @@ FT_BEGIN_HEADER #endif /* FT_SIZEOF_LONG == (64 / FT_CHAR_BIT) */ -#define FT_BEGIN_STMNT do { -#define FT_END_STMNT } while ( 0 ) -#define FT_DUMMY_STMNT FT_BEGIN_STMNT FT_END_STMNT - - /*************************************************************************/ /* */ /* A 64-bit data type will create compilation problems if you compile */ - /* in strict ANSI mode. To avoid them, we disable their use if */ - /* __STDC__ is defined. You can however ignore this rule by */ - /* defining the FT_CONFIG_OPTION_FORCE_INT64 configuration macro. */ + /* in strict ANSI mode. To avoid them, we disable its use if __STDC__ */ + /* is defined. You can however ignore this rule by defining the */ + /* FT_CONFIG_OPTION_FORCE_INT64 configuration macro. */ /* */ #if defined( FT_LONG64 ) && !defined( FT_CONFIG_OPTION_FORCE_INT64 ) @@ -292,6 +297,86 @@ FT_BEGIN_HEADER #endif /* FT_LONG64 && !FT_CONFIG_OPTION_FORCE_INT64 */ +#define FT_BEGIN_STMNT do { +#define FT_END_STMNT } while ( 0 ) +#define FT_DUMMY_STMNT FT_BEGIN_STMNT FT_END_STMNT + + +#ifndef FT_CONFIG_OPTION_NO_ASSEMBLER + /* Provide assembler fragments for performance-critical functions. */ + /* These must be defined `static __inline__' with GCC. */ + +#ifdef __GNUC__ + +#if defined( __arm__ ) && !defined( __thumb__ ) +#define FT_MULFIX_ASSEMBLER FT_MulFix_arm + + /* documentation is in freetype.h */ + + static __inline__ FT_Int32 + FT_MulFix_arm( FT_Int32 a, + FT_Int32 b ) + { + register FT_Int32 t, t2; + + + asm __volatile__ ( + "smull %1, %2, %4, %3\n\t" /* (lo=%1,hi=%2) = a*b */ + "mov %0, %2, asr #31\n\t" /* %0 = (hi >> 31) */ + "add %0, %0, #0x8000\n\t" /* %0 += 0x8000 */ + "adds %1, %1, %0\n\t" /* %1 += %0 */ + "adc %2, %2, #0\n\t" /* %2 += carry */ + "mov %0, %1, lsr #16\n\t" /* %0 = %1 >> 16 */ + "orr %0, %2, lsl #16\n\t" /* %0 |= %2 << 16 */ + : "=r"(a), "=&r"(t2), "=&r"(t) + : "r"(a), "r"(b) ); + return a; + } + +#endif /* __arm__ && !__thumb__ */ + +#if defined( i386 ) +#define FT_MULFIX_ASSEMBLER FT_MulFix_i386 + + /* documentation is in freetype.h */ + + static __inline__ FT_Int32 + FT_MulFix_i386( FT_Int32 a, + FT_Int32 b ) + { + register FT_Int32 result; + + + __asm__ __volatile__ ( + "imul %%edx\n" + "movl %%edx, %%ecx\n" + "sarl $31, %%ecx\n" + "addl $0x8000, %%ecx\n" + "addl %%ecx, %%eax\n" + "adcl $0, %%edx\n" + "shrl $16, %%eax\n" + "shll $16, %%edx\n" + "addl %%edx, %%eax\n" + : "=a"(result), "=d"(b) + : "a"(a), "d"(b) + : "%ecx", "cc" ); + return result; + } + +#endif /* i386 */ + +#endif /* __GNUC__ */ + +#endif /* !FT_CONFIG_OPTION_NO_ASSEMBLER */ + + +#ifdef FT_CONFIG_OPTION_INLINE_MULFIX +#ifdef FT_MULFIX_ASSEMBLER +#define FT_MULFIX_INLINED FT_MULFIX_ASSEMBLER +#endif +#endif + + #ifdef FT_MAKE_OPTION_SINGLE_OBJECT #define FT_LOCAL( x ) static x diff --git a/src/3rdparty/freetype/include/freetype/config/ftheader.h b/src/3rdparty/freetype/include/freetype/config/ftheader.h index a130d38..b63945d 100644 --- a/src/3rdparty/freetype/include/freetype/config/ftheader.h +++ b/src/3rdparty/freetype/include/freetype/config/ftheader.h @@ -74,7 +74,7 @@ /* */ /* <Description> */ /* The following macros are defined to the name of specific */ - /* FreeType 2 header files. They can be used directly in #include */ + /* FreeType~2 header files. They can be used directly in #include */ /* statements as in: */ /* */ /* { */ @@ -85,11 +85,11 @@ /* */ /* There are several reasons why we are now using macros to name */ /* public header files. The first one is that such macros are not */ - /* limited to the infamous 8.3 naming rule required by DOS (and */ + /* limited to the infamous 8.3~naming rule required by DOS (and */ /* `FT_MULTIPLE_MASTERS_H' is a lot more meaningful than `ftmm.h'). */ /* */ /* The second reason is that it allows for more flexibility in the */ - /* way FreeType 2 is installed on a given system. */ + /* way FreeType~2 is installed on a given system. */ /* */ /*************************************************************************/ @@ -103,7 +103,7 @@ * * @description: * A macro used in #include statements to name the file containing - * FreeType 2 configuration data. + * FreeType~2 configuration data. * */ #ifndef FT_CONFIG_CONFIG_H @@ -118,7 +118,7 @@ * * @description: * A macro used in #include statements to name the file containing - * FreeType 2 interface to the standard C library functions. + * FreeType~2 interface to the standard C library functions. * */ #ifndef FT_CONFIG_STANDARD_LIBRARY_H @@ -133,7 +133,7 @@ * * @description: * A macro used in #include statements to name the file containing - * FreeType 2 project-specific configuration options. + * FreeType~2 project-specific configuration options. * */ #ifndef FT_CONFIG_OPTIONS_H @@ -148,7 +148,7 @@ * * @description: * A macro used in #include statements to name the file containing the - * list of FreeType 2 modules that are statically linked to new library + * list of FreeType~2 modules that are statically linked to new library * instances in @FT_Init_FreeType. * */ @@ -167,7 +167,7 @@ * * @description: * A macro used in #include statements to name the file containing the - * base FreeType 2 API. + * base FreeType~2 API. * */ #define FT_FREETYPE_H <freetype/freetype.h> @@ -180,7 +180,7 @@ * * @description: * A macro used in #include statements to name the file containing the - * list of FreeType 2 error codes (and messages). + * list of FreeType~2 error codes (and messages). * * It is included by @FT_FREETYPE_H. * @@ -195,7 +195,7 @@ * * @description: * A macro used in #include statements to name the file containing the - * list of FreeType 2 module error offsets (and messages). + * list of FreeType~2 module error offsets (and messages). * */ #define FT_MODULE_ERRORS_H <freetype/ftmoderr.h> @@ -208,7 +208,7 @@ * * @description: * A macro used in #include statements to name the file containing the - * FreeType 2 interface to low-level operations (i.e., memory management + * FreeType~2 interface to low-level operations (i.e., memory management * and stream i/o). * * It is included by @FT_FREETYPE_H. @@ -240,7 +240,7 @@ * * @description: * A macro used in #include statements to name the file containing the - * basic data types defined by FreeType 2. + * basic data types defined by FreeType~2. * * It is included by @FT_FREETYPE_H. * @@ -255,7 +255,7 @@ * * @description: * A macro used in #include statements to name the file containing the - * list management API of FreeType 2. + * list management API of FreeType~2. * * (Most applications will never need to include this file.) * @@ -270,7 +270,7 @@ * * @description: * A macro used in #include statements to name the file containing the - * scalable outline management API of FreeType 2. + * scalable outline management API of FreeType~2. * */ #define FT_OUTLINE_H <freetype/ftoutln.h> @@ -296,7 +296,7 @@ * * @description: * A macro used in #include statements to name the file containing the - * module management API of FreeType 2. + * module management API of FreeType~2. * */ #define FT_MODULE_H <freetype/ftmodapi.h> @@ -309,7 +309,7 @@ * * @description: * A macro used in #include statements to name the file containing the - * renderer module management API of FreeType 2. + * renderer module management API of FreeType~2. * */ #define FT_RENDER_H <freetype/ftrender.h> @@ -322,7 +322,7 @@ * * @description: * A macro used in #include statements to name the file containing the - * types and API specific to the Type 1 format. + * types and API specific to the Type~1 format. * */ #define FT_TYPE1_TABLES_H <freetype/t1tables.h> @@ -483,7 +483,7 @@ * * @description: * A macro used in #include statements to name the file containing the - * API of the optional FreeType 2 cache sub-system. + * API of the optional FreeType~2 cache sub-system. * */ #define FT_CACHE_H <freetype/ftcache.h> @@ -496,7 +496,7 @@ * * @description: * A macro used in #include statements to name the file containing the - * `glyph image' API of the FreeType 2 cache sub-system. + * `glyph image' API of the FreeType~2 cache sub-system. * * It is used to define a cache for @FT_Glyph elements. You can also * use the API defined in @FT_CACHE_SMALL_BITMAPS_H if you only need to @@ -516,7 +516,7 @@ * * @description: * A macro used in #include statements to name the file containing the - * `small bitmaps' API of the FreeType 2 cache sub-system. + * `small bitmaps' API of the FreeType~2 cache sub-system. * * It is used to define a cache for small glyph bitmaps in a relatively * memory-efficient way. You can also use the API defined in @@ -537,7 +537,7 @@ * * @description: * A macro used in #include statements to name the file containing the - * `charmap' API of the FreeType 2 cache sub-system. + * `charmap' API of the FreeType~2 cache sub-system. * * This macro is deprecated. Simply include @FT_CACHE_H to have all * charmap-based cache declarations. @@ -553,7 +553,7 @@ * * @description: * A macro used in #include statements to name the file containing the - * Macintosh-specific FreeType 2 API. The latter is used to access + * Macintosh-specific FreeType~2 API. The latter is used to access * fonts embedded in resource forks. * * This header file must be explicitly included by client applications @@ -570,7 +570,7 @@ * * @description: * A macro used in #include statements to name the file containing the - * optional multiple-masters management API of FreeType 2. + * optional multiple-masters management API of FreeType~2. * */ #define FT_MULTIPLE_MASTERS_H <freetype/ftmm.h> @@ -583,7 +583,7 @@ * * @description: * A macro used in #include statements to name the file containing the - * optional FreeType 2 API which accesses embedded `name' strings in + * optional FreeType~2 API which accesses embedded `name' strings in * SFNT-based font formats (i.e., TrueType and OpenType). * */ @@ -597,7 +597,7 @@ * * @description: * A macro used in #include statements to name the file containing the - * optional FreeType 2 API which validates OpenType tables (BASE, GDEF, + * optional FreeType~2 API which validates OpenType tables (BASE, GDEF, * GPOS, GSUB, JSTF). * */ @@ -611,7 +611,7 @@ * * @description: * A macro used in #include statements to name the file containing the - * optional FreeType 2 API which validates TrueTypeGX/AAT tables (feat, + * optional FreeType~2 API which validates TrueTypeGX/AAT tables (feat, * mort, morx, bsln, just, kern, opbd, trak, prop). * */ @@ -625,7 +625,7 @@ * * @description: * A macro used in #include statements to name the file containing the - * FreeType 2 API which accesses PFR-specific data. + * FreeType~2 API which accesses PFR-specific data. * */ #define FT_PFR_H <freetype/ftpfr.h> @@ -638,7 +638,7 @@ * * @description: * A macro used in #include statements to name the file containing the - * FreeType 2 API which provides functions to stroke outline paths. + * FreeType~2 API which provides functions to stroke outline paths. */ #define FT_STROKER_H <freetype/ftstroke.h> @@ -650,7 +650,7 @@ * * @description: * A macro used in #include statements to name the file containing the - * FreeType 2 API which performs artificial obliquing and emboldening. + * FreeType~2 API which performs artificial obliquing and emboldening. */ #define FT_SYNTHESIS_H <freetype/ftsynth.h> @@ -662,7 +662,7 @@ * * @description: * A macro used in #include statements to name the file containing the - * FreeType 2 API which provides functions specific to the XFree86 and + * FreeType~2 API which provides functions specific to the XFree86 and * X.Org X11 servers. */ #define FT_XFREE86_H <freetype/ftxf86.h> @@ -675,7 +675,7 @@ * * @description: * A macro used in #include statements to name the file containing the - * FreeType 2 API which performs trigonometric computations (e.g., + * FreeType~2 API which performs trigonometric computations (e.g., * cosines and arc tangents). */ #define FT_TRIGONOMETRY_H <freetype/fttrigon.h> @@ -688,7 +688,7 @@ * * @description: * A macro used in #include statements to name the file containing the - * FreeType 2 API which performs color filtering for subpixel rendering. + * FreeType~2 API which performs color filtering for subpixel rendering. */ #define FT_LCD_FILTER_H <freetype/ftlcdfil.h> @@ -700,7 +700,7 @@ * * @description: * A macro used in #include statements to name the file containing the - * FreeType 2 API which performs color filtering for subpixel rendering. + * FreeType~2 API which performs color filtering for subpixel rendering. */ #define FT_UNPATENTED_HINTING_H <freetype/ttunpat.h> @@ -712,7 +712,7 @@ * * @description: * A macro used in #include statements to name the file containing the - * FreeType 2 API which performs color filtering for subpixel rendering. + * FreeType~2 API which performs color filtering for subpixel rendering. */ #define FT_INCREMENTAL_H <freetype/ftincrem.h> @@ -724,11 +724,23 @@ * * @description: * A macro used in #include statements to name the file containing the - * FreeType 2 API which returns entries from the TrueType GASP table. + * FreeType~2 API which returns entries from the TrueType GASP table. */ #define FT_GASP_H <freetype/ftgasp.h> + /************************************************************************* + * + * @macro: + * FT_ADVANCES_H + * + * @description: + * A macro used in #include statements to name the file containing the + * FreeType~2 API which returns individual and ranged glyph advances. + */ +#define FT_ADVANCES_H <freetype/ftadvanc.h> + + /* */ #define FT_ERROR_DEFINITIONS_H <freetype/fterrdef.h> diff --git a/src/3rdparty/freetype/include/freetype/config/ftmodule.h b/src/3rdparty/freetype/include/freetype/config/ftmodule.h index d92b0ee..76d271a 100644 --- a/src/3rdparty/freetype/include/freetype/config/ftmodule.h +++ b/src/3rdparty/freetype/include/freetype/config/ftmodule.h @@ -10,23 +10,23 @@ * */ -FT_USE_MODULE(autofit_module_class) -FT_USE_MODULE(tt_driver_class) -FT_USE_MODULE(t1_driver_class) -FT_USE_MODULE(cff_driver_class) -FT_USE_MODULE(t1cid_driver_class) -FT_USE_MODULE(pfr_driver_class) -FT_USE_MODULE(t42_driver_class) -FT_USE_MODULE(winfnt_driver_class) -FT_USE_MODULE(pcf_driver_class) -FT_USE_MODULE(psaux_module_class) -FT_USE_MODULE(psnames_module_class) -FT_USE_MODULE(pshinter_module_class) -FT_USE_MODULE(ft_raster1_renderer_class) -FT_USE_MODULE(sfnt_module_class) -FT_USE_MODULE(ft_smooth_renderer_class) -FT_USE_MODULE(ft_smooth_lcd_renderer_class) -FT_USE_MODULE(ft_smooth_lcdv_renderer_class) -FT_USE_MODULE(bdf_driver_class) +FT_USE_MODULE( FT_Module_Class, autofit_module_class ) +FT_USE_MODULE( FT_Driver_ClassRec, tt_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, t1_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, cff_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, t1cid_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, pfr_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, t42_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, winfnt_driver_class ) +FT_USE_MODULE( FT_Driver_ClassRec, pcf_driver_class ) +FT_USE_MODULE( FT_Module_Class, psaux_module_class ) +FT_USE_MODULE( FT_Module_Class, psnames_module_class ) +FT_USE_MODULE( FT_Module_Class, pshinter_module_class ) +FT_USE_MODULE( FT_Renderer_Class, ft_raster1_renderer_class ) +FT_USE_MODULE( FT_Module_Class, sfnt_module_class ) +FT_USE_MODULE( FT_Renderer_Class, ft_smooth_renderer_class ) +FT_USE_MODULE( FT_Renderer_Class, ft_smooth_lcd_renderer_class ) +FT_USE_MODULE( FT_Renderer_Class, ft_smooth_lcdv_renderer_class ) +FT_USE_MODULE( FT_Driver_ClassRec, bdf_driver_class ) /* EOF */ diff --git a/src/3rdparty/freetype/include/freetype/config/ftoption.h b/src/3rdparty/freetype/include/freetype/config/ftoption.h index a2d61f9..597a2bb 100644 --- a/src/3rdparty/freetype/include/freetype/config/ftoption.h +++ b/src/3rdparty/freetype/include/freetype/config/ftoption.h @@ -112,7 +112,28 @@ FT_BEGIN_HEADER /* file `ftconfig.h' either statically or through the */ /* `configure' script on supported platforms. */ /* */ -#undef FT_CONFIG_OPTION_FORCE_INT64 +#undef FT_CONFIG_OPTION_FORCE_INT64 + + + /*************************************************************************/ + /* */ + /* If this macro is defined, do not try to use an assembler version of */ + /* performance-critical functions (e.g. FT_MulFix). You should only do */ + /* that to verify that the assembler function works properly, or to */ + /* execute benchmark tests of the various implementations. */ +/* #define FT_CONFIG_OPTION_NO_ASSEMBLER */ + + + /*************************************************************************/ + /* */ + /* If this macro is defined, try to use an inlined assembler version of */ + /* the `FT_MulFix' function, which is a `hotspot' when loading and */ + /* hinting glyphs, and which should be executed as fast as possible. */ + /* */ + /* Note that if your compiler or CPU is not supported, this will default */ + /* to the standard and portable implementation found in `ftcalc.c'. */ + /* */ +#define FT_CONFIG_OPTION_INLINE_MULFIX /*************************************************************************/ @@ -163,7 +184,7 @@ FT_BEGIN_HEADER /* Do not #undef this macro here since the build system might define */ /* it for certain configurations only. */ /* */ -/* #define FT_CONFIG_OPTION_SYSTEM_ZLIB */ +/* #define FT_CONFIG_OPTION_SYSTEM_ZLIB */ /*************************************************************************/ @@ -204,27 +225,27 @@ FT_BEGIN_HEADER /* Do not #undef these macros here since the build system might define */ /* them for certain configurations only. */ /* */ -/* #define FT_EXPORT(x) extern x */ -/* #define FT_EXPORT_DEF(x) x */ +/* #define FT_EXPORT(x) extern x */ +/* #define FT_EXPORT_DEF(x) x */ /*************************************************************************/ /* */ /* Glyph Postscript Names handling */ /* */ - /* By default, FreeType 2 is compiled with the `PSNames' module. This */ + /* By default, FreeType 2 is compiled with the `psnames' module. This */ /* module is in charge of converting a glyph name string into a */ /* Unicode value, or return a Macintosh standard glyph name for the */ /* use with the TrueType `post' table. */ /* */ - /* Undefine this macro if you do not want `PSNames' compiled in your */ + /* Undefine this macro if you do not want `psnames' compiled in your */ /* build of FreeType. This has the following effects: */ /* */ /* - The TrueType driver will provide its own set of glyph names, */ /* if you build it to support postscript names in the TrueType */ /* `post' table. */ /* */ - /* - The Type 1 driver will not be able to synthetize a Unicode */ + /* - The Type 1 driver will not be able to synthesize a Unicode */ /* charmap out of the glyphs found in the fonts. */ /* */ /* You would normally undefine this configuration macro when building */ @@ -240,12 +261,12 @@ FT_BEGIN_HEADER /* By default, FreeType 2 is built with the `PSNames' module compiled */ /* in. Among other things, the module is used to convert a glyph name */ /* into a Unicode value. This is especially useful in order to */ - /* synthetize on the fly a Unicode charmap from the CFF/Type 1 driver */ + /* synthesize on the fly a Unicode charmap from the CFF/Type 1 driver */ /* through a big table named the `Adobe Glyph List' (AGL). */ /* */ /* Undefine this macro if you do not want the Adobe Glyph List */ /* compiled in your `PSNames' module. The Type 1 driver will not be */ - /* able to synthetize a Unicode charmap out of the glyphs found in the */ + /* able to synthesize a Unicode charmap out of the glyphs found in the */ /* fonts. */ /* */ #define FT_CONFIG_OPTION_ADOBE_GLYPH_LIST @@ -467,9 +488,9 @@ FT_BEGIN_HEADER /* If you define TT_CONFIG_OPTION_UNPATENTED_HINTING, a special version */ /* of the TrueType bytecode interpreter is used that doesn't implement */ /* any of the patented opcodes and algorithms. Note that the */ - /* the TT_CONFIG_OPTION_UNPATENTED_HINTING macro is *ignored* if you */ - /* define TT_CONFIG_OPTION_BYTECODE_INTERPRETER; with other words, */ - /* either define TT_CONFIG_OPTION_BYTECODE_INTERPRETER or */ + /* TT_CONFIG_OPTION_UNPATENTED_HINTING macro is *ignored* if you define */ + /* TT_CONFIG_OPTION_BYTECODE_INTERPRETER; in other words, either define */ + /* TT_CONFIG_OPTION_BYTECODE_INTERPRETER or */ /* TT_CONFIG_OPTION_UNPATENTED_HINTING but not both at the same time. */ /* */ /* This macro is only useful for a small number of font files (mostly */ @@ -653,11 +674,12 @@ FT_BEGIN_HEADER /* - * This variable is defined if either unpatented or native TrueType + * This macro is defined if either unpatented or native TrueType * hinting is requested by the definitions above. */ #ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER #define TT_USE_BYTECODE_INTERPRETER +#undef TT_CONFIG_OPTION_UNPATENTED_HINTING #elif defined TT_CONFIG_OPTION_UNPATENTED_HINTING #define TT_USE_BYTECODE_INTERPRETER #endif diff --git a/src/3rdparty/freetype/include/freetype/config/ftstdlib.h b/src/3rdparty/freetype/include/freetype/config/ftstdlib.h index f923f3e..ce5557a 100644 --- a/src/3rdparty/freetype/include/freetype/config/ftstdlib.h +++ b/src/3rdparty/freetype/include/freetype/config/ftstdlib.h @@ -5,7 +5,7 @@ /* ANSI-specific library and header configuration file (specification */ /* only). */ /* */ -/* Copyright 2002, 2003, 2004, 2005, 2006, 2007 by */ +/* Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -54,12 +54,6 @@ /* In these case, `ftconfig.h' will refuse to compile anyway with a */ /* message like `couldn't find 32-bit type' or something similar. */ /* */ - /* IMPORTANT NOTE: We do not define aliases for heap management and */ - /* i/o routines (i.e. malloc/free/fopen/fread/...) */ - /* since these functions should all be encapsulated */ - /* by platform-specific implementations of */ - /* `ftsystem.c'. */ - /* */ /**********************************************************************/ @@ -124,8 +118,6 @@ #define ft_qsort qsort -#define ft_exit exit /* only used to exit from unhandled exceptions */ - /**********************************************************************/ /* */ diff --git a/src/3rdparty/freetype/include/freetype/freetype.h b/src/3rdparty/freetype/include/freetype/freetype.h index 32d5319..364388b 100644 --- a/src/3rdparty/freetype/include/freetype/freetype.h +++ b/src/3rdparty/freetype/include/freetype/freetype.h @@ -4,7 +4,7 @@ /* */ /* FreeType high-level API and common types (specification only). */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */ +/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -25,14 +25,6 @@ #endif - /*************************************************************************/ - /* */ - /* The `raster' component duplicates some of the declarations in */ - /* freetype.h for stand-alone use if _FREETYPE_ isn't defined. */ - /* */ - /*************************************************************************/ - - #ifndef __FREETYPE_H__ #define __FREETYPE_H__ @@ -60,8 +52,8 @@ FT_BEGIN_HEADER /* */ /* <Description> */ /* FreeType assumes that structures allocated by the user and passed */ - /* as arguments are zeroed out except for the actual data. With */ - /* other words, it is recommended to use `calloc' (or variants of it) */ + /* as arguments are zeroed out except for the actual data. In other */ + /* words, it is recommended to use `calloc' (or variants of it) */ /* instead of `malloc' for allocation. */ /* */ /*************************************************************************/ @@ -86,10 +78,10 @@ FT_BEGIN_HEADER /* Base Interface */ /* */ /* <Abstract> */ - /* The FreeType 2 base font interface. */ + /* The FreeType~2 base font interface. */ /* */ /* <Description> */ - /* This section describes the public high-level API of FreeType 2. */ + /* This section describes the public high-level API of FreeType~2. */ /* */ /* <Order> */ /* FT_Library */ @@ -191,6 +183,15 @@ FT_BEGIN_HEADER /* FT_Set_Charmap */ /* FT_Get_Charmap_Index */ /* */ + /* FT_FSTYPE_INSTALLABLE_EMBEDDING */ + /* FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING */ + /* FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING */ + /* FT_FSTYPE_EDITABLE_EMBEDDING */ + /* FT_FSTYPE_NO_SUBSETTING */ + /* FT_FSTYPE_BITMAP_EMBEDDING_ONLY */ + /* */ + /* FT_Get_FSType_Flags */ + /* */ /*************************************************************************/ @@ -386,8 +387,8 @@ FT_BEGIN_HEADER /* Use @FT_Done_Face to destroy it (along with its slot and sizes). */ /* */ /* <Also> */ - /* The @FT_FaceRec details the publicly accessible fields of a given */ - /* face object. */ + /* See @FT_FaceRec for the publicly accessible fields of a given face */ + /* object. */ /* */ typedef struct FT_FaceRec_* FT_Face; @@ -416,8 +417,8 @@ FT_BEGIN_HEADER /* activated at any given time per face. */ /* */ /* <Also> */ - /* The @FT_SizeRec structure details the publicly accessible fields */ - /* of a given size object. */ + /* See @FT_SizeRec for the publicly accessible fields of a given size */ + /* object. */ /* */ typedef struct FT_SizeRec_* FT_Size; @@ -429,7 +430,7 @@ FT_BEGIN_HEADER /* */ /* <Description> */ /* A handle to a given `glyph slot'. A slot is a container where it */ - /* is possible to load any one of the glyphs contained in its parent */ + /* is possible to load any of the glyphs contained in its parent */ /* face. */ /* */ /* In other words, each time you call @FT_Load_Glyph or */ @@ -438,7 +439,7 @@ FT_BEGIN_HEADER /* other control information. */ /* */ /* <Also> */ - /* @FT_GlyphSlotRec details the publicly accessible glyph fields. */ + /* See @FT_GlyphSlotRec for the publicly accessible glyph fields. */ /* */ typedef struct FT_GlyphSlotRec_* FT_GlyphSlot; @@ -469,8 +470,8 @@ FT_BEGIN_HEADER /* the list and automatically activates it. */ /* */ /* <Also> */ - /* The @FT_CharMapRec details the publicly accessible fields of a */ - /* given character map. */ + /* See @FT_CharMapRec for the publicly accessible fields of a given */ + /* character map. */ /* */ typedef struct FT_CharMapRec_* FT_CharMap; @@ -485,7 +486,7 @@ FT_BEGIN_HEADER /* used to define `encoding' identifiers (see @FT_Encoding). */ /* */ /* <Note> */ - /* Since many 16bit compilers don't like 32bit enumerations, you */ + /* Since many 16-bit compilers don't like 32-bit enumerations, you */ /* should redefine this macro in case of problems to something like */ /* this: */ /* */ @@ -526,123 +527,123 @@ FT_BEGIN_HEADER /* Other encodings might be defined in the future. */ /* */ /* <Values> */ - /* FT_ENCODING_NONE :: */ - /* The encoding value 0 is reserved. */ + /* FT_ENCODING_NONE :: */ + /* The encoding value~0 is reserved. */ /* */ - /* FT_ENCODING_UNICODE :: */ - /* Corresponds to the Unicode character set. This value covers */ - /* all versions of the Unicode repertoire, including ASCII and */ - /* Latin-1. Most fonts include a Unicode charmap, but not all */ - /* of them. */ + /* FT_ENCODING_UNICODE :: */ + /* Corresponds to the Unicode character set. This value covers */ + /* all versions of the Unicode repertoire, including ASCII and */ + /* Latin-1. Most fonts include a Unicode charmap, but not all */ + /* of them. */ /* */ - /* FT_ENCODING_MS_SYMBOL :: */ - /* Corresponds to the Microsoft Symbol encoding, used to encode */ - /* mathematical symbols in the 32..255 character code range. For */ - /* more information, see `http://www.ceviz.net/symbol.htm'. */ + /* FT_ENCODING_MS_SYMBOL :: */ + /* Corresponds to the Microsoft Symbol encoding, used to encode */ + /* mathematical symbols in the 32..255 character code range. For */ + /* more information, see `http://www.ceviz.net/symbol.htm'. */ /* */ - /* FT_ENCODING_SJIS :: */ - /* Corresponds to Japanese SJIS encoding. More info at */ - /* at `http://langsupport.japanreference.com/encoding.shtml'. */ - /* See note on multi-byte encodings below. */ + /* FT_ENCODING_SJIS :: */ + /* Corresponds to Japanese SJIS encoding. More info at */ + /* at `http://langsupport.japanreference.com/encoding.shtml'. */ + /* See note on multi-byte encodings below. */ /* */ - /* FT_ENCODING_GB2312 :: */ - /* Corresponds to an encoding system for Simplified Chinese as used */ - /* used in mainland China. */ + /* FT_ENCODING_GB2312 :: */ + /* Corresponds to an encoding system for Simplified Chinese as used */ + /* used in mainland China. */ /* */ - /* FT_ENCODING_BIG5 :: */ - /* Corresponds to an encoding system for Traditional Chinese as used */ - /* in Taiwan and Hong Kong. */ + /* FT_ENCODING_BIG5 :: */ + /* Corresponds to an encoding system for Traditional Chinese as */ + /* used in Taiwan and Hong Kong. */ /* */ - /* FT_ENCODING_WANSUNG :: */ - /* Corresponds to the Korean encoding system known as Wansung. */ - /* For more information see */ - /* `http://www.microsoft.com/typography/unicode/949.txt'. */ + /* FT_ENCODING_WANSUNG :: */ + /* Corresponds to the Korean encoding system known as Wansung. */ + /* For more information see */ + /* `http://www.microsoft.com/typography/unicode/949.txt'. */ /* */ - /* FT_ENCODING_JOHAB :: */ - /* The Korean standard character set (KS C-5601-1992), which */ - /* corresponds to MS Windows code page 1361. This character set */ - /* includes all possible Hangeul character combinations. */ + /* FT_ENCODING_JOHAB :: */ + /* The Korean standard character set (KS~C 5601-1992), which */ + /* corresponds to MS Windows code page 1361. This character set */ + /* includes all possible Hangeul character combinations. */ /* */ - /* FT_ENCODING_ADOBE_LATIN_1 :: */ - /* Corresponds to a Latin-1 encoding as defined in a Type 1 */ - /* Postscript font. It is limited to 256 character codes. */ + /* FT_ENCODING_ADOBE_LATIN_1 :: */ + /* Corresponds to a Latin-1 encoding as defined in a Type~1 */ + /* PostScript font. It is limited to 256 character codes. */ /* */ - /* FT_ENCODING_ADOBE_STANDARD :: */ - /* Corresponds to the Adobe Standard encoding, as found in Type 1, */ - /* CFF, and OpenType/CFF fonts. It is limited to 256 character */ - /* codes. */ + /* FT_ENCODING_ADOBE_STANDARD :: */ + /* Corresponds to the Adobe Standard encoding, as found in Type~1, */ + /* CFF, and OpenType/CFF fonts. It is limited to 256 character */ + /* codes. */ /* */ - /* FT_ENCODING_ADOBE_EXPERT :: */ - /* Corresponds to the Adobe Expert encoding, as found in Type 1, */ - /* CFF, and OpenType/CFF fonts. It is limited to 256 character */ - /* codes. */ + /* FT_ENCODING_ADOBE_EXPERT :: */ + /* Corresponds to the Adobe Expert encoding, as found in Type~1, */ + /* CFF, and OpenType/CFF fonts. It is limited to 256 character */ + /* codes. */ /* */ - /* FT_ENCODING_ADOBE_CUSTOM :: */ - /* Corresponds to a custom encoding, as found in Type 1, CFF, and */ - /* OpenType/CFF fonts. It is limited to 256 character codes. */ + /* FT_ENCODING_ADOBE_CUSTOM :: */ + /* Corresponds to a custom encoding, as found in Type~1, CFF, and */ + /* OpenType/CFF fonts. It is limited to 256 character codes. */ /* */ - /* FT_ENCODING_APPLE_ROMAN :: */ - /* Corresponds to the 8-bit Apple roman encoding. Many TrueType and */ - /* OpenType fonts contain a charmap for this encoding, since older */ - /* versions of Mac OS are able to use it. */ + /* FT_ENCODING_APPLE_ROMAN :: */ + /* Corresponds to the 8-bit Apple roman encoding. Many TrueType */ + /* and OpenType fonts contain a charmap for this encoding, since */ + /* older versions of Mac OS are able to use it. */ /* */ - /* FT_ENCODING_OLD_LATIN_2 :: */ - /* This value is deprecated and was never used nor reported by */ - /* FreeType. Don't use or test for it. */ + /* FT_ENCODING_OLD_LATIN_2 :: */ + /* This value is deprecated and was never used nor reported by */ + /* FreeType. Don't use or test for it. */ /* */ - /* FT_ENCODING_MS_SJIS :: */ - /* Same as FT_ENCODING_SJIS. Deprecated. */ + /* FT_ENCODING_MS_SJIS :: */ + /* Same as FT_ENCODING_SJIS. Deprecated. */ /* */ - /* FT_ENCODING_MS_GB2312 :: */ - /* Same as FT_ENCODING_GB2312. Deprecated. */ + /* FT_ENCODING_MS_GB2312 :: */ + /* Same as FT_ENCODING_GB2312. Deprecated. */ /* */ - /* FT_ENCODING_MS_BIG5 :: */ - /* Same as FT_ENCODING_BIG5. Deprecated. */ + /* FT_ENCODING_MS_BIG5 :: */ + /* Same as FT_ENCODING_BIG5. Deprecated. */ /* */ - /* FT_ENCODING_MS_WANSUNG :: */ - /* Same as FT_ENCODING_WANSUNG. Deprecated. */ + /* FT_ENCODING_MS_WANSUNG :: */ + /* Same as FT_ENCODING_WANSUNG. Deprecated. */ /* */ - /* FT_ENCODING_MS_JOHAB :: */ - /* Same as FT_ENCODING_JOHAB. Deprecated. */ + /* FT_ENCODING_MS_JOHAB :: */ + /* Same as FT_ENCODING_JOHAB. Deprecated. */ /* */ /* <Note> */ - /* By default, FreeType automatically synthetizes a Unicode charmap */ - /* for Postscript fonts, using their glyph names dictionaries. */ - /* However, it also reports the encodings defined explicitly in the */ - /* font file, for the cases when they are needed, with the Adobe */ - /* values as well. */ - /* */ - /* FT_ENCODING_NONE is set by the BDF and PCF drivers if the charmap */ - /* is neither Unicode nor ISO-8859-1 (otherwise it is set to */ - /* FT_ENCODING_UNICODE). Use @FT_Get_BDF_Charset_ID to find out which */ - /* encoding is really present. If, for example, the `cs_registry' */ - /* field is `KOI8' and the `cs_encoding' field is `R', the font is */ - /* encoded in KOI8-R. */ - /* */ - /* FT_ENCODING_NONE is always set (with a single exception) by the */ - /* winfonts driver. Use @FT_Get_WinFNT_Header and examine the */ - /* `charset' field of the @FT_WinFNT_HeaderRec structure to find out */ - /* which encoding is really present. For example, */ - /* @FT_WinFNT_ID_CP1251 (204) means Windows code page 1251 (for */ - /* Russian). */ - /* */ - /* FT_ENCODING_NONE is set if `platform_id' is @TT_PLATFORM_MACINTOSH */ - /* and `encoding_id' is not @TT_MAC_ID_ROMAN (otherwise it is set to */ - /* FT_ENCODING_APPLE_ROMAN). */ - /* */ - /* If `platform_id' is @TT_PLATFORM_MACINTOSH, use the function c */ - /* @FT_Get_CMap_Language_ID to query the Mac language ID which may be */ - /* needed to be able to distinguish Apple encoding variants. See */ - /* */ - /* http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/README.TXT */ - /* */ - /* to get an idea how to do that. Basically, if the language ID is 0, */ - /* don't use it, otherwise subtract 1 from the language ID. Then */ - /* examine `encoding_id'. If, for example, `encoding_id' is */ - /* @TT_MAC_ID_ROMAN and the language ID (minus 1) is */ - /* `TT_MAC_LANGID_GREEK', it is the Greek encoding, not Roman. */ - /* @TT_MAC_ID_ARABIC with `TT_MAC_LANGID_FARSI' means the Farsi */ - /* variant the Arabic encoding. */ + /* By default, FreeType automatically synthesizes a Unicode charmap */ + /* for PostScript fonts, using their glyph names dictionaries. */ + /* However, it also reports the encodings defined explicitly in the */ + /* font file, for the cases when they are needed, with the Adobe */ + /* values as well. */ + /* */ + /* FT_ENCODING_NONE is set by the BDF and PCF drivers if the charmap */ + /* is neither Unicode nor ISO-8859-1 (otherwise it is set to */ + /* FT_ENCODING_UNICODE). Use @FT_Get_BDF_Charset_ID to find out */ + /* which encoding is really present. If, for example, the */ + /* `cs_registry' field is `KOI8' and the `cs_encoding' field is `R', */ + /* the font is encoded in KOI8-R. */ + /* */ + /* FT_ENCODING_NONE is always set (with a single exception) by the */ + /* winfonts driver. Use @FT_Get_WinFNT_Header and examine the */ + /* `charset' field of the @FT_WinFNT_HeaderRec structure to find out */ + /* which encoding is really present. For example, */ + /* @FT_WinFNT_ID_CP1251 (204) means Windows code page 1251 (for */ + /* Russian). */ + /* */ + /* FT_ENCODING_NONE is set if `platform_id' is @TT_PLATFORM_MACINTOSH */ + /* and `encoding_id' is not @TT_MAC_ID_ROMAN (otherwise it is set to */ + /* FT_ENCODING_APPLE_ROMAN). */ + /* */ + /* If `platform_id' is @TT_PLATFORM_MACINTOSH, use the function */ + /* @FT_Get_CMap_Language_ID to query the Mac language ID which may */ + /* be needed to be able to distinguish Apple encoding variants. See */ + /* */ + /* http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/README.TXT */ + /* */ + /* to get an idea how to do that. Basically, if the language ID */ + /* is~0, don't use it, otherwise subtract 1 from the language ID. */ + /* Then examine `encoding_id'. If, for example, `encoding_id' is */ + /* @TT_MAC_ID_ROMAN and the language ID (minus~1) is */ + /* `TT_MAC_LANGID_GREEK', it is the Greek encoding, not Roman. */ + /* @TT_MAC_ID_ARABIC with `TT_MAC_LANGID_FARSI' means the Farsi */ + /* variant the Arabic encoding. */ /* */ typedef enum FT_Encoding_ { @@ -753,7 +754,7 @@ FT_BEGIN_HEADER /* An opaque handle to an `FT_Face_InternalRec' structure, used to */ /* model private data of a given @FT_Face object. */ /* */ - /* This structure might change between releases of FreeType 2 and is */ + /* This structure might change between releases of FreeType~2 and is */ /* not generally available to client applications. */ /* */ typedef struct FT_Face_InternalRec_* FT_Face_Internal; @@ -774,7 +775,7 @@ FT_BEGIN_HEADER /* a font file. */ /* */ /* face_index :: The index of the face in the font file. It */ - /* is set to 0 if there is only one face in */ + /* is set to~0 if there is only one face in */ /* the font file. */ /* */ /* face_flags :: A set of bit flags that give important */ @@ -790,6 +791,9 @@ FT_BEGIN_HEADER /* `num_fixed_sizes'), it is set to the number */ /* of outline glyphs. */ /* */ + /* For CID-keyed fonts, this value gives the */ + /* highest CID used in the font. */ + /* */ /* family_name :: The face's family name. This is an ASCII */ /* string, usually in English, which describes */ /* the typeface's family (like `Times New */ @@ -838,9 +842,13 @@ FT_BEGIN_HEADER /* descender'. Only relevant for scalable */ /* formats. */ /* */ + /* Note that the bounding box might be off by */ + /* (at least) one pixel for hinted fonts. See */ + /* @FT_Size_Metrics for further discussion. */ + /* */ /* units_per_EM :: The number of font units per EM square for */ /* this face. This is typically 2048 for */ - /* TrueType fonts, and 1000 for Type 1 fonts. */ + /* TrueType fonts, and 1000 for Type~1 fonts. */ /* Only relevant for scalable formats. */ /* */ /* ascender :: The typographic ascender of the face, */ @@ -876,7 +884,7 @@ FT_BEGIN_HEADER /* scalable formats. */ /* */ /* underline_position :: The position, in font units, of the */ - /* underline line for this face. It's the */ + /* underline line for this face. It is the */ /* center of the underlining stem. Only */ /* relevant for scalable formats. */ /* */ @@ -891,8 +899,8 @@ FT_BEGIN_HEADER /* charmap :: The current active charmap for this face. */ /* */ /* <Note> */ - /* Fields may be changed after a call to @FT_Attach_File or */ - /* @FT_Attach_Stream. */ + /* Fields may be changed after a call to @FT_Attach_File or */ + /* @FT_Attach_Stream. */ /* */ typedef struct FT_FaceRec_ { @@ -1030,6 +1038,27 @@ FT_BEGIN_HEADER /* exist make FT_Load_Glyph return successfully; in all other cases */ /* you get an `FT_Err_Invalid_Argument' error. */ /* */ + /* Note that CID-keyed fonts which are in an SFNT wrapper don't */ + /* have this flag set since the glyphs are accessed in the normal */ + /* way (using contiguous indices); the `CID-ness' isn't visible to */ + /* the application. */ + /* */ + /* FT_FACE_FLAG_TRICKY :: */ + /* Set if the font is `tricky', this is, it always needs the */ + /* font format's native hinting engine to get a reasonable result. */ + /* A typical example is the Chinese font `mingli.ttf' which uses */ + /* TrueType bytecode instructions to move and scale all of its */ + /* subglyphs. */ + /* */ + /* It is not possible to autohint such fonts using */ + /* @FT_LOAD_FORCE_AUTOHINT; it will also ignore */ + /* @FT_LOAD_NO_HINTING. You have to set both FT_LOAD_NO_HINTING */ + /* and @FT_LOAD_NO_AUTOHINT to really disable hinting; however, you */ + /* probably never want this except for demonstration purposes. */ + /* */ + /* Currently, there are six TrueType fonts in the list of tricky */ + /* fonts; they are hard-coded in file `ttobjs.c'. */ + /* */ #define FT_FACE_FLAG_SCALABLE ( 1L << 0 ) #define FT_FACE_FLAG_FIXED_SIZES ( 1L << 1 ) #define FT_FACE_FLAG_FIXED_WIDTH ( 1L << 2 ) @@ -1043,8 +1072,7 @@ FT_BEGIN_HEADER #define FT_FACE_FLAG_EXTERNAL_STREAM ( 1L << 10 ) #define FT_FACE_FLAG_HINTER ( 1L << 11 ) #define FT_FACE_FLAG_CID_KEYED ( 1L << 12 ) - - /* */ +#define FT_FACE_FLAG_TRICKY ( 1L << 13 ) /************************************************************************* @@ -1099,7 +1127,7 @@ FT_BEGIN_HEADER * * @description: * A macro that returns true whenever a face object contains a scalable - * font face (true for TrueType, Type 1, Type 42, CID, OpenType/CFF, + * font face (true for TrueType, Type~1, Type~42, CID, OpenType/CFF, * and PFR font formats. * */ @@ -1155,8 +1183,6 @@ FT_BEGIN_HEADER #define FT_HAS_FIXED_SIZES( face ) \ ( face->face_flags & FT_FACE_FLAG_FIXED_SIZES ) - /* */ - /************************************************************************* * @@ -1217,9 +1243,23 @@ FT_BEGIN_HEADER ( face->face_flags & FT_FACE_FLAG_CID_KEYED ) + /************************************************************************* + * + * @macro: + * FT_IS_TRICKY( face ) + * + * @description: + * A macro that returns true whenever a face represents a `tricky' font. + * See the discussion of @FT_FACE_FLAG_TRICKY for more details. + * + */ +#define FT_IS_TRICKY( face ) \ + ( face->face_flags & FT_FACE_FLAG_TRICKY ) + + /*************************************************************************/ /* */ - /* <Constant> */ + /* <Const> */ /* FT_STYLE_FLAG_XXX */ /* */ /* <Description> */ @@ -1437,7 +1477,7 @@ FT_BEGIN_HEADER /* Only relevant for outline glyphs. */ /* */ /* advance :: This is the transformed advance width for the */ - /* glyph. */ + /* glyph (in 26.6 fractional pixel format). */ /* */ /* format :: This field indicates the format of the image */ /* contained in the glyph slot. Typically */ @@ -1461,7 +1501,7 @@ FT_BEGIN_HEADER /* bitmap_top :: This is the bitmap's top bearing expressed in */ /* integer pixels. Remember that this is the */ /* distance from the baseline to the top-most */ - /* glyph scanline, upwards y-coordinates being */ + /* glyph scanline, upwards y~coordinates being */ /* *positive*. */ /* */ /* outline :: The outline descriptor for the current glyph */ @@ -1484,7 +1524,7 @@ FT_BEGIN_HEADER /* */ /* control_data :: Certain font drivers can also return the */ /* control data for a given glyph image (e.g. */ - /* TrueType bytecode, Type 1 charstrings, etc.). */ + /* TrueType bytecode, Type~1 charstrings, etc.). */ /* This field is a pointer to such data. */ /* */ /* control_len :: This is the length in bytes of the control */ @@ -1506,15 +1546,15 @@ FT_BEGIN_HEADER /* <Note> */ /* If @FT_Load_Glyph is called with default flags (see */ /* @FT_LOAD_DEFAULT) the glyph image is loaded in the glyph slot in */ - /* its native format (e.g., an outline glyph for TrueType and Type 1 */ + /* its native format (e.g., an outline glyph for TrueType and Type~1 */ /* formats). */ /* */ /* This image can later be converted into a bitmap by calling */ /* @FT_Render_Glyph. This function finds the current renderer for */ - /* the native image's format then invokes it. */ + /* the native image's format, then invokes it. */ /* */ /* The renderer is in charge of transforming the native image through */ - /* the slot's face transformation fields, then convert it into a */ + /* the slot's face transformation fields, then converting it into a */ /* bitmap that is returned in `slot->bitmap'. */ /* */ /* Note that `slot->bitmap_left' and `slot->bitmap_top' are also used */ @@ -1609,7 +1649,7 @@ FT_BEGIN_HEADER /* alibrary :: A handle to a new library object. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ FT_EXPORT( FT_Error ) FT_Init_FreeType( FT_Library *alibrary ); @@ -1628,7 +1668,7 @@ FT_BEGIN_HEADER /* library :: A handle to the target library object. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ FT_EXPORT( FT_Error ) FT_Done_FreeType( FT_Library library ); @@ -1644,26 +1684,26 @@ FT_BEGIN_HEADER /* @FT_Open_Args structure. */ /* */ /* <Values> */ - /* FT_OPEN_MEMORY :: This is a memory-based stream. */ + /* FT_OPEN_MEMORY :: This is a memory-based stream. */ /* */ - /* FT_OPEN_STREAM :: Copy the stream from the `stream' field. */ + /* FT_OPEN_STREAM :: Copy the stream from the `stream' field. */ /* */ - /* FT_OPEN_PATHNAME :: Create a new input stream from a C */ - /* path name. */ + /* FT_OPEN_PATHNAME :: Create a new input stream from a C~path */ + /* name. */ /* */ - /* FT_OPEN_DRIVER :: Use the `driver' field. */ + /* FT_OPEN_DRIVER :: Use the `driver' field. */ /* */ - /* FT_OPEN_PARAMS :: Use the `num_params' and `params' fields. */ + /* FT_OPEN_PARAMS :: Use the `num_params' and `params' fields. */ /* */ - /* ft_open_memory :: Deprecated; use @FT_OPEN_MEMORY instead. */ + /* ft_open_memory :: Deprecated; use @FT_OPEN_MEMORY instead. */ /* */ - /* ft_open_stream :: Deprecated; use @FT_OPEN_STREAM instead. */ + /* ft_open_stream :: Deprecated; use @FT_OPEN_STREAM instead. */ /* */ - /* ft_open_pathname :: Deprecated; use @FT_OPEN_PATHNAME instead. */ + /* ft_open_pathname :: Deprecated; use @FT_OPEN_PATHNAME instead. */ /* */ - /* ft_open_driver :: Deprecated; use @FT_OPEN_DRIVER instead. */ + /* ft_open_driver :: Deprecated; use @FT_OPEN_DRIVER instead. */ /* */ - /* ft_open_params :: Deprecated; use @FT_OPEN_PARAMS instead. */ + /* ft_open_params :: Deprecated; use @FT_OPEN_PARAMS instead. */ /* */ /* <Note> */ /* The `FT_OPEN_MEMORY', `FT_OPEN_STREAM', and `FT_OPEN_PATHNAME' */ @@ -1688,8 +1728,8 @@ FT_BEGIN_HEADER /* FT_Parameter */ /* */ /* <Description> */ - /* A simple structure used to pass more or less generic parameters */ - /* to @FT_Open_Face. */ + /* A simple structure used to pass more or less generic parameters to */ + /* @FT_Open_Face. */ /* */ /* <Fields> */ /* tag :: A four-byte identification tag. */ @@ -1731,7 +1771,7 @@ FT_BEGIN_HEADER /* */ /* driver :: This field is exclusively used by @FT_Open_Face; */ /* it simply specifies the font driver to use to open */ - /* the face. If set to 0, FreeType tries to load the */ + /* the face. If set to~0, FreeType tries to load the */ /* face with each one of the drivers in its list. */ /* */ /* num_params :: The number of extra parameters. */ @@ -1762,7 +1802,7 @@ FT_BEGIN_HEADER /* `num_params' and `params' is used. They are ignored otherwise. */ /* */ /* Ideally, both the `pathname' and `params' fields should be tagged */ - /* as `const'; this is missing for API backwards compatibility. With */ + /* as `const'; this is missing for API backwards compatibility. In */ /* other words, applications should treat them as read-only. */ /* */ typedef struct FT_Open_Args_ @@ -1794,7 +1834,7 @@ FT_BEGIN_HEADER /* pathname :: A path to the font file. */ /* */ /* face_index :: The index of the face within the font. The first */ - /* face has index 0. */ + /* face has index~0. */ /* */ /* <Output> */ /* aface :: A handle to a new face object. If `face_index' is */ @@ -1802,7 +1842,7 @@ FT_BEGIN_HEADER /* See @FT_Open_Face for more details. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ FT_EXPORT( FT_Error ) FT_New_Face( FT_Library library, @@ -1829,7 +1869,7 @@ FT_BEGIN_HEADER /* file_size :: The size of the memory chunk used by the font data. */ /* */ /* face_index :: The index of the face within the font. The first */ - /* face has index 0. */ + /* face has index~0. */ /* */ /* <Output> */ /* aface :: A handle to a new face object. If `face_index' is */ @@ -1837,7 +1877,7 @@ FT_BEGIN_HEADER /* See @FT_Open_Face for more details. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* You must not deallocate the memory before calling @FT_Done_Face. */ @@ -1867,7 +1907,7 @@ FT_BEGIN_HEADER /* be filled by the caller. */ /* */ /* face_index :: The index of the face within the font. The first */ - /* face has index 0. */ + /* face has index~0. */ /* */ /* <Output> */ /* aface :: A handle to a new face object. If `face_index' is */ @@ -1875,7 +1915,7 @@ FT_BEGIN_HEADER /* See note below. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* Unlike FreeType 1.x, this function automatically creates a glyph */ @@ -1884,7 +1924,7 @@ FT_BEGIN_HEADER /* */ /* FT_Open_Face can be used to quickly check whether the font */ /* format of a given font resource is supported by FreeType. If the */ - /* `face_index' field is negative, the function's return value is 0 */ + /* `face_index' field is negative, the function's return value is~0 */ /* if the font format is recognized, or non-zero otherwise; */ /* the function returns a more or less empty face handle in `*aface' */ /* (if `aface' isn't NULL). The only useful field in this special */ @@ -1917,7 +1957,7 @@ FT_BEGIN_HEADER /* filepathname :: The pathname. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ FT_EXPORT( FT_Error ) FT_Attach_File( FT_Face face, @@ -1932,7 +1972,7 @@ FT_BEGIN_HEADER /* <Description> */ /* `Attach' data to a face object. Normally, this is used to read */ /* additional information for the face object. For example, you can */ - /* attach an AFM file that comes with a Type 1 font to get the */ + /* attach an AFM file that comes with a Type~1 font to get the */ /* kerning values and other metrics. */ /* */ /* <InOut> */ @@ -1943,7 +1983,7 @@ FT_BEGIN_HEADER /* the caller. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* The meaning of the `attach' (i.e., what really happens when the */ @@ -1972,7 +2012,7 @@ FT_BEGIN_HEADER /* face :: A handle to a target face object. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ FT_EXPORT( FT_Error ) FT_Done_Face( FT_Face face ); @@ -1994,7 +2034,7 @@ FT_BEGIN_HEADER /* `available_sizes' field of @FT_FaceRec structure. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ FT_EXPORT( FT_Error ) FT_Select_Size( FT_Face face, @@ -2080,8 +2120,8 @@ FT_BEGIN_HEADER /* value. */ /* */ /* <Note> */ - /* If `width' is zero, then the horizontal scaling value is set */ - /* equal to the vertical scaling value, and vice versa. */ + /* If `width' is zero, then the horizontal scaling value is set equal */ + /* to the vertical scaling value, and vice versa. */ /* */ typedef struct FT_Size_RequestRec_ { @@ -2120,7 +2160,7 @@ FT_BEGIN_HEADER /* req :: A pointer to a @FT_Size_RequestRec. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* Although drivers may select the bitmap strike matching the */ @@ -2155,7 +2195,7 @@ FT_BEGIN_HEADER /* vert_resolution :: The vertical resolution in dpi. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* If either the character width or height is zero, it is set equal */ @@ -2167,7 +2207,8 @@ FT_BEGIN_HEADER /* A character width or height smaller than 1pt is set to 1pt; if */ /* both resolution values are zero, they are set to 72dpi. */ /* */ - + /* Don't use this function if you are using the FreeType cache API. */ + /* */ FT_EXPORT( FT_Error ) FT_Set_Char_Size( FT_Face face, FT_F26Dot6 char_width, @@ -2194,7 +2235,7 @@ FT_BEGIN_HEADER /* pixel_height :: The nominal height, in pixels. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ FT_EXPORT( FT_Error ) FT_Set_Pixel_Sizes( FT_Face face, @@ -2227,7 +2268,7 @@ FT_BEGIN_HEADER /* whether to hint the outline, etc). */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* The loaded glyph may be transformed. See @FT_Set_Transform for */ @@ -2268,7 +2309,7 @@ FT_BEGIN_HEADER /* whether to hint the outline, etc). */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* This function simply calls @FT_Get_Char_Index and @FT_Load_Glyph. */ @@ -2290,7 +2331,7 @@ FT_BEGIN_HEADER * * @values: * FT_LOAD_DEFAULT :: - * Corresponding to 0, this value is used as the default glyph load + * Corresponding to~0, this value is used as the default glyph load * operation. In this case, the following happens: * * 1. FreeType looks for a bitmap for the glyph corresponding to the @@ -2380,10 +2421,10 @@ FT_BEGIN_HEADER * FT_LOAD_MONOCHROME :: * This flag is used with @FT_LOAD_RENDER to indicate that you want to * render an outline glyph to a 1-bit monochrome bitmap glyph, with - * 8 pixels packed into each byte of the bitmap data. + * 8~pixels packed into each byte of the bitmap data. * * Note that this has no effect on the hinting algorithm used. You - * should use @FT_LOAD_TARGET_MONO instead so that the + * should rather use @FT_LOAD_TARGET_MONO so that the * monochrome-optimized hinting algorithm is used. * * FT_LOAD_LINEAR_DESIGN :: @@ -2402,8 +2443,12 @@ FT_BEGIN_HEADER * @FT_LOAD_NO_AUTOHINT in case you don't want the auto-hinter to be * used at all. * + * See the description of @FT_FACE_FLAG_TRICKY for a special exception + * (affecting only a handful of Asian fonts). + * * Besides deciding which hinter to use, you can also decide which * hinting algorithm to use. See @FT_LOAD_TARGET_XXX for details. + * */ #define FT_LOAD_DEFAULT 0x0 #define FT_LOAD_NO_SCALE 0x1 @@ -2419,11 +2464,14 @@ FT_BEGIN_HEADER #define FT_LOAD_IGNORE_TRANSFORM 0x800 #define FT_LOAD_MONOCHROME 0x1000 #define FT_LOAD_LINEAR_DESIGN 0x2000 -#define FT_LOAD_SBITS_ONLY 0x4000 /* temporary hack! */ #define FT_LOAD_NO_AUTOHINT 0x8000U /* */ + /* used internally only by certain font drivers! */ +#define FT_LOAD_ADVANCE_ONLY 0x100 +#define FT_LOAD_SBITS_ONLY 0x4000 + /************************************************************************** * @@ -2451,7 +2499,7 @@ FT_BEGIN_HEADER * FT_LOAD_TARGET_LIGHT :: * A lighter hinting algorithm for non-monochrome modes. Many * generated glyphs are more fuzzy but better resemble its original - * shape. A bit like rendering on Mac OS X. + * shape. A bit like rendering on Mac OS~X. * * As a special exception, this target implies @FT_LOAD_FORCE_AUTOHINT. * @@ -2487,15 +2535,15 @@ FT_BEGIN_HEADER * * FT_Render_Glyph( face->glyph, FT_RENDER_MODE_LCD ); * } + * */ +#define FT_LOAD_TARGET_( x ) ( (FT_Int32)( (x) & 15 ) << 16 ) -#define FT_LOAD_TARGET_( x ) ( (FT_Int32)( (x) & 15 ) << 16 ) - -#define FT_LOAD_TARGET_NORMAL FT_LOAD_TARGET_( FT_RENDER_MODE_NORMAL ) -#define FT_LOAD_TARGET_LIGHT FT_LOAD_TARGET_( FT_RENDER_MODE_LIGHT ) -#define FT_LOAD_TARGET_MONO FT_LOAD_TARGET_( FT_RENDER_MODE_MONO ) -#define FT_LOAD_TARGET_LCD FT_LOAD_TARGET_( FT_RENDER_MODE_LCD ) -#define FT_LOAD_TARGET_LCD_V FT_LOAD_TARGET_( FT_RENDER_MODE_LCD_V ) +#define FT_LOAD_TARGET_NORMAL FT_LOAD_TARGET_( FT_RENDER_MODE_NORMAL ) +#define FT_LOAD_TARGET_LIGHT FT_LOAD_TARGET_( FT_RENDER_MODE_LIGHT ) +#define FT_LOAD_TARGET_MONO FT_LOAD_TARGET_( FT_RENDER_MODE_MONO ) +#define FT_LOAD_TARGET_LCD FT_LOAD_TARGET_( FT_RENDER_MODE_LCD ) +#define FT_LOAD_TARGET_LCD_V FT_LOAD_TARGET_( FT_RENDER_MODE_LCD_V ) /************************************************************************** @@ -2508,7 +2556,6 @@ FT_BEGIN_HEADER * @FT_LOAD_TARGET_XXX value. * */ - #define FT_LOAD_TARGET_MODE( x ) ( (FT_Render_Mode)( ( (x) >> 16 ) & 15 ) ) @@ -2526,9 +2573,9 @@ FT_BEGIN_HEADER /* face :: A handle to the source face object. */ /* */ /* <Input> */ - /* matrix :: A pointer to the transformation's 2x2 matrix. Use 0 for */ + /* matrix :: A pointer to the transformation's 2x2 matrix. Use~0 for */ /* the identity matrix. */ - /* delta :: A pointer to the translation vector. Use 0 for the null */ + /* delta :: A pointer to the translation vector. Use~0 for the null */ /* vector. */ /* */ /* <Note> */ @@ -2553,17 +2600,19 @@ FT_BEGIN_HEADER /* */ /* <Description> */ /* An enumeration type that lists the render modes supported by */ - /* FreeType 2. Each mode corresponds to a specific type of scanline */ + /* FreeType~2. Each mode corresponds to a specific type of scanline */ /* conversion performed on the outline. */ /* */ - /* For bitmap fonts the `bitmap->pixel_mode' field in the */ - /* @FT_GlyphSlotRec structure gives the format of the returned */ - /* bitmap. */ + /* For bitmap fonts and embedded bitmaps the `bitmap->pixel_mode' */ + /* field in the @FT_GlyphSlotRec structure gives the format of the */ + /* returned bitmap. */ + /* */ + /* All modes except @FT_RENDER_MODE_MONO use 256 levels of opacity. */ /* */ /* <Values> */ /* FT_RENDER_MODE_NORMAL :: */ /* This is the default render mode; it corresponds to 8-bit */ - /* anti-aliased bitmaps, using 256 levels of opacity. */ + /* anti-aliased bitmaps. */ /* */ /* FT_RENDER_MODE_LIGHT :: */ /* This is equivalent to @FT_RENDER_MODE_NORMAL. It is only */ @@ -2572,26 +2621,32 @@ FT_BEGIN_HEADER /* @FT_LOAD_TARGET_XXX for details. */ /* */ /* FT_RENDER_MODE_MONO :: */ - /* This mode corresponds to 1-bit bitmaps. */ + /* This mode corresponds to 1-bit bitmaps (with 2~levels of */ + /* opacity). */ /* */ /* FT_RENDER_MODE_LCD :: */ /* This mode corresponds to horizontal RGB and BGR sub-pixel */ - /* displays, like LCD-screens. It produces 8-bit bitmaps that are */ - /* 3 times the width of the original glyph outline in pixels, and */ + /* displays like LCD screens. It produces 8-bit bitmaps that are */ + /* 3~times the width of the original glyph outline in pixels, and */ /* which use the @FT_PIXEL_MODE_LCD mode. */ /* */ /* FT_RENDER_MODE_LCD_V :: */ /* This mode corresponds to vertical RGB and BGR sub-pixel displays */ /* (like PDA screens, rotated LCD displays, etc.). It produces */ - /* 8-bit bitmaps that are 3 times the height of the original */ + /* 8-bit bitmaps that are 3~times the height of the original */ /* glyph outline in pixels and use the @FT_PIXEL_MODE_LCD_V mode. */ /* */ /* <Note> */ - /* The LCD-optimized glyph bitmaps produced by FT_Render_Glyph can be */ - /* filtered to reduce color-fringes by using @FT_Library_SetLcdFilter */ - /* (not active in the default builds). It is up to the caller to */ - /* either call @FT_Library_SetLcdFilter (if available) or do the */ - /* filtering itself. */ + /* The LCD-optimized glyph bitmaps produced by FT_Render_Glyph can be */ + /* filtered to reduce color-fringes by using @FT_Library_SetLcdFilter */ + /* (not active in the default builds). It is up to the caller to */ + /* either call @FT_Library_SetLcdFilter (if available) or do the */ + /* filtering itself. */ + /* */ + /* The selected render mode only affects vector glyphs of a font. */ + /* Embedded bitmaps often have a different pixel mode like */ + /* @FT_PIXEL_MODE_MONO. You can use @FT_Bitmap_Convert to transform */ + /* them into 8-bit pixmaps. */ /* */ typedef enum FT_Render_Mode_ { @@ -2616,8 +2671,8 @@ FT_BEGIN_HEADER /* @FT_Render_Mode values instead. */ /* */ /* <Values> */ - /* ft_render_mode_normal :: see @FT_RENDER_MODE_NORMAL */ - /* ft_render_mode_mono :: see @FT_RENDER_MODE_MONO */ + /* ft_render_mode_normal :: see @FT_RENDER_MODE_NORMAL */ + /* ft_render_mode_mono :: see @FT_RENDER_MODE_MONO */ /* */ #define ft_render_mode_normal FT_RENDER_MODE_NORMAL #define ft_render_mode_mono FT_RENDER_MODE_MONO @@ -2643,7 +2698,7 @@ FT_BEGIN_HEADER /* list of possible values. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ FT_EXPORT( FT_Error ) FT_Render_Glyph( FT_GlyphSlot slot, @@ -2661,7 +2716,7 @@ FT_BEGIN_HEADER /* */ /* <Values> */ /* FT_KERNING_DEFAULT :: Return scaled and grid-fitted kerning */ - /* distances (value is 0). */ + /* distances (value is~0). */ /* */ /* FT_KERNING_UNFITTED :: Return scaled but un-grid-fitted kerning */ /* distances. */ @@ -2739,7 +2794,7 @@ FT_BEGIN_HEADER /* and in pixels for fixed-sizes formats. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* Only horizontal layouts (left-to-right & right-to-left) are */ @@ -2764,17 +2819,17 @@ FT_BEGIN_HEADER /* Return the track kerning for a given face object at a given size. */ /* */ /* <Input> */ - /* face :: A handle to a source face object. */ + /* face :: A handle to a source face object. */ /* */ - /* point_size :: The point size in 16.16 fractional points. */ + /* point_size :: The point size in 16.16 fractional points. */ /* */ - /* degree :: The degree of tightness. */ + /* degree :: The degree of tightness. */ /* */ /* <Output> */ - /* akerning :: The kerning in 16.16 fractional points. */ + /* akerning :: The kerning in 16.16 fractional points. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ FT_EXPORT( FT_Error ) FT_Get_Track_Kerning( FT_Face face, @@ -2790,7 +2845,7 @@ FT_BEGIN_HEADER /* */ /* <Description> */ /* Retrieve the ASCII name of a given glyph in a face. This only */ - /* works for those faces where @FT_HAS_GLYPH_NAMES(face) returns 1. */ + /* works for those faces where @FT_HAS_GLYPH_NAMES(face) returns~1. */ /* */ /* <Input> */ /* face :: A handle to a source face object. */ @@ -2805,12 +2860,12 @@ FT_BEGIN_HEADER /* copied to. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* An error is returned if the face doesn't provide glyph names or if */ /* the glyph index is invalid. In all cases of failure, the first */ - /* byte of `buffer' is set to 0 to indicate an empty name. */ + /* byte of `buffer' is set to~0 to indicate an empty name. */ /* */ /* The glyph name is truncated to fit within the buffer if it is too */ /* long. The returned string is always zero-terminated. */ @@ -2832,14 +2887,14 @@ FT_BEGIN_HEADER /* FT_Get_Postscript_Name */ /* */ /* <Description> */ - /* Retrieve the ASCII Postscript name of a given face, if available. */ - /* This only works with Postscript and TrueType fonts. */ + /* Retrieve the ASCII PostScript name of a given face, if available. */ + /* This only works with PostScript and TrueType fonts. */ /* */ /* <Input> */ /* face :: A handle to the source face object. */ /* */ /* <Return> */ - /* A pointer to the face's Postscript name. NULL if unavailable. */ + /* A pointer to the face's PostScript name. NULL if unavailable. */ /* */ /* <Note> */ /* The returned pointer is owned by the face and is destroyed with */ @@ -2865,7 +2920,7 @@ FT_BEGIN_HEADER /* encoding :: A handle to the selected encoding. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* This function returns an error if no charmap in the face */ @@ -2897,14 +2952,14 @@ FT_BEGIN_HEADER /* charmap :: A handle to the selected charmap. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* This function returns an error if the charmap is not part of */ /* the face (i.e., if it is not listed in the `face->charmaps' */ /* table). */ /* */ - /* It also fails if a type 14 charmap is selected. */ + /* It also fails if a type~14 charmap is selected. */ /* */ FT_EXPORT( FT_Error ) FT_Set_Charmap( FT_Face face, @@ -2947,13 +3002,13 @@ FT_BEGIN_HEADER /* charcode :: The character code. */ /* */ /* <Return> */ - /* The glyph index. 0 means `undefined character code'. */ + /* The glyph index. 0~means `undefined character code'. */ /* */ /* <Note> */ /* If you use FreeType to manipulate the contents of font files */ /* directly, be aware that the glyph index returned by this function */ /* doesn't always correspond to the internal indices used within */ - /* the file. This is done to ensure that value 0 always corresponds */ + /* the file. This is done to ensure that value~0 always corresponds */ /* to the `missing glyph'. */ /* */ FT_EXPORT( FT_UInt ) @@ -2975,7 +3030,7 @@ FT_BEGIN_HEADER /* face :: A handle to the source face object. */ /* */ /* <Output> */ - /* agindex :: Glyph index of first character code. 0 if charmap is */ + /* agindex :: Glyph index of first character code. 0~if charmap is */ /* empty. */ /* */ /* <Return> */ @@ -3000,9 +3055,9 @@ FT_BEGIN_HEADER /* } */ /* } */ /* */ - /* Note that `*agindex' is set to 0 if the charmap is empty. The */ - /* result itself can be 0 in two cases: if the charmap is empty or */ - /* when the value 0 is the first valid character code. */ + /* Note that `*agindex' is set to~0 if the charmap is empty. The */ + /* result itself can be~0 in two cases: if the charmap is empty or */ + /* if the value~0 is the first valid character code. */ /* */ FT_EXPORT( FT_ULong ) FT_Get_First_Char( FT_Face face, @@ -3024,7 +3079,7 @@ FT_BEGIN_HEADER /* char_code :: The starting character code. */ /* */ /* <Output> */ - /* agindex :: Glyph index of first character code. 0 if charmap */ + /* agindex :: Glyph index of next character code. 0~if charmap */ /* is empty. */ /* */ /* <Return> */ @@ -3035,7 +3090,7 @@ FT_BEGIN_HEADER /* over all character codes available in a given charmap. See the */ /* note for this function for a simple code example. */ /* */ - /* Note that `*agindex' is set to 0 when there are no more codes in */ + /* Note that `*agindex' is set to~0 when there are no more codes in */ /* the charmap. */ /* */ FT_EXPORT( FT_ULong ) @@ -3059,7 +3114,7 @@ FT_BEGIN_HEADER /* glyph_name :: The glyph name. */ /* */ /* <Return> */ - /* The glyph index. 0 means `undefined character code'. */ + /* The glyph index. 0~means `undefined character code'. */ /* */ FT_EXPORT( FT_UInt ) FT_Get_Name_Index( FT_Face face, @@ -3101,15 +3156,16 @@ FT_BEGIN_HEADER * * @description: * Retrieve a description of a given subglyph. Only use it if - * `glyph->format' is @FT_GLYPH_FORMAT_COMPOSITE, or an error is - * returned. + * `glyph->format' is @FT_GLYPH_FORMAT_COMPOSITE; an error is + * returned otherwise. * * @input: * glyph :: * The source glyph slot. * * sub_index :: - * The index of subglyph. Must be less than `glyph->num_subglyphs'. + * The index of the subglyph. Must be less than + * `glyph->num_subglyphs'. * * @output: * p_index :: @@ -3128,7 +3184,7 @@ FT_BEGIN_HEADER * The subglyph transformation (if any). * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * @note: * The values of `*p_arg1', `*p_arg2', and `*p_transform' must be @@ -3148,6 +3204,88 @@ FT_BEGIN_HEADER /*************************************************************************/ /* */ + /* <Enum> */ + /* FT_FSTYPE_XXX */ + /* */ + /* <Description> */ + /* A list of bit flags used in the `fsType' field of the OS/2 table */ + /* in a TrueType or OpenType font and the `FSType' entry in a */ + /* PostScript font. These bit flags are returned by */ + /* @FT_Get_FSType_Flags; they inform client applications of embedding */ + /* and subsetting restrictions associated with a font. */ + /* */ + /* See http://www.adobe.com/devnet/acrobat/pdfs/FontPolicies.pdf for */ + /* more details. */ + /* */ + /* <Values> */ + /* FT_FSTYPE_INSTALLABLE_EMBEDDING :: */ + /* Fonts with no fsType bit set may be embedded and permanently */ + /* installed on the remote system by an application. */ + /* */ + /* FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING :: */ + /* Fonts that have only this bit set must not be modified, embedded */ + /* or exchanged in any manner without first obtaining permission of */ + /* the font software copyright owner. */ + /* */ + /* FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING :: */ + /* If this bit is set, the font may be embedded and temporarily */ + /* loaded on the remote system. Documents containing Preview & */ + /* Print fonts must be opened `read-only'; no edits can be applied */ + /* to the document. */ + /* */ + /* FT_FSTYPE_EDITABLE_EMBEDDING :: */ + /* If this bit is set, the font may be embedded but must only be */ + /* installed temporarily on other systems. In contrast to Preview */ + /* & Print fonts, documents containing editable fonts may be opened */ + /* for reading, editing is permitted, and changes may be saved. */ + /* */ + /* FT_FSTYPE_NO_SUBSETTING :: */ + /* If this bit is set, the font may not be subsetted prior to */ + /* embedding. */ + /* */ + /* FT_FSTYPE_BITMAP_EMBEDDING_ONLY :: */ + /* If this bit is set, only bitmaps contained in the font may be */ + /* embedded; no outline data may be embedded. If there are no */ + /* bitmaps available in the font, then the font is unembeddable. */ + /* */ + /* <Note> */ + /* While the fsType flags can indicate that a font may be embedded, a */ + /* license with the font vendor may be separately required to use the */ + /* font in this way. */ + /* */ +#define FT_FSTYPE_INSTALLABLE_EMBEDDING 0x0000 +#define FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING 0x0002 +#define FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING 0x0004 +#define FT_FSTYPE_EDITABLE_EMBEDDING 0x0008 +#define FT_FSTYPE_NO_SUBSETTING 0x0100 +#define FT_FSTYPE_BITMAP_EMBEDDING_ONLY 0x0200 + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_FSType_Flags */ + /* */ + /* <Description> */ + /* Return the fsType flags for a font. */ + /* */ + /* <Input> */ + /* face :: A handle to the source face object. */ + /* */ + /* <Return> */ + /* The fsType flags, @FT_FSTYPE_XXX. */ + /* */ + /* <Note> */ + /* Use this function rather than directly reading the `fs_type' field */ + /* in the @PS_FontInfoRec structure which is only guaranteed to */ + /* return the correct results for Type~1 fonts. */ + /* */ + FT_EXPORT( FT_UShort ) + FT_Get_FSType_Flags( FT_Face face ); + + + /*************************************************************************/ + /* */ /* <Section> */ /* glyph_variants */ /* */ @@ -3155,8 +3293,8 @@ FT_BEGIN_HEADER /* Glyph Variants */ /* */ /* <Abstract> */ - /* The FreeType 2 interface to Unicode Ideographic Variation */ - /* Sequences (IVS), using the SFNT cmap format 14. */ + /* The FreeType~2 interface to Unicode Ideographic Variation */ + /* Sequences (IVS), using the SFNT cmap format~14. */ /* */ /* <Description> */ /* Many CJK characters have variant forms. They are a sort of grey */ @@ -3170,10 +3308,10 @@ FT_BEGIN_HEADER /* An IVS is registered and unique; for further details please refer */ /* to Unicode Technical Report #37, the Ideographic Variation */ /* Database. To date (October 2007), the character with the most */ - /* variants is U+908A, having 8 such IVS. */ + /* variants is U+908A, having 8~such IVS. */ /* */ /* Adobe and MS decided to support IVS with a new cmap subtable */ - /* (format 14). It is an odd subtable because it is not a mapping of */ + /* (format~14). It is an odd subtable because it is not a mapping of */ /* input code points to glyphs, but contains lists of all variants */ /* supported by the font. */ /* */ @@ -3205,7 +3343,7 @@ FT_BEGIN_HEADER /* The Unicode code point of the variation selector. */ /* */ /* <Return> */ - /* The glyph index. 0 means either `undefined character code', or */ + /* The glyph index. 0~means either `undefined character code', or */ /* `undefined selector code', or `no variation selector cmap */ /* subtable', or `current CharMap is not Unicode'. */ /* */ @@ -3213,7 +3351,7 @@ FT_BEGIN_HEADER /* If you use FreeType to manipulate the contents of font files */ /* directly, be aware that the glyph index returned by this function */ /* doesn't always correspond to the internal indices used within */ - /* the file. This is done to ensure that value 0 always corresponds */ + /* the file. This is done to ensure that value~0 always corresponds */ /* to the `missing glyph'. */ /* */ /* This function is only meaningful if */ @@ -3250,7 +3388,7 @@ FT_BEGIN_HEADER /* The Unicode codepoint of the variation selector. */ /* */ /* <Return> */ - /* 1 if found in the standard (Unicode) cmap, 0 if found in the */ + /* 1~if found in the standard (Unicode) cmap, 0~if found in the */ /* variation selector cmap, or -1 if it is not a variant. */ /* */ /* <Note> */ @@ -3284,7 +3422,7 @@ FT_BEGIN_HEADER /* no valid variant selector cmap subtable. */ /* */ /* <Note> */ - /* The last item in the array is 0; the array is owned by the */ + /* The last item in the array is~0; the array is owned by the */ /* @FT_Face object but can be overwritten or released on the next */ /* call to a FreeType function. */ /* */ @@ -3317,7 +3455,7 @@ FT_BEGIN_HEADER /* is empty. */ /* */ /* <Note> */ - /* The last item in the array is 0; the array is owned by the */ + /* The last item in the array is~0; the array is owned by the */ /* @FT_Face object but can be overwritten or released on the next */ /* call to a FreeType function. */ /* */ @@ -3351,7 +3489,7 @@ FT_BEGIN_HEADER /* is no valid cmap or the variant selector is invalid. */ /* */ /* <Note> */ - /* The last item in the array is 0; the array is owned by the */ + /* The last item in the array is~0; the array is owned by the */ /* @FT_Face object but can be overwritten or released on the next */ /* call to a FreeType function. */ /* */ @@ -3421,6 +3559,12 @@ FT_BEGIN_HEADER FT_Long c ); + /* */ + + /* The following #if 0 ... #endif is for the documentation formatter, */ + /* hiding the internal `FT_MULFIX_INLINED' macro. */ + +#if 0 /*************************************************************************/ /* */ /* <Function> */ @@ -3454,6 +3598,17 @@ FT_BEGIN_HEADER FT_MulFix( FT_Long a, FT_Long b ); + /* */ +#endif + +#ifdef FT_MULFIX_INLINED +#define FT_MulFix( a, b ) FT_MULFIX_INLINED( a, b ) +#else + FT_EXPORT( FT_Long ) + FT_MulFix( FT_Long a, + FT_Long b ); +#endif + /*************************************************************************/ /* */ @@ -3474,8 +3629,8 @@ FT_BEGIN_HEADER /* The result of `(a*0x10000)/b'. */ /* */ /* <Note> */ - /* The optimization for FT_DivFix() is simple: If (a << 16) fits in */ - /* 32 bits, then the division is computed directly. Otherwise, we */ + /* The optimization for FT_DivFix() is simple: If (a~<<~16) fits in */ + /* 32~bits, then the division is computed directly. Otherwise, we */ /* use a specialized version of @FT_MulDiv. */ /* */ FT_EXPORT( FT_Long ) @@ -3582,26 +3737,27 @@ FT_BEGIN_HEADER /************************************************************************* * - * @enum: - * FREETYPE_XXX + * @enum: + * FREETYPE_XXX * - * @description: - * These three macros identify the FreeType source code version. - * Use @FT_Library_Version to access them at runtime. + * @description: + * These three macros identify the FreeType source code version. + * Use @FT_Library_Version to access them at runtime. * - * @values: - * FREETYPE_MAJOR :: The major version number. - * FREETYPE_MINOR :: The minor version number. - * FREETYPE_PATCH :: The patch level. + * @values: + * FREETYPE_MAJOR :: The major version number. + * FREETYPE_MINOR :: The minor version number. + * FREETYPE_PATCH :: The patch level. + * + * @note: + * The version number of FreeType if built as a dynamic link library + * with the `libtool' package is _not_ controlled by these three + * macros. * - * @note: - * The version number of FreeType if built as a dynamic link library - * with the `libtool' package is _not_ controlled by these three - * macros. */ #define FREETYPE_MAJOR 2 #define FREETYPE_MINOR 3 -#define FREETYPE_PATCH 6 +#define FREETYPE_PATCH 9 /*************************************************************************/ @@ -3658,8 +3814,8 @@ FT_BEGIN_HEADER /* face :: A face handle. */ /* */ /* <Return> */ - /* 1 if this is a TrueType font that uses one of the patented */ - /* opcodes, 0 otherwise. */ + /* 1~if this is a TrueType font that uses one of the patented */ + /* opcodes, 0~otherwise. */ /* */ /* <Since> */ /* 2.3.5 */ @@ -3685,7 +3841,7 @@ FT_BEGIN_HEADER /* */ /* <Return> */ /* The old setting value. This will always be false if this is not */ - /* a SFNT font, or if the unpatented hinter is not compiled in this */ + /* an SFNT font, or if the unpatented hinter is not compiled in this */ /* instance of the library. */ /* */ /* <Since> */ diff --git a/src/3rdparty/freetype/include/freetype/ftadvanc.h b/src/3rdparty/freetype/include/freetype/ftadvanc.h new file mode 100644 index 0000000..b2451be --- /dev/null +++ b/src/3rdparty/freetype/include/freetype/ftadvanc.h @@ -0,0 +1,179 @@ +/***************************************************************************/ +/* */ +/* ftadvanc.h */ +/* */ +/* Quick computation of advance widths (specification only). */ +/* */ +/* Copyright 2008 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTADVANC_H__ +#define __FTADVANC_H__ + + +#include <ft2build.h> +#include FT_FREETYPE_H + +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + +FT_BEGIN_HEADER + + + /************************************************************************** + * + * @section: + * quick_advance + * + * @title: + * Quick retrieval of advance values + * + * @abstract: + * Retrieve horizontal and vertical advance values without processing + * glyph outlines, if possible. + * + * @description: + * This section contains functions to quickly extract advance values + * without handling glyph outlines, if possible. + */ + + + /*************************************************************************/ + /* */ + /* <Const> */ + /* FT_ADVANCE_FLAG_FAST_ONLY */ + /* */ + /* <Description> */ + /* A bit-flag to be OR-ed with the `flags' parameter of the */ + /* @FT_Get_Advance and @FT_Get_Advances functions. */ + /* */ + /* If set, it indicates that you want these functions to fail if the */ + /* corresponding hinting mode or font driver doesn't allow for very */ + /* quick advance computation. */ + /* */ + /* Typically, glyphs which are either unscaled, unhinted, bitmapped, */ + /* or light-hinted can have their advance width computed very */ + /* quickly. */ + /* */ + /* Normal and bytecode hinted modes, which require loading, scaling, */ + /* and hinting of the glyph outline, are extremely slow by */ + /* comparison. */ + /* */ +#define FT_ADVANCE_FLAG_FAST_ONLY 0x20000000UL + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Advance */ + /* */ + /* <Description> */ + /* Retrieve the advance value of a given glyph outline in an */ + /* @FT_Face. By default, the unhinted advance is returned in font */ + /* units. */ + /* */ + /* <Input> */ + /* face :: The source @FT_Face handle. */ + /* */ + /* gindex :: The glyph index. */ + /* */ + /* load_flags :: A set of bit flags similar to those used when */ + /* calling @FT_Load_Glyph, used to determine what kind */ + /* of advances you need. */ + /* <Output> */ + /* padvance :: The advance value, in either font units or 16.16 */ + /* format. */ + /* */ + /* If @FT_LOAD_VERTICAL_LAYOUT is set, this is the */ + /* vertical advance corresponding to a vertical layout. */ + /* Otherwise, it is the horizontal advance in a */ + /* horizontal layout. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. */ + /* */ + /* <Note> */ + /* This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and */ + /* if the corresponding font backend doesn't have a quick way to */ + /* retrieve the advances. */ + /* */ + /* A scaled advance is returned in 16.16 format but isn't transformed */ + /* by the affine transformation specified by @FT_Set_Transform. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Get_Advance( FT_Face face, + FT_UInt gindex, + FT_Int32 load_flags, + FT_Fixed *padvance ); + + + /*************************************************************************/ + /* */ + /* <Function> */ + /* FT_Get_Advances */ + /* */ + /* <Description> */ + /* Retrieve the advance values of several glyph outlines in an */ + /* @FT_Face. By default, the unhinted advances are returned in font */ + /* units. */ + /* */ + /* <Input> */ + /* face :: The source @FT_Face handle. */ + /* */ + /* start :: The first glyph index. */ + /* */ + /* count :: The number of advance values you want to retrieve. */ + /* */ + /* load_flags :: A set of bit flags similar to those used when */ + /* calling @FT_Load_Glyph. */ + /* */ + /* <Output> */ + /* padvance :: The advances, in either font units or 16.16 format. */ + /* This array must contain at least `count' elements. */ + /* */ + /* If @FT_LOAD_VERTICAL_LAYOUT is set, these are the */ + /* vertical advances corresponding to a vertical layout. */ + /* Otherwise, they are the horizontal advances in a */ + /* horizontal layout. */ + /* */ + /* <Return> */ + /* FreeType error code. 0 means success. */ + /* */ + /* <Note> */ + /* This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and */ + /* if the corresponding font backend doesn't have a quick way to */ + /* retrieve the advances. */ + /* */ + /* Scaled advances are returned in 16.16 format but aren't */ + /* transformed by the affine transformation specified by */ + /* @FT_Set_Transform. */ + /* */ + FT_EXPORT( FT_Error ) + FT_Get_Advances( FT_Face face, + FT_UInt start, + FT_UInt count, + FT_Int32 load_flags, + FT_Fixed *padvances ); + +/* */ + + +FT_END_HEADER + +#endif /* __FTADVANC_H__ */ + + +/* END */ diff --git a/src/3rdparty/freetype/include/freetype/ftbbox.h b/src/3rdparty/freetype/include/freetype/ftbbox.h index b11d316..5cfb9ff 100644 --- a/src/3rdparty/freetype/include/freetype/ftbbox.h +++ b/src/3rdparty/freetype/include/freetype/ftbbox.h @@ -58,7 +58,7 @@ FT_BEGIN_HEADER /* FT_Outline_Get_BBox */ /* */ /* <Description> */ - /* Computes the exact bounding box of an outline. This is slower */ + /* Compute the exact bounding box of an outline. This is slower */ /* than computing the control box. However, it uses an advanced */ /* algorithm which returns _very_ quickly when the two boxes */ /* coincide. Otherwise, the outline Bezier arcs are traversed to */ @@ -71,7 +71,7 @@ FT_BEGIN_HEADER /* abbox :: The outline's exact bounding box. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ FT_EXPORT( FT_Error ) FT_Outline_Get_BBox( FT_Outline* outline, diff --git a/src/3rdparty/freetype/include/freetype/ftbdf.h b/src/3rdparty/freetype/include/freetype/ftbdf.h index 9555694..4f8baf8 100644 --- a/src/3rdparty/freetype/include/freetype/ftbdf.h +++ b/src/3rdparty/freetype/include/freetype/ftbdf.h @@ -4,7 +4,7 @@ /* */ /* FreeType API for accessing BDF-specific strings (specification). */ /* */ -/* Copyright 2002, 2003, 2004, 2006 by */ +/* Copyright 2002, 2003, 2004, 2006, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -38,38 +38,39 @@ FT_BEGIN_HEADER /* bdf_fonts */ /* */ /* <Title> */ - /* BDF Files */ + /* BDF and PCF Files */ /* */ /* <Abstract> */ - /* BDF specific API. */ + /* BDF and PCF specific API. */ /* */ /* <Description> */ - /* This section contains the declaration of BDF specific functions. */ + /* This section contains the declaration of functions specific to BDF */ + /* and PCF fonts. */ /* */ /*************************************************************************/ - /********************************************************************** - * - * @enum: - * FT_PropertyType - * - * @description: - * A list of BDF property types. - * - * @values: - * BDF_PROPERTY_TYPE_NONE :: - * Value 0 is used to indicate a missing property. - * - * BDF_PROPERTY_TYPE_ATOM :: - * Property is a string atom. - * - * BDF_PROPERTY_TYPE_INTEGER :: - * Property is a 32-bit signed integer. - * - * BDF_PROPERTY_TYPE_CARDINAL :: - * Property is a 32-bit unsigned integer. - */ + /********************************************************************** + * + * @enum: + * FT_PropertyType + * + * @description: + * A list of BDF property types. + * + * @values: + * BDF_PROPERTY_TYPE_NONE :: + * Value~0 is used to indicate a missing property. + * + * BDF_PROPERTY_TYPE_ATOM :: + * Property is a string atom. + * + * BDF_PROPERTY_TYPE_INTEGER :: + * Property is a 32-bit signed integer. + * + * BDF_PROPERTY_TYPE_CARDINAL :: + * Property is a 32-bit unsigned integer. + */ typedef enum BDF_PropertyType_ { BDF_PROPERTY_TYPE_NONE = 0, @@ -80,15 +81,15 @@ FT_BEGIN_HEADER } BDF_PropertyType; - /********************************************************************** - * - * @type: - * BDF_Property - * - * @description: - * A handle to a @BDF_PropertyRec structure to model a given - * BDF/PCF property. - */ + /********************************************************************** + * + * @type: + * BDF_Property + * + * @description: + * A handle to a @BDF_PropertyRec structure to model a given + * BDF/PCF property. + */ typedef struct BDF_PropertyRec_* BDF_Property; @@ -132,7 +133,7 @@ FT_BEGIN_HEADER * FT_Get_BDF_Charset_ID * * @description: - * Retrieves a BDF font character set identity, according to + * Retrieve a BDF font character set identity, according to * the BDF specification. * * @input: @@ -141,13 +142,13 @@ FT_BEGIN_HEADER * * @output: * acharset_encoding :: - * Charset encoding, as a C string, owned by the face. + * Charset encoding, as a C~string, owned by the face. * * acharset_registry :: - * Charset registry, as a C string, owned by the face. + * Charset registry, as a C~string, owned by the face. * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * @note: * This function only works with BDF faces, returning an error otherwise. @@ -164,7 +165,7 @@ FT_BEGIN_HEADER * FT_Get_BDF_Property * * @description: - * Retrieves a BDF property from a BDF or PCF font file. + * Retrieve a BDF property from a BDF or PCF font file. * * @input: * face :: A handle to the input face. @@ -175,13 +176,21 @@ FT_BEGIN_HEADER * aproperty :: The property. * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * @note: * This function works with BDF _and_ PCF fonts. It returns an error * otherwise. It also returns an error if the property is not in the * font. * + * A `property' is a either key-value pair within the STARTPROPERTIES + * ... ENDPROPERTIES block of a BDF font or a key-value pair from the + * `info->props' array within a `FontRec' structure of a PCF font. + * + * Integer properties are always stored as `signed' within PCF fonts; + * consequently, @BDF_PROPERTY_TYPE_CARDINAL is a possible return value + * for BDF fonts only. + * * In case of error, `aproperty->type' is always set to * @BDF_PROPERTY_TYPE_NONE. */ diff --git a/src/3rdparty/freetype/include/freetype/ftbitmap.h b/src/3rdparty/freetype/include/freetype/ftbitmap.h index 337d888..9274236 100644 --- a/src/3rdparty/freetype/include/freetype/ftbitmap.h +++ b/src/3rdparty/freetype/include/freetype/ftbitmap.h @@ -2,10 +2,9 @@ /* */ /* ftbitmap.h */ /* */ -/* FreeType utility functions for converting 1bpp, 2bpp, 4bpp, and 8bpp */ -/* bitmaps into 8bpp format (specification). */ +/* FreeType utility functions for bitmaps (specification). */ /* */ -/* Copyright 2004, 2005, 2006 by */ +/* Copyright 2004, 2005, 2006, 2008 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -72,7 +71,7 @@ FT_BEGIN_HEADER /* FT_Bitmap_Copy */ /* */ /* <Description> */ - /* Copies an bitmap into another one. */ + /* Copy a bitmap into another one. */ /* */ /* <Input> */ /* library :: A handle to a library object. */ @@ -83,7 +82,7 @@ FT_BEGIN_HEADER /* target :: A handle to the target bitmap. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ FT_EXPORT( FT_Error ) FT_Bitmap_Copy( FT_Library library, @@ -114,14 +113,14 @@ FT_BEGIN_HEADER /* bitmap :: A handle to the target bitmap. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* The current implementation restricts `xStrength' to be less than */ - /* or equal to 8 if bitmap is of pixel_mode @FT_PIXEL_MODE_MONO. */ + /* or equal to~8 if bitmap is of pixel_mode @FT_PIXEL_MODE_MONO. */ /* */ /* If you want to embolden the bitmap owned by a @FT_GlyphSlotRec, */ - /* you should call `FT_GlyphSlot_Own_Bitmap' on the slot first. */ + /* you should call @FT_GlyphSlot_Own_Bitmap on the slot first. */ /* */ FT_EXPORT( FT_Error ) FT_Bitmap_Embolden( FT_Library library, @@ -152,7 +151,7 @@ FT_BEGIN_HEADER /* target :: The target bitmap. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* It is possible to call @FT_Bitmap_Convert multiple times without */ @@ -173,6 +172,28 @@ FT_BEGIN_HEADER /*************************************************************************/ /* */ /* <Function> */ + /* FT_GlyphSlot_Own_Bitmap */ + /* */ + /* <Description> */ + /* Make sure that a glyph slot owns `slot->bitmap'. */ + /* */ + /* <Input> */ + /* slot :: The glyph slot. */ + /* */ + /* <Return> */ + /* FreeType error code. 0~means success. */ + /* */ + /* <Note> */ + /* This function is to be used in combination with */ + /* @FT_Bitmap_Embolden. */ + /* */ + FT_EXPORT( FT_Error ) + FT_GlyphSlot_Own_Bitmap( FT_GlyphSlot slot ); + + + /*************************************************************************/ + /* */ + /* <Function> */ /* FT_Bitmap_Done */ /* */ /* <Description> */ @@ -184,7 +205,7 @@ FT_BEGIN_HEADER /* bitmap :: The bitmap object to be freed. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* The `library' argument is taken to have access to FreeType's */ diff --git a/src/3rdparty/freetype/include/freetype/ftcache.h b/src/3rdparty/freetype/include/freetype/ftcache.h index 805df78..0916d70 100644 --- a/src/3rdparty/freetype/include/freetype/ftcache.h +++ b/src/3rdparty/freetype/include/freetype/ftcache.h @@ -36,10 +36,10 @@ FT_BEGIN_HEADER * Cache Sub-System * * <Abstract> - * How to cache face, size, and glyph data with FreeType 2. + * How to cache face, size, and glyph data with FreeType~2. * * <Description> - * This section describes the FreeType 2 cache sub-system, which is used + * This section describes the FreeType~2 cache sub-system, which is used * to limit the number of concurrently opened @FT_Face and @FT_Size * objects, as well as caching information like character maps and glyph * images while limiting their maximum memory usage. @@ -193,7 +193,7 @@ FT_BEGIN_HEADER * A new @FT_Face handle. * * <Return> - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * <Note> * The third parameter `req_data' is the same as the one passed by the @@ -260,7 +260,7 @@ FT_BEGIN_HEADER /* */ /* <Description> */ /* An opaque handle to a cache node object. Each cache node is */ - /* reference-counted. A node with a count of 0 might be flushed */ + /* reference-counted. A node with a count of~0 might be flushed */ /* out of a full cache whenever a lookup request is performed. */ /* */ /* If you lookup nodes, you have the ability to `acquire' them, i.e., */ @@ -279,19 +279,19 @@ FT_BEGIN_HEADER /* FTC_Manager_New */ /* */ /* <Description> */ - /* Creates a new cache manager. */ + /* Create a new cache manager. */ /* */ /* <Input> */ /* library :: The parent FreeType library handle to use. */ /* */ /* max_faces :: Maximum number of opened @FT_Face objects managed by */ - /* this cache instance. Use 0 for defaults. */ + /* this cache instance. Use~0 for defaults. */ /* */ /* max_sizes :: Maximum number of opened @FT_Size objects managed by */ - /* this cache instance. Use 0 for defaults. */ + /* this cache instance. Use~0 for defaults. */ /* */ /* max_bytes :: Maximum number of bytes to use for cached data nodes. */ - /* Use 0 for defaults. Note that this value does not */ + /* Use~0 for defaults. Note that this value does not */ /* account for managed @FT_Face and @FT_Size objects. */ /* */ /* requester :: An application-provided callback used to translate */ @@ -301,11 +301,11 @@ FT_BEGIN_HEADER /* each time it is called (see @FTC_Face_Requester). */ /* */ /* <Output> */ - /* amanager :: A handle to a new manager object. 0 in case of */ + /* amanager :: A handle to a new manager object. 0~in case of */ /* failure. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ FT_EXPORT( FT_Error ) FTC_Manager_New( FT_Library library, @@ -323,7 +323,7 @@ FT_BEGIN_HEADER /* FTC_Manager_Reset */ /* */ /* <Description> */ - /* Empties a given cache manager. This simply gets rid of all the */ + /* Empty a given cache manager. This simply gets rid of all the */ /* currently cached @FT_Face and @FT_Size objects within the manager. */ /* */ /* <InOut> */ @@ -339,7 +339,7 @@ FT_BEGIN_HEADER /* FTC_Manager_Done */ /* */ /* <Description> */ - /* Destroys a given manager after emptying it. */ + /* Destroy a given manager after emptying it. */ /* */ /* <Input> */ /* manager :: A handle to the target cache manager object. */ @@ -354,7 +354,7 @@ FT_BEGIN_HEADER /* FTC_Manager_LookupFace */ /* */ /* <Description> */ - /* Retrieves the @FT_Face object that corresponds to a given face ID */ + /* Retrieve the @FT_Face object that corresponds to a given face ID */ /* through a cache manager. */ /* */ /* <Input> */ @@ -366,7 +366,7 @@ FT_BEGIN_HEADER /* aface :: A handle to the face object. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* The returned @FT_Face object is always owned by the manager. You */ @@ -415,10 +415,10 @@ FT_BEGIN_HEADER /* interpreted as integer pixel character sizes. */ /* Otherwise, they are expressed as 1/64th of points. */ /* */ - /* x_res :: Only used when `pixel' is value 0 to indicate the */ + /* x_res :: Only used when `pixel' is value~0 to indicate the */ /* horizontal resolution in dpi. */ /* */ - /* y_res :: Only used when `pixel' is value 0 to indicate the */ + /* y_res :: Only used when `pixel' is value~0 to indicate the */ /* vertical resolution in dpi. */ /* */ /* <Note> */ @@ -466,7 +466,7 @@ FT_BEGIN_HEADER /* asize :: A handle to the size object. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* The returned @FT_Size object is always owned by the manager. You */ @@ -580,7 +580,7 @@ FT_BEGIN_HEADER * A new cache handle. NULL in case of error. * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * @note: * Like all other caches, this one will be destroyed with the cache @@ -609,13 +609,14 @@ FT_BEGIN_HEADER * The source face ID. * * cmap_index :: - * The index of the charmap in the source face. + * The index of the charmap in the source face. Any negative value + * means to use the cache @FT_Face's default charmap. * * char_code :: * The character code (in the corresponding charmap). * * @return: - * Glyph index. 0 means `no glyph'. + * Glyph index. 0~means `no glyph'. * */ FT_EXPORT( FT_UInt ) @@ -721,7 +722,7 @@ FT_BEGIN_HEADER /* FTC_ImageCache_New */ /* */ /* <Description> */ - /* Creates a new glyph image cache. */ + /* Create a new glyph image cache. */ /* */ /* <Input> */ /* manager :: The parent manager for the image cache. */ @@ -730,7 +731,7 @@ FT_BEGIN_HEADER /* acache :: A handle to the new glyph image cache object. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ FT_EXPORT( FT_Error ) FTC_ImageCache_New( FTC_Manager manager, @@ -743,7 +744,7 @@ FT_BEGIN_HEADER /* FTC_ImageCache_Lookup */ /* */ /* <Description> */ - /* Retrieves a given glyph image from a glyph image cache. */ + /* Retrieve a given glyph image from a glyph image cache. */ /* */ /* <Input> */ /* cache :: A handle to the source glyph image cache. */ @@ -753,7 +754,7 @@ FT_BEGIN_HEADER /* gindex :: The glyph index to retrieve. */ /* */ /* <Output> */ - /* aglyph :: The corresponding @FT_Glyph object. 0 in case of */ + /* aglyph :: The corresponding @FT_Glyph object. 0~in case of */ /* failure. */ /* */ /* anode :: Used to return the address of of the corresponding cache */ @@ -761,7 +762,7 @@ FT_BEGIN_HEADER /* below). */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* The returned glyph is owned and managed by the glyph image cache. */ @@ -806,7 +807,7 @@ FT_BEGIN_HEADER /* gindex :: The glyph index to retrieve. */ /* */ /* <Output> */ - /* aglyph :: The corresponding @FT_Glyph object. 0 in case of */ + /* aglyph :: The corresponding @FT_Glyph object. 0~in case of */ /* failure. */ /* */ /* anode :: Used to return the address of of the corresponding */ @@ -814,7 +815,7 @@ FT_BEGIN_HEADER /* (see note below). */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* The returned glyph is owned and managed by the glyph image cache. */ @@ -832,6 +833,9 @@ FT_BEGIN_HEADER /* call to one of the caching sub-system APIs. Don't assume that it */ /* is persistent! */ /* */ + /* Calls to @FT_Set_Char_Size and friends have no effect on cached */ + /* glyphs; you should always use the FreeType cache API instead. */ + /* */ FT_EXPORT( FT_Error ) FTC_ImageCache_LookupScaler( FTC_ImageCache cache, FTC_Scaler scaler, @@ -873,11 +877,11 @@ FT_BEGIN_HEADER /* top :: The vertical distance from the pen position (on the */ /* baseline) to the upper bitmap border (a.k.a. `top */ /* side bearing'). The distance is positive for upwards */ - /* Y coordinates. */ + /* y~coordinates. */ /* */ /* format :: The format of the glyph bitmap (monochrome or gray). */ /* */ - /* max_grays :: Maximum gray level value (in the range 1 to 255). */ + /* max_grays :: Maximum gray level value (in the range 1 to~255). */ /* */ /* pitch :: The number of bytes per bitmap line. May be positive */ /* or negative. */ @@ -926,7 +930,7 @@ FT_BEGIN_HEADER /* FTC_SBitCache_New */ /* */ /* <Description> */ - /* Creates a new cache to store small glyph bitmaps. */ + /* Create a new cache to store small glyph bitmaps. */ /* */ /* <Input> */ /* manager :: A handle to the source cache manager. */ @@ -935,7 +939,7 @@ FT_BEGIN_HEADER /* acache :: A handle to the new sbit cache. NULL in case of error. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ FT_EXPORT( FT_Error ) FTC_SBitCache_New( FTC_Manager manager, @@ -948,7 +952,7 @@ FT_BEGIN_HEADER /* FTC_SBitCache_Lookup */ /* */ /* <Description> */ - /* Looks up a given small glyph bitmap in a given sbit cache and */ + /* Look up a given small glyph bitmap in a given sbit cache and */ /* `lock' it to prevent its flushing from the cache until needed. */ /* */ /* <Input> */ @@ -966,7 +970,7 @@ FT_BEGIN_HEADER /* below). */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* The small bitmap descriptor and its bit buffer are owned by the */ @@ -974,7 +978,7 @@ FT_BEGIN_HEADER /* as well disappear from memory on the next cache lookup, so don't */ /* treat them as persistent data. */ /* */ - /* The descriptor's `buffer' field is set to 0 to indicate a missing */ + /* The descriptor's `buffer' field is set to~0 to indicate a missing */ /* glyph bitmap. */ /* */ /* If `anode' is _not_ NULL, it receives the address of the cache */ @@ -1021,7 +1025,7 @@ FT_BEGIN_HEADER /* (see note below). */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* The small bitmap descriptor and its bit buffer are owned by the */ @@ -1029,7 +1033,7 @@ FT_BEGIN_HEADER /* as well disappear from memory on the next cache lookup, so don't */ /* treat them as persistent data. */ /* */ - /* The descriptor's `buffer' field is set to 0 to indicate a missing */ + /* The descriptor's `buffer' field is set to~0 to indicate a missing */ /* glyph bitmap. */ /* */ /* If `anode' is _not_ NULL, it receives the address of the cache */ diff --git a/src/3rdparty/freetype/include/freetype/ftchapters.h b/src/3rdparty/freetype/include/freetype/ftchapters.h index 4c61824..7775a6b 100644 --- a/src/3rdparty/freetype/include/freetype/ftchapters.h +++ b/src/3rdparty/freetype/include/freetype/ftchapters.h @@ -90,6 +90,7 @@ /* computations */ /* list_processing */ /* outline_processing */ +/* quick_advance */ /* bitmap_handling */ /* raster */ /* glyph_stroker */ diff --git a/src/3rdparty/freetype/include/freetype/ftcid.h b/src/3rdparty/freetype/include/freetype/ftcid.h index f0387f0..203a30c 100644 --- a/src/3rdparty/freetype/include/freetype/ftcid.h +++ b/src/3rdparty/freetype/include/freetype/ftcid.h @@ -4,7 +4,7 @@ /* */ /* FreeType API for accessing CID font information (specification). */ /* */ -/* Copyright 2007 by Dereg Clegg. */ +/* Copyright 2007, 2009 by Dereg Clegg, Michael Toftdal. */ /* */ /* This file is part of the FreeType project, and may only be used, */ /* modified, and distributed under the terms of the FreeType project */ @@ -64,16 +64,16 @@ FT_BEGIN_HEADER * * @output: * registry :: - * The registry, as a C string, owned by the face. + * The registry, as a C~string, owned by the face. * * ordering :: - * The ordering, as a C string, owned by the face. + * The ordering, as a C~string, owned by the face. * * supplement :: * The supplement. * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * @note: * This function only works with CID faces, returning an error @@ -88,6 +88,74 @@ FT_BEGIN_HEADER const char* *ordering, FT_Int *supplement); + + /********************************************************************** + * + * @function: + * FT_Get_CID_Is_Internally_CID_Keyed + * + * @description: + * Retrieve the type of the input face, CID keyed or not. In + * constrast to the @FT_IS_CID_KEYED macro this function returns + * successfully also for CID-keyed fonts in an SNFT wrapper. + * + * @input: + * face :: + * A handle to the input face. + * + * @output: + * is_cid :: + * The type of the face as an @FT_Bool. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with CID faces and OpenType fonts, + * returning an error otherwise. + * + * @since: + * 2.3.9 + */ + FT_EXPORT( FT_Error ) + FT_Get_CID_Is_Internally_CID_Keyed( FT_Face face, + FT_Bool *is_cid ); + + + /********************************************************************** + * + * @function: + * FT_Get_CID_From_Glyph_Index + * + * @description: + * Retrieve the CID of the input glyph index. + * + * @input: + * face :: + * A handle to the input face. + * + * glyph_index :: + * The input glyph index. + * + * @output: + * cid :: + * The CID as an @FT_UInt. + * + * @return: + * FreeType error code. 0~means success. + * + * @note: + * This function only works with CID faces and OpenType fonts, + * returning an error otherwise. + * + * @since: + * 2.3.9 + */ + FT_EXPORT( FT_Error ) + FT_Get_CID_From_Glyph_Index( FT_Face face, + FT_UInt glyph_index, + FT_UInt *cid ); + /* */ FT_END_HEADER diff --git a/src/3rdparty/freetype/include/freetype/ftgasp.h b/src/3rdparty/freetype/include/freetype/ftgasp.h index 2692c31..91a769e 100644 --- a/src/3rdparty/freetype/include/freetype/ftgasp.h +++ b/src/3rdparty/freetype/include/freetype/ftgasp.h @@ -22,6 +22,13 @@ #include <ft2build.h> #include FT_FREETYPE_H +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + + /*************************************************************************** * * @section: @@ -31,11 +38,11 @@ * Gasp Table * * @abstract: - * Retrieving TrueType `gasp' table entries + * Retrieving TrueType `gasp' table entries. * * @description: * The function @FT_Get_Gasp can be used to query a TrueType or OpenType - * font for specific entries in their `gasp' table, if any. This is + * font for specific entries in its `gasp' table, if any. This is * mainly useful when implementing native TrueType hinting with the * bytecode interpreter to duplicate the Windows text rendering results. */ diff --git a/src/3rdparty/freetype/include/freetype/ftglyph.h b/src/3rdparty/freetype/include/freetype/ftglyph.h index 35574ca..c3c5733 100644 --- a/src/3rdparty/freetype/include/freetype/ftglyph.h +++ b/src/3rdparty/freetype/include/freetype/ftglyph.h @@ -4,7 +4,7 @@ /* */ /* FreeType convenience functions to handle glyphs (specification). */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2006 by */ +/* Copyright 1996-2001, 2002, 2003, 2006, 2008, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -145,7 +145,7 @@ FT_BEGIN_HEADER /* */ /* top :: The top-side bearing, i.e., the vertical distance from */ /* the current pen position to the top border of the glyph */ - /* bitmap. This distance is positive for upwards-y! */ + /* bitmap. This distance is positive for upwards~y! */ /* */ /* bitmap :: A descriptor for the bitmap. */ /* */ @@ -194,7 +194,7 @@ FT_BEGIN_HEADER /* outline :: A descriptor for the outline. */ /* */ /* <Note> */ - /* You can typecast a @FT_Glyph to @FT_OutlineGlyph if you have */ + /* You can typecast an @FT_Glyph to @FT_OutlineGlyph if you have */ /* `glyph->format == FT_GLYPH_FORMAT_OUTLINE'. This lets you access */ /* the outline's content easily. */ /* */ @@ -219,7 +219,8 @@ FT_BEGIN_HEADER /* FT_Get_Glyph */ /* */ /* <Description> */ - /* A function used to extract a glyph image from a slot. */ + /* A function used to extract a glyph image from a slot. Note that */ + /* the created @FT_Glyph object must be released with @FT_Done_Glyph. */ /* */ /* <Input> */ /* slot :: A handle to the source glyph slot. */ @@ -228,7 +229,7 @@ FT_BEGIN_HEADER /* aglyph :: A handle to the glyph object. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ FT_EXPORT( FT_Error ) FT_Get_Glyph( FT_GlyphSlot slot, @@ -248,11 +249,11 @@ FT_BEGIN_HEADER /* source :: A handle to the source glyph object. */ /* */ /* <Output> */ - /* target :: A handle to the target glyph object. 0 in case of */ + /* target :: A handle to the target glyph object. 0~in case of */ /* error. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ FT_EXPORT( FT_Error ) FT_Glyph_Copy( FT_Glyph source, @@ -265,7 +266,7 @@ FT_BEGIN_HEADER /* FT_Glyph_Transform */ /* */ /* <Description> */ - /* Transforms a glyph image if its format is scalable. */ + /* Transform a glyph image if its format is scalable. */ /* */ /* <InOut> */ /* glyph :: A handle to the target glyph object. */ @@ -375,7 +376,7 @@ FT_BEGIN_HEADER /* expressed in 1/64th of pixels if it is grid-fitted. */ /* */ /* <Note> */ - /* Coordinates are relative to the glyph origin, using the Y-upwards */ + /* Coordinates are relative to the glyph origin, using the y~upwards */ /* convention. */ /* */ /* If the glyph has been loaded with @FT_LOAD_NO_SCALE, `bbox_mode' */ @@ -421,17 +422,17 @@ FT_BEGIN_HEADER /* FT_Glyph_To_Bitmap */ /* */ /* <Description> */ - /* Converts a given glyph object to a bitmap glyph object. */ + /* Convert a given glyph object to a bitmap glyph object. */ /* */ /* <InOut> */ /* the_glyph :: A pointer to a handle to the target glyph. */ /* */ /* <Input> */ - /* render_mode :: An enumeration that describe how the data is */ + /* render_mode :: An enumeration that describes how the data is */ /* rendered. */ /* */ /* origin :: A pointer to a vector used to translate the glyph */ - /* image before rendering. Can be 0 (if no */ + /* image before rendering. Can be~0 (if no */ /* translation). The origin is expressed in */ /* 26.6 pixels. */ /* */ @@ -440,15 +441,17 @@ FT_BEGIN_HEADER /* never destroyed in case of error. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ + /* This function does nothing if the glyph format isn't scalable. */ + /* */ /* The glyph image is translated with the `origin' vector before */ /* rendering. */ /* */ /* The first parameter is a pointer to an @FT_Glyph handle, that will */ - /* be replaced by this function. Typically, you would use (omitting */ - /* error handling): */ + /* be _replaced_ by this function (with newly allocated data). */ + /* Typically, you would use (omitting error handling): */ /* */ /* */ /* { */ @@ -462,12 +465,12 @@ FT_BEGIN_HEADER /* // extract glyph image */ /* error = FT_Get_Glyph( face->glyph, &glyph ); */ /* */ - /* // convert to a bitmap (default render mode + destroy old) */ + /* // convert to a bitmap (default render mode + destroying old) */ /* if ( glyph->format != FT_GLYPH_FORMAT_BITMAP ) */ /* { */ /* error = FT_Glyph_To_Bitmap( &glyph, FT_RENDER_MODE_DEFAULT, */ /* 0, 1 ); */ - /* if ( error ) // glyph unchanged */ + /* if ( error ) // `glyph' unchanged */ /* ... */ /* } */ /* */ @@ -482,7 +485,42 @@ FT_BEGIN_HEADER /* } */ /* */ /* */ - /* This function does nothing if the glyph format isn't scalable. */ + /* Here another example, again without error handling: */ + /* */ + /* */ + /* { */ + /* FT_Glyph glyphs[MAX_GLYPHS] */ + /* */ + /* */ + /* ... */ + /* */ + /* for ( idx = 0; i < MAX_GLYPHS; i++ ) */ + /* error = FT_Load_Glyph( face, idx, FT_LOAD_DEFAULT ) || */ + /* FT_Get_Glyph ( face->glyph, &glyph[idx] ); */ + /* */ + /* ... */ + /* */ + /* for ( idx = 0; i < MAX_GLYPHS; i++ ) */ + /* { */ + /* FT_Glyph bitmap = glyphs[idx]; */ + /* */ + /* */ + /* ... */ + /* */ + /* // after this call, `bitmap' no longer points into */ + /* // the `glyphs' array (and the old value isn't destroyed) */ + /* FT_Glyph_To_Bitmap( &bitmap, FT_RENDER_MODE_MONO, 0, 0 ); */ + /* */ + /* ... */ + /* */ + /* FT_Done_Glyph( bitmap ); */ + /* } */ + /* */ + /* ... */ + /* */ + /* for ( idx = 0; i < MAX_GLYPHS; i++ ) */ + /* FT_Done_Glyph( glyphs[idx] ); */ + /* } */ /* */ FT_EXPORT( FT_Error ) FT_Glyph_To_Bitmap( FT_Glyph* the_glyph, @@ -497,7 +535,7 @@ FT_BEGIN_HEADER /* FT_Done_Glyph */ /* */ /* <Description> */ - /* Destroys a given glyph. */ + /* Destroy a given glyph. */ /* */ /* <Input> */ /* glyph :: A handle to the target glyph object. */ @@ -524,7 +562,7 @@ FT_BEGIN_HEADER /* FT_Matrix_Multiply */ /* */ /* <Description> */ - /* Performs the matrix operation `b = a*b'. */ + /* Perform the matrix operation `b = a*b'. */ /* */ /* <Input> */ /* a :: A pointer to matrix `a'. */ @@ -546,14 +584,14 @@ FT_BEGIN_HEADER /* FT_Matrix_Invert */ /* */ /* <Description> */ - /* Inverts a 2x2 matrix. Returns an error if it can't be inverted. */ + /* Invert a 2x2 matrix. Return an error if it can't be inverted. */ /* */ /* <InOut> */ /* matrix :: A pointer to the target matrix. Remains untouched in */ /* case of error. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ FT_EXPORT( FT_Error ) FT_Matrix_Invert( FT_Matrix* matrix ); diff --git a/src/3rdparty/freetype/include/freetype/ftgxval.h b/src/3rdparty/freetype/include/freetype/ftgxval.h index c7ea861..497015c 100644 --- a/src/3rdparty/freetype/include/freetype/ftgxval.h +++ b/src/3rdparty/freetype/include/freetype/ftgxval.h @@ -202,7 +202,7 @@ FT_BEGIN_HEADER * The array itself must be allocated by a client. * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * @note: * This function only works with TrueTypeGX fonts, returning an error @@ -285,14 +285,14 @@ FT_BEGIN_HEADER * FT_ClassicKern_Validate * * @description: - * Validate classic (16bit format) kern table to assure that the offsets + * Validate classic (16-bit format) kern table to assure that the offsets * and indices are valid. The idea is that a higher-level library which * actually does the text layout can access those tables without error * checking (which can be quite time consuming). * * The `kern' table validator in @FT_TrueTypeGX_Validate deals with both - * the new 32bit format and the classic 16bit format, while - * FT_ClassicKern_Validate only supports the classic 16bit format. + * the new 32-bit format and the classic 16-bit format, while + * FT_ClassicKern_Validate only supports the classic 16-bit format. * * @input: * face :: @@ -307,7 +307,7 @@ FT_BEGIN_HEADER * A pointer to the kern table. * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * @note: * After use, the application should deallocate the buffers pointed to by diff --git a/src/3rdparty/freetype/include/freetype/ftgzip.h b/src/3rdparty/freetype/include/freetype/ftgzip.h index 9893437..acbc4f0 100644 --- a/src/3rdparty/freetype/include/freetype/ftgzip.h +++ b/src/3rdparty/freetype/include/freetype/ftgzip.h @@ -66,7 +66,7 @@ FT_BEGIN_HEADER * The source stream. * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * @note: * The source stream must be opened _before_ calling this function. diff --git a/src/3rdparty/freetype/include/freetype/ftimage.h b/src/3rdparty/freetype/include/freetype/ftimage.h index ccfda37..25a9b1b 100644 --- a/src/3rdparty/freetype/include/freetype/ftimage.h +++ b/src/3rdparty/freetype/include/freetype/ftimage.h @@ -53,7 +53,7 @@ FT_BEGIN_HEADER /* <Description> */ /* The type FT_Pos is a 32-bit integer used to store vectorial */ /* coordinates. Depending on the context, these can represent */ - /* distances in integer font units, or 16,16, or 26.6 fixed float */ + /* distances in integer font units, or 16.16, or 26.6 fixed float */ /* pixel coordinates. */ /* */ typedef signed long FT_Pos; @@ -119,39 +119,40 @@ FT_BEGIN_HEADER /* */ /* <Values> */ /* FT_PIXEL_MODE_NONE :: */ - /* Value 0 is reserved. */ + /* Value~0 is reserved. */ /* */ /* FT_PIXEL_MODE_MONO :: */ - /* A monochrome bitmap, using 1 bit per pixel. Note that pixels */ + /* A monochrome bitmap, using 1~bit per pixel. Note that pixels */ /* are stored in most-significant order (MSB), which means that */ /* the left-most pixel in a byte has value 128. */ /* */ /* FT_PIXEL_MODE_GRAY :: */ /* An 8-bit bitmap, generally used to represent anti-aliased glyph */ /* images. Each pixel is stored in one byte. Note that the number */ - /* of value `gray' levels is stored in the `num_bytes' field of */ - /* the @FT_Bitmap structure (it generally is 256). */ + /* of `gray' levels is stored in the `num_grays' field of the */ + /* @FT_Bitmap structure (it generally is 256). */ /* */ /* FT_PIXEL_MODE_GRAY2 :: */ - /* A 2-bit/pixel bitmap, used to represent embedded anti-aliased */ - /* bitmaps in font files according to the OpenType specification. */ - /* We haven't found a single font using this format, however. */ + /* A 2-bit per pixel bitmap, used to represent embedded */ + /* anti-aliased bitmaps in font files according to the OpenType */ + /* specification. We haven't found a single font using this */ + /* format, however. */ /* */ /* FT_PIXEL_MODE_GRAY4 :: */ - /* A 4-bit/pixel bitmap, used to represent embedded anti-aliased */ + /* A 4-bit per pixel bitmap, representing embedded anti-aliased */ /* bitmaps in font files according to the OpenType specification. */ /* We haven't found a single font using this format, however. */ /* */ /* FT_PIXEL_MODE_LCD :: */ - /* An 8-bit bitmap, used to represent RGB or BGR decimated glyph */ - /* images used for display on LCD displays; the bitmap is three */ - /* times wider than the original glyph image. See also */ + /* An 8-bit bitmap, representing RGB or BGR decimated glyph images */ + /* used for display on LCD displays; the bitmap is three times */ + /* wider than the original glyph image. See also */ /* @FT_RENDER_MODE_LCD. */ /* */ /* FT_PIXEL_MODE_LCD_V :: */ - /* An 8-bit bitmap, used to represent RGB or BGR decimated glyph */ - /* images used for display on rotated LCD displays; the bitmap */ - /* is three times taller than the original glyph image. See also */ + /* An 8-bit bitmap, representing RGB or BGR decimated glyph images */ + /* used for display on rotated LCD displays; the bitmap is three */ + /* times taller than the original glyph image. See also */ /* @FT_RENDER_MODE_LCD_V. */ /* */ typedef enum FT_Pixel_Mode_ @@ -207,10 +208,10 @@ FT_BEGIN_HEADER /* used with ft_pixel_mode_pal4 and ft_pixel_mode_pal8. */ /* */ /* <Values> */ - /* ft_palette_mode_rgb :: The palette is an array of 3-bytes RGB */ + /* ft_palette_mode_rgb :: The palette is an array of 3-byte RGB */ /* records. */ /* */ - /* ft_palette_mode_rgba :: The palette is an array of 4-bytes RGBA */ + /* ft_palette_mode_rgba :: The palette is an array of 4-byte RGBA */ /* records. */ /* */ /* <Note> */ @@ -317,11 +318,11 @@ FT_BEGIN_HEADER /* elements, giving the outline's point coordinates. */ /* */ /* tags :: A pointer to an array of `n_points' chars, giving */ - /* each outline point's type. If bit 0 is unset, the */ + /* each outline point's type. If bit~0 is unset, the */ /* point is `off' the curve, i.e., a Bezier control */ /* point, while it is `on' when set. */ /* */ - /* Bit 1 is meaningful for `off' points only. If set, */ + /* Bit~1 is meaningful for `off' points only. If set, */ /* it indicates a third-order Bezier arc control point; */ /* and a second-order control point if unset. */ /* */ @@ -352,67 +353,73 @@ FT_BEGIN_HEADER /*************************************************************************/ /* */ /* <Enum> */ - /* FT_OUTLINE_FLAGS */ + /* FT_OUTLINE_FLAGS */ /* */ /* <Description> */ /* A list of bit-field constants use for the flags in an outline's */ /* `flags' field. */ /* */ /* <Values> */ - /* FT_OUTLINE_NONE :: Value 0 is reserved. */ - /* */ - /* FT_OUTLINE_OWNER :: If set, this flag indicates that the */ - /* outline's field arrays (i.e., */ - /* `points', `flags' & `contours') are */ - /* `owned' by the outline object, and */ - /* should thus be freed when it is */ - /* destroyed. */ - /* */ - /* FT_OUTLINE_EVEN_ODD_FILL :: By default, outlines are filled using */ - /* the non-zero winding rule. If set to */ - /* 1, the outline will be filled using */ - /* the even-odd fill rule (only works */ - /* with the smooth raster). */ - /* */ - /* FT_OUTLINE_REVERSE_FILL :: By default, outside contours of an */ - /* outline are oriented in clock-wise */ - /* direction, as defined in the TrueType */ - /* specification. This flag is set if */ - /* the outline uses the opposite */ - /* direction (typically for Type 1 */ - /* fonts). This flag is ignored by the */ - /* scan-converter. */ - /* */ - /* FT_OUTLINE_IGNORE_DROPOUTS :: By default, the scan converter will */ - /* try to detect drop-outs in an outline */ - /* and correct the glyph bitmap to */ - /* ensure consistent shape continuity. */ - /* If set, this flag hints the scan-line */ - /* converter to ignore such cases. */ - /* */ - /* FT_OUTLINE_HIGH_PRECISION :: This flag indicates that the */ - /* scan-line converter should try to */ - /* convert this outline to bitmaps with */ - /* the highest possible quality. It is */ - /* typically set for small character */ - /* sizes. Note that this is only a */ - /* hint, that might be completely */ - /* ignored by a given scan-converter. */ - /* */ - /* FT_OUTLINE_SINGLE_PASS :: This flag is set to force a given */ - /* scan-converter to only use a single */ - /* pass over the outline to render a */ - /* bitmap glyph image. Normally, it is */ - /* set for very large character sizes. */ - /* It is only a hint, that might be */ - /* completely ignored by a given */ - /* scan-converter. */ + /* FT_OUTLINE_NONE :: */ + /* Value~0 is reserved. */ + /* */ + /* FT_OUTLINE_OWNER :: */ + /* If set, this flag indicates that the outline's field arrays */ + /* (i.e., `points', `flags', and `contours') are `owned' by the */ + /* outline object, and should thus be freed when it is destroyed. */ + /* */ + /* FT_OUTLINE_EVEN_ODD_FILL :: */ + /* By default, outlines are filled using the non-zero winding rule. */ + /* If set to 1, the outline will be filled using the even-odd fill */ + /* rule (only works with the smooth raster). */ + /* */ + /* FT_OUTLINE_REVERSE_FILL :: */ + /* By default, outside contours of an outline are oriented in */ + /* clock-wise direction, as defined in the TrueType specification. */ + /* This flag is set if the outline uses the opposite direction */ + /* (typically for Type~1 fonts). This flag is ignored by the scan */ + /* converter. */ + /* */ + /* FT_OUTLINE_IGNORE_DROPOUTS :: */ + /* By default, the scan converter will try to detect drop-outs in */ + /* an outline and correct the glyph bitmap to ensure consistent */ + /* shape continuity. If set, this flag hints the scan-line */ + /* converter to ignore such cases. */ + /* */ + /* FT_OUTLINE_SMART_DROPOUTS :: */ + /* Select smart dropout control. If unset, use simple dropout */ + /* control. Ignored if @FT_OUTLINE_IGNORE_DROPOUTS is set. */ + /* */ + /* FT_OUTLINE_INCLUDE_STUBS :: */ + /* If set, turn pixels on for `stubs', otherwise exclude them. */ + /* Ignored if @FT_OUTLINE_IGNORE_DROPOUTS is set. */ + /* */ + /* FT_OUTLINE_HIGH_PRECISION :: */ + /* This flag indicates that the scan-line converter should try to */ + /* convert this outline to bitmaps with the highest possible */ + /* quality. It is typically set for small character sizes. Note */ + /* that this is only a hint that might be completely ignored by a */ + /* given scan-converter. */ + /* */ + /* FT_OUTLINE_SINGLE_PASS :: */ + /* This flag is set to force a given scan-converter to only use a */ + /* single pass over the outline to render a bitmap glyph image. */ + /* Normally, it is set for very large character sizes. It is only */ + /* a hint that might be completely ignored by a given */ + /* scan-converter. */ + /* */ + /* <Note> */ + /* Please refer to the description of the `SCANTYPE' instruction in */ + /* the OpenType specification (in file `ttinst1.doc') how simple */ + /* drop-outs, smart drop-outs, and stubs are defined. */ /* */ #define FT_OUTLINE_NONE 0x0 #define FT_OUTLINE_OWNER 0x1 #define FT_OUTLINE_EVEN_ODD_FILL 0x2 #define FT_OUTLINE_REVERSE_FILL 0x4 #define FT_OUTLINE_IGNORE_DROPOUTS 0x8 +#define FT_OUTLINE_SMART_DROPOUTS 0x10 +#define FT_OUTLINE_INCLUDE_STUBS 0x20 #define FT_OUTLINE_HIGH_PRECISION 0x100 #define FT_OUTLINE_SINGLE_PASS 0x200 @@ -483,7 +490,7 @@ FT_BEGIN_HEADER /* decomposition function. */ /* */ /* <Return> */ - /* Error code. 0 means success. */ + /* Error code. 0~means success. */ /* */ typedef int (*FT_Outline_MoveToFunc)( const FT_Vector* to, @@ -510,7 +517,7 @@ FT_BEGIN_HEADER /* decomposition function. */ /* */ /* <Return> */ - /* Error code. 0 means success. */ + /* Error code. 0~means success. */ /* */ typedef int (*FT_Outline_LineToFunc)( const FT_Vector* to, @@ -541,7 +548,7 @@ FT_BEGIN_HEADER /* the decomposition function. */ /* */ /* <Return> */ - /* Error code. 0 means success. */ + /* Error code. 0~means success. */ /* */ typedef int (*FT_Outline_ConicToFunc)( const FT_Vector* control, @@ -573,7 +580,7 @@ FT_BEGIN_HEADER /* the decomposition function. */ /* */ /* <Return> */ - /* Error code. 0 means success. */ + /* Error code. 0~means success. */ /* */ typedef int (*FT_Outline_CubicToFunc)( const FT_Vector* control1, @@ -619,7 +626,7 @@ FT_BEGIN_HEADER /* y' = (x << shift) - delta */ /* } */ /* */ - /* Set the value of `shift' and `delta' to 0 to get the original */ + /* Set the value of `shift' and `delta' to~0 to get the original */ /* point coordinates. */ /* */ typedef struct FT_Outline_Funcs_ @@ -652,7 +659,7 @@ FT_BEGIN_HEADER /* This macro converts four-letter tags to an unsigned long type. */ /* */ /* <Note> */ - /* Since many 16bit compilers don't like 32bit enumerations, you */ + /* Since many 16-bit compilers don't like 32-bit enumerations, you */ /* should redefine this macro in case of problems to something like */ /* this: */ /* */ @@ -684,7 +691,7 @@ FT_BEGIN_HEADER /* */ /* <Values> */ /* FT_GLYPH_FORMAT_NONE :: */ - /* The value 0 is reserved. */ + /* The value~0 is reserved. */ /* */ /* FT_GLYPH_FORMAT_COMPOSITE :: */ /* The glyph image is a composite of several other images. This */ @@ -704,7 +711,7 @@ FT_BEGIN_HEADER /* */ /* FT_GLYPH_FORMAT_PLOTTER :: */ /* The glyph image is a vectorial path with no inside and outside */ - /* contours. Some Type 1 fonts, like those in the Hershey family, */ + /* contours. Some Type~1 fonts, like those in the Hershey family, */ /* contain glyphs in this format. These are described as */ /* @FT_Outline, but FreeType isn't currently capable of rendering */ /* them correctly. */ @@ -816,10 +823,11 @@ FT_BEGIN_HEADER /* */ /* <Note> */ /* This structure is used by the span drawing callback type named */ - /* @FT_SpanFunc which takes the y-coordinate of the span as a */ + /* @FT_SpanFunc which takes the y~coordinate of the span as a */ /* a parameter. */ /* */ - /* The coverage value is always between 0 and 255. */ + /* The coverage value is always between 0 and 255. If you want less */ + /* gray values, the callback function has to reduce them. */ /* */ typedef struct FT_Span_ { @@ -841,7 +849,7 @@ FT_BEGIN_HEADER /* spans on each scan line. */ /* */ /* <Input> */ - /* y :: The scanline's y-coordinate. */ + /* y :: The scanline's y~coordinate. */ /* */ /* count :: The number of spans to draw on this scanline. */ /* */ @@ -858,8 +866,8 @@ FT_BEGIN_HEADER /* */ /* Note that the `count' field cannot be greater than a fixed value */ /* defined by the `FT_MAX_GRAY_SPANS' configuration macro in */ - /* `ftoption.h'. By default, this value is set to 32, which means */ - /* that if there are more than 32 spans on a given scanline, the */ + /* `ftoption.h'. By default, this value is set to~32, which means */ + /* that if there are more than 32~spans on a given scanline, the */ /* callback is called several times with the same `y' parameter in */ /* order to draw all callbacks. */ /* */ @@ -889,14 +897,14 @@ FT_BEGIN_HEADER /* per-se the TrueType spec. */ /* */ /* <Input> */ - /* y :: The pixel's y-coordinate. */ + /* y :: The pixel's y~coordinate. */ /* */ - /* x :: The pixel's x-coordinate. */ + /* x :: The pixel's x~coordinate. */ /* */ /* user :: User-supplied data that is passed to the callback. */ /* */ /* <Return> */ - /* 1 if the pixel is `set', 0 otherwise. */ + /* 1~if the pixel is `set', 0~otherwise. */ /* */ typedef int (*FT_Raster_BitTest_Func)( int y, @@ -917,14 +925,14 @@ FT_BEGIN_HEADER /* drop-out control according to the TrueType specification. */ /* */ /* <Input> */ - /* y :: The pixel's y-coordinate. */ + /* y :: The pixel's y~coordinate. */ /* */ - /* x :: The pixel's x-coordinate. */ + /* x :: The pixel's x~coordinate. */ /* */ /* user :: User-supplied data that is passed to the callback. */ /* */ /* <Return> */ - /* 1 if the pixel is `set', 0 otherwise. */ + /* 1~if the pixel is `set', 0~otherwise. */ /* */ typedef void (*FT_Raster_BitSet_Func)( int y, @@ -1064,7 +1072,7 @@ FT_BEGIN_HEADER /* raster :: A handle to the new raster object. */ /* */ /* <Return> */ - /* Error code. 0 means success. */ + /* Error code. 0~means success. */ /* */ /* <Note> */ /* The `memory' parameter is a typeless pointer in order to avoid */ @@ -1164,8 +1172,8 @@ FT_BEGIN_HEADER /* FT_Raster_RenderFunc */ /* */ /* <Description> */ - /* Invokes a given raster to scan-convert a given glyph image into a */ - /* target bitmap. */ + /* Invoke a given raster to scan-convert a given glyph image into a */ + /* target bitmap. */ /* */ /* <Input> */ /* raster :: A handle to the raster object. */ @@ -1174,7 +1182,7 @@ FT_BEGIN_HEADER /* store the rendering parameters. */ /* */ /* <Return> */ - /* Error code. 0 means success. */ + /* Error code. 0~means success. */ /* */ /* <Note> */ /* The exact format of the source image depends on the raster's glyph */ diff --git a/src/3rdparty/freetype/include/freetype/ftincrem.h b/src/3rdparty/freetype/include/freetype/ftincrem.h index 6dd2f55..96abede 100644 --- a/src/3rdparty/freetype/include/freetype/ftincrem.h +++ b/src/3rdparty/freetype/include/freetype/ftincrem.h @@ -49,7 +49,7 @@ FT_BEGIN_HEADER * * Apart from that, all other tables are loaded normally from the font * file. This mode is useful when FreeType is used within another - * engine, e.g., a Postscript Imaging Processor. + * engine, e.g., a PostScript Imaging Processor. * * To enable this mode, you must use @FT_Open_Face, passing an * @FT_Parameter with the @FT_PARAM_TAG_INCREMENTAL tag and an @@ -67,7 +67,7 @@ FT_BEGIN_HEADER * @description: * An opaque type describing a user-provided object used to implement * `incremental' glyph loading within FreeType. This is used to support - * embedded fonts in certain environments (e.g., Postscript interpreters), + * embedded fonts in certain environments (e.g., PostScript interpreters), * where the glyph data isn't in the font file, or must be overridden by * different values. * @@ -142,7 +142,7 @@ FT_BEGIN_HEADER * * Note that the format of the glyph's data bytes depends on the font * file format. For TrueType, it must correspond to the raw bytes within - * the `glyf' table. For Postscript formats, it must correspond to the + * the `glyf' table. For PostScript formats, it must correspond to the * *unencrypted* charstring bytes, without any `lenIV' header. It is * undefined for any other format. * @@ -160,7 +160,7 @@ FT_BEGIN_HEADER * accessed as a read-only byte block). * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * @note: * If this function returns successfully the method diff --git a/src/3rdparty/freetype/include/freetype/ftlcdfil.h b/src/3rdparty/freetype/include/freetype/ftlcdfil.h index 01d9780..c6201b3 100644 --- a/src/3rdparty/freetype/include/freetype/ftlcdfil.h +++ b/src/3rdparty/freetype/include/freetype/ftlcdfil.h @@ -23,6 +23,12 @@ #include <ft2build.h> #include FT_FREETYPE_H +#ifdef FREETYPE_H +#error "freetype.h of FreeType 1 has been loaded!" +#error "Please fix the directory search order for header files" +#error "so that freetype.h of FreeType 2 is found first." +#endif + FT_BEGIN_HEADER @@ -119,7 +125,7 @@ FT_BEGIN_HEADER * well on most LCD screens. * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * @note: * This feature is always disabled by default. Clients must make an @@ -141,8 +147,8 @@ FT_BEGIN_HEADER * If this feature is activated, the dimensions of LCD glyph bitmaps are * either larger or taller than the dimensions of the corresponding * outline with regards to the pixel grid. For example, for - * @FT_RENDER_MODE_LCD, the filter adds up to 3 pixels to the left, and - * up to 3 pixels to the right. + * @FT_RENDER_MODE_LCD, the filter adds up to 3~pixels to the left, and + * up to 3~pixels to the right. * * The bitmap offset values are adjusted correctly, so clients shouldn't * need to modify their layout and glyph positioning code when enabling diff --git a/src/3rdparty/freetype/include/freetype/ftlist.h b/src/3rdparty/freetype/include/freetype/ftlist.h index f3223ee..93b05fc 100644 --- a/src/3rdparty/freetype/include/freetype/ftlist.h +++ b/src/3rdparty/freetype/include/freetype/ftlist.h @@ -81,7 +81,7 @@ FT_BEGIN_HEADER /* FT_List_Find */ /* */ /* <Description> */ - /* Finds the list node for a given listed object. */ + /* Find the list node for a given listed object. */ /* */ /* <Input> */ /* list :: A pointer to the parent list. */ @@ -101,7 +101,7 @@ FT_BEGIN_HEADER /* FT_List_Add */ /* */ /* <Description> */ - /* Appends an element to the end of a list. */ + /* Append an element to the end of a list. */ /* */ /* <InOut> */ /* list :: A pointer to the parent list. */ @@ -118,7 +118,7 @@ FT_BEGIN_HEADER /* FT_List_Insert */ /* */ /* <Description> */ - /* Inserts an element at the head of a list. */ + /* Insert an element at the head of a list. */ /* */ /* <InOut> */ /* list :: A pointer to parent list. */ @@ -135,7 +135,7 @@ FT_BEGIN_HEADER /* FT_List_Remove */ /* */ /* <Description> */ - /* Removes a node from a list. This function doesn't check whether */ + /* Remove a node from a list. This function doesn't check whether */ /* the node is in the list! */ /* */ /* <Input> */ @@ -155,7 +155,7 @@ FT_BEGIN_HEADER /* FT_List_Up */ /* */ /* <Description> */ - /* Moves a node to the head/top of a list. Used to maintain LRU */ + /* Move a node to the head/top of a list. Used to maintain LRU */ /* lists. */ /* */ /* <InOut> */ @@ -193,7 +193,7 @@ FT_BEGIN_HEADER /* FT_List_Iterate */ /* */ /* <Description> */ - /* Parses a list and calls a given iterator function on each element. */ + /* Parse a list and calls a given iterator function on each element. */ /* Note that parsing is stopped as soon as one of the iterator calls */ /* returns a non-zero value. */ /* */ @@ -242,7 +242,7 @@ FT_BEGIN_HEADER /* FT_List_Finalize */ /* */ /* <Description> */ - /* Destroys all elements in the list as well as the list itself. */ + /* Destroy all elements in the list as well as the list itself. */ /* */ /* <Input> */ /* list :: A handle to the list. */ diff --git a/src/3rdparty/freetype/include/freetype/ftlzw.h b/src/3rdparty/freetype/include/freetype/ftlzw.h index d950653..00d4016 100644 --- a/src/3rdparty/freetype/include/freetype/ftlzw.h +++ b/src/3rdparty/freetype/include/freetype/ftlzw.h @@ -63,7 +63,7 @@ FT_BEGIN_HEADER * source :: The source stream. * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * @note: * The source stream must be opened _before_ calling this function. diff --git a/src/3rdparty/freetype/include/freetype/ftmac.h b/src/3rdparty/freetype/include/freetype/ftmac.h index 1752d13..ab5bab5 100644 --- a/src/3rdparty/freetype/include/freetype/ftmac.h +++ b/src/3rdparty/freetype/include/freetype/ftmac.h @@ -85,7 +85,7 @@ FT_BEGIN_HEADER /* aface :: A handle to a new face object. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Notes> */ /* This function can be used to create @FT_Face objects from fonts */ @@ -124,7 +124,7 @@ FT_BEGIN_HEADER /* @FT_New_Face_From_FSSpec. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ FT_EXPORT( FT_Error ) FT_GetFile_From_Mac_Name( const char* fontName, @@ -152,7 +152,7 @@ FT_BEGIN_HEADER /* @FT_New_Face_From_FSSpec. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ FT_EXPORT( FT_Error ) FT_GetFile_From_Mac_ATS_Name( const char* fontName, @@ -183,7 +183,7 @@ FT_BEGIN_HEADER /* face_index :: Index of the face. For passing to @FT_New_Face. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ FT_EXPORT( FT_Error ) FT_GetFilePath_From_Mac_ATS_Name( const char* fontName, @@ -209,12 +209,12 @@ FT_BEGIN_HEADER /* spec :: FSSpec to the font file. */ /* */ /* face_index :: The index of the face within the resource. The */ - /* first face has index 0. */ + /* first face has index~0. */ /* <Output> */ /* aface :: A handle to a new face object. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* @FT_New_Face_From_FSSpec is identical to @FT_New_Face except */ @@ -244,12 +244,12 @@ FT_BEGIN_HEADER /* spec :: FSRef to the font file. */ /* */ /* face_index :: The index of the face within the resource. The */ - /* first face has index 0. */ + /* first face has index~0. */ /* <Output> */ /* aface :: A handle to a new face object. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* @FT_New_Face_From_FSRef is identical to @FT_New_Face except */ diff --git a/src/3rdparty/freetype/include/freetype/ftmm.h b/src/3rdparty/freetype/include/freetype/ftmm.h index a9ccfe7..3aefb9e 100644 --- a/src/3rdparty/freetype/include/freetype/ftmm.h +++ b/src/3rdparty/freetype/include/freetype/ftmm.h @@ -4,7 +4,7 @@ /* */ /* FreeType Multiple Master font interface (specification). */ /* */ -/* Copyright 1996-2001, 2003, 2004, 2006 by */ +/* Copyright 1996-2001, 2003, 2004, 2006, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -44,7 +44,7 @@ FT_BEGIN_HEADER /* setting design axis coordinates. */ /* */ /* George Williams has extended this interface to make it work with */ - /* both Type 1 Multiple Masters fonts and GX distortable (var) */ + /* both Type~1 Multiple Masters fonts and GX distortable (var) */ /* fonts. Some of these routines only work with MM fonts, others */ /* will work with both types. They are similar enough that a */ /* consistent interface makes sense. */ @@ -91,12 +91,12 @@ FT_BEGIN_HEADER /* This structure can't be used for GX var fonts. */ /* */ /* <Fields> */ - /* num_axis :: Number of axes. Cannot exceed 4. */ + /* num_axis :: Number of axes. Cannot exceed~4. */ /* */ /* num_designs :: Number of designs; should be normally 2^num_axis */ - /* even though the Type 1 specification strangely */ + /* even though the Type~1 specification strangely */ /* allows for intermediate designs to be present. This */ - /* number cannot exceed 16. */ + /* number cannot exceed~16. */ /* */ /* axis :: A table of axis descriptors. */ /* */ @@ -187,7 +187,7 @@ FT_BEGIN_HEADER /* Some fields are specific to one format and not to the other. */ /* */ /* <Fields> */ - /* num_axis :: The number of axes. The maximum value is 4 for */ + /* num_axis :: The number of axes. The maximum value is~4 for */ /* MM; no limit in GX. */ /* */ /* num_designs :: The number of designs; should be normally */ @@ -227,7 +227,7 @@ FT_BEGIN_HEADER /* FT_Get_Multi_Master */ /* */ /* <Description> */ - /* Retrieves the Multiple Master descriptor of a given font. */ + /* Retrieve the Multiple Master descriptor of a given font. */ /* */ /* This function can't be used with GX fonts. */ /* */ @@ -238,7 +238,7 @@ FT_BEGIN_HEADER /* amaster :: The Multiple Masters descriptor. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ FT_EXPORT( FT_Error ) FT_Get_Multi_Master( FT_Face face, @@ -251,18 +251,18 @@ FT_BEGIN_HEADER /* FT_Get_MM_Var */ /* */ /* <Description> */ - /* Retrieves the Multiple Master/GX var descriptor of a given font. */ + /* Retrieve the Multiple Master/GX var descriptor of a given font. */ /* */ /* <Input> */ /* face :: A handle to the source face. */ /* */ /* <Output> */ - /* amaster :: The Multiple Masters descriptor. */ + /* amaster :: The Multiple Masters/GX var descriptor. */ /* Allocates a data structure, which the user must free */ /* (a single call to FT_FREE will do it). */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ FT_EXPORT( FT_Error ) FT_Get_MM_Var( FT_Face face, @@ -290,7 +290,7 @@ FT_BEGIN_HEADER /* coords :: An array of design coordinates. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ FT_EXPORT( FT_Error ) FT_Set_MM_Design_Coordinates( FT_Face face, @@ -317,7 +317,7 @@ FT_BEGIN_HEADER /* coords :: An array of design coordinates. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ FT_EXPORT( FT_Error ) FT_Set_Var_Design_Coordinates( FT_Face face, @@ -345,7 +345,7 @@ FT_BEGIN_HEADER /* between 0 and 1.0). */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ FT_EXPORT( FT_Error ) FT_Set_MM_Blend_Coordinates( FT_Face face, diff --git a/src/3rdparty/freetype/include/freetype/ftmodapi.h b/src/3rdparty/freetype/include/freetype/ftmodapi.h index 7d813eb..b051d34 100644 --- a/src/3rdparty/freetype/include/freetype/ftmodapi.h +++ b/src/3rdparty/freetype/include/freetype/ftmodapi.h @@ -179,7 +179,7 @@ FT_BEGIN_HEADER /* FT_Add_Module */ /* */ /* <Description> */ - /* Adds a new module to a given library instance. */ + /* Add a new module to a given library instance. */ /* */ /* <InOut> */ /* library :: A handle to the library object. */ @@ -188,7 +188,7 @@ FT_BEGIN_HEADER /* clazz :: A pointer to class descriptor for the module. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* An error will be returned if a module already exists by that name, */ @@ -205,7 +205,7 @@ FT_BEGIN_HEADER /* FT_Get_Module */ /* */ /* <Description> */ - /* Finds a module by its name. */ + /* Find a module by its name. */ /* */ /* <Input> */ /* library :: A handle to the library object. */ @@ -213,7 +213,7 @@ FT_BEGIN_HEADER /* module_name :: The module's name (as an ASCII string). */ /* */ /* <Return> */ - /* A module handle. 0 if none was found. */ + /* A module handle. 0~if none was found. */ /* */ /* <Note> */ /* FreeType's internal modules aren't documented very well, and you */ @@ -230,7 +230,7 @@ FT_BEGIN_HEADER /* FT_Remove_Module */ /* */ /* <Description> */ - /* Removes a given module from a library instance. */ + /* Remove a given module from a library instance. */ /* */ /* <InOut> */ /* library :: A handle to a library object. */ @@ -239,7 +239,7 @@ FT_BEGIN_HEADER /* module :: A handle to a module object. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* The module object is destroyed by the function in case of success. */ @@ -266,7 +266,7 @@ FT_BEGIN_HEADER /* alibrary :: A pointer to handle of a new library object. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ FT_EXPORT( FT_Error ) FT_New_Library( FT_Memory memory, @@ -279,14 +279,14 @@ FT_BEGIN_HEADER /* FT_Done_Library */ /* */ /* <Description> */ - /* Discards a given library object. This closes all drivers and */ + /* Discard a given library object. This closes all drivers and */ /* discards all resource objects. */ /* */ /* <Input> */ /* library :: A handle to the target library. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ FT_EXPORT( FT_Error ) FT_Done_Library( FT_Library library ); @@ -303,7 +303,7 @@ FT_BEGIN_HEADER /* FT_Set_Debug_Hook */ /* */ /* <Description> */ - /* Sets a debug hook function for debugging the interpreter of a font */ + /* Set a debug hook function for debugging the interpreter of a font */ /* format. */ /* */ /* <InOut> */ @@ -318,7 +318,7 @@ FT_BEGIN_HEADER /* */ /* <Note> */ /* Currently, four debug hook slots are available, but only two (for */ - /* the TrueType and the Type 1 interpreter) are defined. */ + /* the TrueType and the Type~1 interpreter) are defined. */ /* */ /* Since the internal headers of FreeType are no longer installed, */ /* the symbol `FT_DEBUG_HOOK_TRUETYPE' isn't available publicly. */ @@ -336,7 +336,7 @@ FT_BEGIN_HEADER /* FT_Add_Default_Modules */ /* */ /* <Description> */ - /* Adds the set of default drivers to a given library object. */ + /* Add the set of default drivers to a given library object. */ /* This is only useful when you create a library object with */ /* @FT_New_Library (usually to plug a custom memory manager). */ /* */ @@ -412,7 +412,7 @@ FT_BEGIN_HEADER * FT_Get_TrueType_Engine_Type * * @description: - * Return a @FT_TrueTypeEngineType value to indicate which level of + * Return an @FT_TrueTypeEngineType value to indicate which level of * the TrueType virtual machine a given library instance supports. * * @input: diff --git a/src/3rdparty/freetype/include/freetype/ftotval.h b/src/3rdparty/freetype/include/freetype/ftotval.h index 8733882..027f2e8 100644 --- a/src/3rdparty/freetype/include/freetype/ftotval.h +++ b/src/3rdparty/freetype/include/freetype/ftotval.h @@ -145,7 +145,7 @@ FT_BEGIN_HEADER * A pointer to the JSTF table. * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * @note: * This function only works with OpenType fonts, returning an error diff --git a/src/3rdparty/freetype/include/freetype/ftoutln.h b/src/3rdparty/freetype/include/freetype/ftoutln.h index d5b2389..ea60d43 100644 --- a/src/3rdparty/freetype/include/freetype/ftoutln.h +++ b/src/3rdparty/freetype/include/freetype/ftoutln.h @@ -5,7 +5,7 @@ /* Support for the FT_Outline type used to store glyph shapes of */ /* most scalable font formats (specification). */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2005, 2006, 2007, 2008 by */ +/* Copyright 1996-2001, 2002, 2003, 2005, 2006, 2007, 2008, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -84,7 +84,7 @@ FT_BEGIN_HEADER /* FT_Outline_Decompose */ /* */ /* <Description> */ - /* Walks over an outline's structure to decompose it into individual */ + /* Walk over an outline's structure to decompose it into individual */ /* segments and Bezier arcs. This function is also able to emit */ /* `move to' and `close to' operations to indicate the start and end */ /* of new contours in the outline. */ @@ -92,7 +92,7 @@ FT_BEGIN_HEADER /* <Input> */ /* outline :: A pointer to the source target. */ /* */ - /* func_interface :: A table of `emitters', i.e,. function pointers */ + /* func_interface :: A table of `emitters', i.e., function pointers */ /* called during decomposition to indicate path */ /* operations. */ /* */ @@ -103,7 +103,7 @@ FT_BEGIN_HEADER /* decomposition. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ FT_EXPORT( FT_Error ) FT_Outline_Decompose( FT_Outline* outline, @@ -117,7 +117,7 @@ FT_BEGIN_HEADER /* FT_Outline_New */ /* */ /* <Description> */ - /* Creates a new outline of a given size. */ + /* Create a new outline of a given size. */ /* */ /* <Input> */ /* library :: A handle to the library object from where the */ @@ -130,11 +130,10 @@ FT_BEGIN_HEADER /* numContours :: The maximal number of contours within the outline. */ /* */ /* <Output> */ - /* anoutline :: A handle to the new outline. NULL in case of */ - /* error. */ + /* anoutline :: A handle to the new outline. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* The reason why this function takes a `library' parameter is simply */ @@ -160,7 +159,7 @@ FT_BEGIN_HEADER /* FT_Outline_Done */ /* */ /* <Description> */ - /* Destroys an outline created with @FT_Outline_New. */ + /* Destroy an outline created with @FT_Outline_New. */ /* */ /* <Input> */ /* library :: A handle of the library object used to allocate the */ @@ -169,7 +168,7 @@ FT_BEGIN_HEADER /* outline :: A pointer to the outline object to be discarded. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* If the outline's `owner' field is not set, only the outline */ @@ -200,7 +199,7 @@ FT_BEGIN_HEADER /* outline :: A handle to a source outline. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ FT_EXPORT( FT_Error ) FT_Outline_Check( FT_Outline* outline ); @@ -212,7 +211,7 @@ FT_BEGIN_HEADER /* FT_Outline_Get_CBox */ /* */ /* <Description> */ - /* Returns an outline's `control box'. The control box encloses all */ + /* Return an outline's `control box'. The control box encloses all */ /* the outline's points, including Bezier control points. Though it */ /* coincides with the exact bounding box for most glyphs, it can be */ /* slightly larger in some situations (like when rotating an outline */ @@ -240,7 +239,7 @@ FT_BEGIN_HEADER /* FT_Outline_Translate */ /* */ /* <Description> */ - /* Applies a simple translation to the points of an outline. */ + /* Apply a simple translation to the points of an outline. */ /* */ /* <InOut> */ /* outline :: A pointer to the target outline descriptor. */ @@ -262,7 +261,7 @@ FT_BEGIN_HEADER /* FT_Outline_Copy */ /* */ /* <Description> */ - /* Copies an outline into another one. Both objects must have the */ + /* Copy an outline into another one. Both objects must have the */ /* same sizes (number of points & number of contours) when this */ /* function is called. */ /* */ @@ -273,7 +272,7 @@ FT_BEGIN_HEADER /* target :: A handle to the target outline. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ FT_EXPORT( FT_Error ) FT_Outline_Copy( const FT_Outline* source, @@ -286,7 +285,7 @@ FT_BEGIN_HEADER /* FT_Outline_Transform */ /* */ /* <Description> */ - /* Applies a simple 2x2 matrix to all of an outline's points. Useful */ + /* Apply a simple 2x2 matrix to all of an outline's points. Useful */ /* for applying rotations, slanting, flipping, etc. */ /* */ /* <InOut> */ @@ -310,7 +309,7 @@ FT_BEGIN_HEADER /* FT_Outline_Embolden */ /* */ /* <Description> */ - /* Emboldens an outline. The new outline will be at most 4 times */ + /* Embolden an outline. The new outline will be at most 4~times */ /* `strength' pixels wider and higher. You may think of the left and */ /* bottom borders as unchanged. */ /* */ @@ -325,7 +324,7 @@ FT_BEGIN_HEADER /* 26.6 pixel format. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* The used algorithm to increase or decrease the thickness of the */ @@ -333,6 +332,9 @@ FT_BEGIN_HEADER /* situations like acute angles or intersections are sometimes */ /* handled incorrectly. */ /* */ + /* If you need `better' metrics values you should call */ + /* @FT_Outline_Get_CBox ot @FT_Outline_Get_BBox. */ + /* */ /* Example call: */ /* */ /* { */ @@ -352,14 +354,14 @@ FT_BEGIN_HEADER /* FT_Outline_Reverse */ /* */ /* <Description> */ - /* Reverses the drawing direction of an outline. This is used to */ + /* Reverse the drawing direction of an outline. This is used to */ /* ensure consistent fill conventions for mirrored glyphs. */ /* */ /* <InOut> */ /* outline :: A pointer to the target outline descriptor. */ /* */ /* <Note> */ - /* This functions toggles the bit flag @FT_OUTLINE_REVERSE_FILL in */ + /* This function toggles the bit flag @FT_OUTLINE_REVERSE_FILL in */ /* the outline's `flags' field. */ /* */ /* It shouldn't be used by a normal client application, unless it */ @@ -375,7 +377,7 @@ FT_BEGIN_HEADER /* FT_Outline_Get_Bitmap */ /* */ /* <Description> */ - /* Renders an outline within a bitmap. The outline's image is simply */ + /* Render an outline within a bitmap. The outline's image is simply */ /* OR-ed to the target bitmap. */ /* */ /* <Input> */ @@ -387,14 +389,19 @@ FT_BEGIN_HEADER /* abitmap :: A pointer to the target bitmap descriptor. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* This function does NOT CREATE the bitmap, it only renders an */ - /* outline image within the one you pass to it! */ + /* outline image within the one you pass to it! Consequently, the */ + /* various fields in `abitmap' should be set accordingly. */ /* */ /* It will use the raster corresponding to the default glyph format. */ /* */ + /* The value of the `num_grays' field in `abitmap' is ignored. If */ + /* you select the gray-level rasterizer, and you want less than 256 */ + /* gray levels, you have to use @FT_Outline_Render directly. */ + /* */ FT_EXPORT( FT_Error ) FT_Outline_Get_Bitmap( FT_Library library, FT_Outline* outline, @@ -407,8 +414,8 @@ FT_BEGIN_HEADER /* FT_Outline_Render */ /* */ /* <Description> */ - /* Renders an outline within a bitmap using the current scan-convert. */ - /* This functions uses an @FT_Raster_Params structure as an argument, */ + /* Render an outline within a bitmap using the current scan-convert. */ + /* This function uses an @FT_Raster_Params structure as an argument, */ /* allowing advanced features like direct composition, translucency, */ /* etc. */ /* */ @@ -422,7 +429,7 @@ FT_BEGIN_HEADER /* describe the rendering operation. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* You should know what you are doing and how @FT_Raster_Params works */ @@ -432,6 +439,11 @@ FT_BEGIN_HEADER /* converter is called, which means that the value you give to it is */ /* actually ignored. */ /* */ + /* The gray-level rasterizer always uses 256 gray levels. If you */ + /* want less gray levels, you have to provide your own span callback. */ + /* See the @FT_RASTER_FLAG_DIRECT value of the `flags' field in the */ + /* @FT_Raster_Params structure for more details. */ + /* */ FT_EXPORT( FT_Error ) FT_Outline_Render( FT_Library library, FT_Outline* outline, @@ -446,7 +458,7 @@ FT_BEGIN_HEADER * @description: * A list of values used to describe an outline's contour orientation. * - * The TrueType and Postscript specifications use different conventions + * The TrueType and PostScript specifications use different conventions * to determine whether outline contours should be filled or unfilled. * * @values: @@ -455,7 +467,7 @@ FT_BEGIN_HEADER * be filled, and counter-clockwise ones must be unfilled. * * FT_ORIENTATION_POSTSCRIPT :: - * According to the Postscript specification, counter-clockwise contours + * According to the PostScript specification, counter-clockwise contours * must be filled, and clockwise ones must be unfilled. * * FT_ORIENTATION_FILL_RIGHT :: @@ -465,7 +477,7 @@ FT_BEGIN_HEADER * * FT_ORIENTATION_FILL_LEFT :: * This is identical to @FT_ORIENTATION_POSTSCRIPT, but is used to - * remember that in Postscript, everything that is to the left of + * remember that in PostScript, everything that is to the left of * the drawing direction of a contour must be filled. * * FT_ORIENTATION_NONE :: diff --git a/src/3rdparty/freetype/include/freetype/ftpfr.h b/src/3rdparty/freetype/include/freetype/ftpfr.h index e2801fd..0b7b7d4 100644 --- a/src/3rdparty/freetype/include/freetype/ftpfr.h +++ b/src/3rdparty/freetype/include/freetype/ftpfr.h @@ -4,7 +4,7 @@ /* */ /* FreeType API for accessing PFR-specific data (specification only). */ /* */ -/* Copyright 2002, 2003, 2004, 2006 by */ +/* Copyright 2002, 2003, 2004, 2006, 2008, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -62,8 +62,8 @@ FT_BEGIN_HEADER * * @output: * aoutline_resolution :: - * Outline resolution. This is equivalent to `face->units_per_EM'. - * Optional (parameter can be NULL). + * Outline resolution. This is equivalent to `face->units_per_EM' + * for non-PFR fonts. Optional (parameter can be NULL). * * ametrics_resolution :: * Metrics resolution. This is equivalent to `outline_resolution' @@ -73,14 +73,14 @@ FT_BEGIN_HEADER * A 16.16 fixed-point number used to scale distance expressed * in metrics units to device sub-pixels. This is equivalent to * `face->size->x_scale', but for metrics only. Optional (parameter - * can be NULL) + * can be NULL). * * ametrics_y_scale :: * Same as `ametrics_x_scale' but for the vertical direction. - * optional (parameter can be NULL) + * optional (parameter can be NULL). * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * @note: * If the input face is not a PFR, this function will return an error. @@ -115,7 +115,7 @@ FT_BEGIN_HEADER * avector :: A kerning vector. * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * @note: * This function always return distances in original PFR metrics @@ -150,7 +150,7 @@ FT_BEGIN_HEADER * aadvance :: The glyph advance in metrics units. * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * @note: * You can use the `x_scale' or `y_scale' results of @FT_Get_PFR_Metrics diff --git a/src/3rdparty/freetype/include/freetype/ftrender.h b/src/3rdparty/freetype/include/freetype/ftrender.h index 9ed828e..41c31ea 100644 --- a/src/3rdparty/freetype/include/freetype/ftrender.h +++ b/src/3rdparty/freetype/include/freetype/ftrender.h @@ -167,7 +167,7 @@ FT_BEGIN_HEADER /* FT_Get_Renderer */ /* */ /* <Description> */ - /* Retrieves the current renderer for a given glyph format. */ + /* Retrieve the current renderer for a given glyph format. */ /* */ /* <Input> */ /* library :: A handle to the library object. */ @@ -175,7 +175,7 @@ FT_BEGIN_HEADER /* format :: The glyph format. */ /* */ /* <Return> */ - /* A renderer handle. 0 if none found. */ + /* A renderer handle. 0~if none found. */ /* */ /* <Note> */ /* An error will be returned if a module already exists by that name, */ @@ -195,7 +195,7 @@ FT_BEGIN_HEADER /* FT_Set_Renderer */ /* */ /* <Description> */ - /* Sets the current renderer to use, and set additional mode. */ + /* Set the current renderer to use, and set additional mode. */ /* */ /* <InOut> */ /* library :: A handle to the library object. */ @@ -208,7 +208,7 @@ FT_BEGIN_HEADER /* parameters :: Additional parameters. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* In case of success, the renderer will be used to convert glyph */ diff --git a/src/3rdparty/freetype/include/freetype/ftsizes.h b/src/3rdparty/freetype/include/freetype/ftsizes.h index 622df16..3e548cc 100644 --- a/src/3rdparty/freetype/include/freetype/ftsizes.h +++ b/src/3rdparty/freetype/include/freetype/ftsizes.h @@ -4,7 +4,7 @@ /* */ /* FreeType size objects management (specification). */ /* */ -/* Copyright 1996-2001, 2003, 2004, 2006 by */ +/* Copyright 1996-2001, 2003, 2004, 2006, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -89,7 +89,7 @@ FT_BEGIN_HEADER /* asize :: A handle to a new size object. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* You need to call @FT_Activate_Size in order to select the new size */ @@ -115,7 +115,7 @@ FT_BEGIN_HEADER /* size :: A handle to a target size object. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ FT_EXPORT( FT_Error ) FT_Done_Size( FT_Size size ); @@ -129,8 +129,8 @@ FT_BEGIN_HEADER /* <Description> */ /* Even though it is possible to create several size objects for a */ /* given face (see @FT_New_Size for details), functions like */ - /* @FT_Load_Glyph or @FT_Load_Char only use the last-created one to */ - /* determine the `current character pixel size'. */ + /* @FT_Load_Glyph or @FT_Load_Char only use the one which has been */ + /* activated last to determine the `current character pixel size'. */ /* */ /* This function can be used to `activate' a previously created size */ /* object. */ @@ -139,7 +139,7 @@ FT_BEGIN_HEADER /* size :: A handle to a target size object. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* If `face' is the size's parent face object, this function changes */ diff --git a/src/3rdparty/freetype/include/freetype/ftsnames.h b/src/3rdparty/freetype/include/freetype/ftsnames.h index 003cbcd..477e1e3 100644 --- a/src/3rdparty/freetype/include/freetype/ftsnames.h +++ b/src/3rdparty/freetype/include/freetype/ftsnames.h @@ -48,7 +48,7 @@ FT_BEGIN_HEADER /* Access the names embedded in TrueType and OpenType files. */ /* */ /* <Description> */ - /* The TrueType and OpenType specification allow the inclusion of */ + /* The TrueType and OpenType specifications allow the inclusion of */ /* a special `names table' in font files. This table contains */ /* textual (and internationalized) information regarding the font, */ /* like family name, copyright, version, etc. */ @@ -114,7 +114,7 @@ FT_BEGIN_HEADER /* FT_Get_Sfnt_Name_Count */ /* */ /* <Description> */ - /* Retrieves the number of name strings in the SFNT `name' table. */ + /* Retrieve the number of name strings in the SFNT `name' table. */ /* */ /* <Input> */ /* face :: A handle to the source face. */ @@ -132,7 +132,7 @@ FT_BEGIN_HEADER /* FT_Get_Sfnt_Name */ /* */ /* <Description> */ - /* Retrieves a string of the SFNT `name' table for a given index. */ + /* Retrieve a string of the SFNT `name' table for a given index. */ /* */ /* <Input> */ /* face :: A handle to the source face. */ @@ -143,7 +143,7 @@ FT_BEGIN_HEADER /* aname :: The indexed @FT_SfntName structure. */ /* */ /* <Return> */ - /* FreeType error code. 0 means success. */ + /* FreeType error code. 0~means success. */ /* */ /* <Note> */ /* The `string' array returned in the `aname' structure is not */ diff --git a/src/3rdparty/freetype/include/freetype/ftstroke.h b/src/3rdparty/freetype/include/freetype/ftstroke.h index 7d85288..0c10122 100644 --- a/src/3rdparty/freetype/include/freetype/ftstroke.h +++ b/src/3rdparty/freetype/include/freetype/ftstroke.h @@ -4,7 +4,7 @@ /* */ /* FreeType path stroker (specification). */ /* */ -/* Copyright 2002, 2003, 2004, 2005, 2006, 2008 by */ +/* Copyright 2002, 2003, 2004, 2005, 2006, 2008, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -171,7 +171,7 @@ FT_BEGIN_HEADER * The source outline handle. * * @return: - * The border index. @FT_STROKER_BORDER_LEFT for empty or invalid + * The border index. @FT_STROKER_BORDER_RIGHT for empty or invalid * outlines. */ FT_EXPORT( FT_StrokerBorder ) @@ -216,7 +216,7 @@ FT_BEGIN_HEADER * A new stroker object handle. NULL in case of error. * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. */ FT_EXPORT( FT_Error ) FT_Stroker_New( FT_Library library, @@ -249,7 +249,7 @@ FT_BEGIN_HEADER * expressed as 16.16 fixed point value. * * @note: - * The radius is expressed in the same units that the outline + * The radius is expressed in the same units as the outline * coordinates. */ FT_EXPORT( void ) @@ -297,18 +297,18 @@ FT_BEGIN_HEADER * The source outline. * * opened :: - * A boolean. If 1, the outline is treated as an open path instead + * A boolean. If~1, the outline is treated as an open path instead * of a closed one. * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * @note: - * If `opened' is 0 (the default), the outline is treated as a closed - * path, and the stroker will generate two distinct `border' outlines. + * If `opened' is~0 (the default), the outline is treated as a closed + * path, and the stroker generates two distinct `border' outlines. * - * If `opened' is 1, the outline is processed as an open path, and the - * stroker will generate a single `stroke' outline. + * If `opened' is~1, the outline is processed as an open path, and the + * stroker generates a single `stroke' outline. * * This function calls @FT_Stroker_Rewind automatically. */ @@ -334,10 +334,10 @@ FT_BEGIN_HEADER * A pointer to the start vector. * * open :: - * A boolean. If 1, the sub-path is treated as an open one. + * A boolean. If~1, the sub-path is treated as an open one. * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * @note: * This function is useful when you need to stroke a path that is @@ -362,11 +362,11 @@ FT_BEGIN_HEADER * The target stroker handle. * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * @note: * You should call this function after @FT_Stroker_BeginSubPath. - * If the subpath was not `opened', this function will `draw' a + * If the subpath was not `opened', this function `draws' a * single line segment to the start position when needed. */ FT_EXPORT( FT_Error ) @@ -390,7 +390,7 @@ FT_BEGIN_HEADER * A pointer to the destination point. * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * @note: * You should call this function between @FT_Stroker_BeginSubPath and @@ -421,7 +421,7 @@ FT_BEGIN_HEADER * A pointer to the destination point. * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * @note: * You should call this function between @FT_Stroker_BeginSubPath and @@ -456,7 +456,7 @@ FT_BEGIN_HEADER * A pointer to the destination point. * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * @note: * You should call this function between @FT_Stroker_BeginSubPath and @@ -476,7 +476,7 @@ FT_BEGIN_HEADER * * @description: * Call this function once you have finished parsing your paths - * with the stroker. It will return the number of points and + * with the stroker. It returns the number of points and * contours necessary to export one of the `border' or `stroke' * outlines generated by the stroker. * @@ -495,7 +495,7 @@ FT_BEGIN_HEADER * The number of contours. * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * @note: * When an outline, or a sub-path, is `closed', the stroker generates @@ -525,8 +525,8 @@ FT_BEGIN_HEADER * export the corresponding border to your own @FT_Outline * structure. * - * Note that this function will append the border points and - * contours to your outline, but will not try to resize its + * Note that this function appends the border points and + * contours to your outline, but does not try to resize its * arrays. * * @input: @@ -583,7 +583,7 @@ FT_BEGIN_HEADER * The number of contours. * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. */ FT_EXPORT( FT_Error ) FT_Stroker_GetCounts( FT_Stroker stroker, @@ -600,8 +600,8 @@ FT_BEGIN_HEADER * Call this function after @FT_Stroker_GetBorderCounts to * export the all borders to your own @FT_Outline structure. * - * Note that this function will append the border points and - * contours to your outline, but will not try to resize its + * Note that this function appends the border points and + * contours to your outline, but does not try to resize its * arrays. * * @input: @@ -649,11 +649,11 @@ FT_BEGIN_HEADER * A stroker handle. * * destroy :: - * A Boolean. If 1, the source glyph object is destroyed + * A Boolean. If~1, the source glyph object is destroyed * on success. * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * @note: * The source glyph is untouched in case of error. @@ -682,15 +682,15 @@ FT_BEGIN_HEADER * A stroker handle. * * inside :: - * A Boolean. If 1, return the inside border, otherwise + * A Boolean. If~1, return the inside border, otherwise * the outside border. * * destroy :: - * A Boolean. If 1, the source glyph object is destroyed + * A Boolean. If~1, the source glyph object is destroyed * on success. * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * @note: * The source glyph is untouched in case of error. diff --git a/src/3rdparty/freetype/include/freetype/ftsynth.h b/src/3rdparty/freetype/include/freetype/ftsynth.h index 36984bf..a068b79 100644 --- a/src/3rdparty/freetype/include/freetype/ftsynth.h +++ b/src/3rdparty/freetype/include/freetype/ftsynth.h @@ -5,7 +5,7 @@ /* FreeType synthesizing code for emboldening and slanting */ /* (specification). */ /* */ -/* Copyright 2000-2001, 2003, 2006 by */ +/* Copyright 2000-2001, 2003, 2006, 2008 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -23,7 +23,7 @@ /*************************************************************************/ /*************************************************************************/ /********* *********/ - /********* WARNING, THIS IS ALPHA CODE, THIS API *********/ + /********* WARNING, THIS IS ALPHA CODE! THIS API *********/ /********* IS DUE TO CHANGE UNTIL STRICTLY NOTIFIED BY THE *********/ /********* FREETYPE DEVELOPMENT TEAM *********/ /********* *********/ @@ -34,6 +34,13 @@ /*************************************************************************/ + /* Main reason for not lifting the functions in this module to a */ + /* `standard' API is that the used parameters for emboldening and */ + /* slanting are not configurable. Consider the functions as a */ + /* code resource which should be copied into the application and */ + /* adapted to the particular needs. */ + + #ifndef __FTSYNTH_H__ #define __FTSYNTH_H__ @@ -50,20 +57,20 @@ FT_BEGIN_HEADER - /* Make sure slot owns slot->bitmap. */ - FT_EXPORT( FT_Error ) - FT_GlyphSlot_Own_Bitmap( FT_GlyphSlot slot ); - - /* Do not use this function directly! Copy the code to */ - /* your application and modify it to suit your need. */ + /* Embolden a glyph by a `reasonable' value (which is highly a matter of */ + /* taste). This function is actually a convenience function, providing */ + /* a wrapper for @FT_Outline_Embolden and @FT_Bitmap_Embolden. */ + /* */ + /* For emboldened outlines the metrics are estimates only; if you need */ + /* precise values you should call @FT_Outline_Get_CBox. */ FT_EXPORT( void ) FT_GlyphSlot_Embolden( FT_GlyphSlot slot ); - + /* Slant an outline glyph to the right by about 12 degrees. */ FT_EXPORT( void ) FT_GlyphSlot_Oblique( FT_GlyphSlot slot ); - /* */ + /* */ FT_END_HEADER diff --git a/src/3rdparty/freetype/include/freetype/ftsystem.h b/src/3rdparty/freetype/include/freetype/ftsystem.h index 59cd019..a95b2c7 100644 --- a/src/3rdparty/freetype/include/freetype/ftsystem.h +++ b/src/3rdparty/freetype/include/freetype/ftsystem.h @@ -82,7 +82,7 @@ FT_BEGIN_HEADER * The size in bytes to allocate. * * @return: - * Address of new memory block. 0 in case of failure. + * Address of new memory block. 0~in case of failure. * */ typedef void* @@ -133,7 +133,7 @@ FT_BEGIN_HEADER * The block's current address. * * @return: - * New block address. 0 in case of memory shortage. + * New block address. 0~in case of memory shortage. * * @note: * In case of error, the old block must still be available. @@ -152,7 +152,7 @@ FT_BEGIN_HEADER * FT_MemoryRec * * @description: - * A structure used to describe a given memory manager to FreeType 2. + * A structure used to describe a given memory manager to FreeType~2. * * @fields: * user :: @@ -240,7 +240,7 @@ FT_BEGIN_HEADER * * @note: * This function might be called to perform a seek or skip operation - * with a `count' of 0. + * with a `count' of~0. * */ typedef unsigned long diff --git a/src/3rdparty/freetype/include/freetype/fttypes.h b/src/3rdparty/freetype/include/freetype/fttypes.h index a60aa54..54f08e3 100644 --- a/src/3rdparty/freetype/include/freetype/fttypes.h +++ b/src/3rdparty/freetype/include/freetype/fttypes.h @@ -43,7 +43,7 @@ FT_BEGIN_HEADER /* The basic data types defined by the library. */ /* */ /* <Description> */ - /* This section contains the basic data types defined by FreeType 2, */ + /* This section contains the basic data types defined by FreeType~2, */ /* ranging from simple scalar types to bitmap descriptors. More */ /* font-specific structures are defined in a different section. */ /* */ @@ -99,7 +99,7 @@ FT_BEGIN_HEADER /* */ /* <Description> */ /* A typedef of unsigned char, used for simple booleans. As usual, */ - /* values 1 and 0 represent true and false, respectively. */ + /* values 1 and~0 represent true and false, respectively. */ /* */ typedef unsigned char FT_Bool; @@ -167,7 +167,7 @@ FT_BEGIN_HEADER /* FT_Tag */ /* */ /* <Description> */ - /* A typedef for 32bit tags (as used in the SFNT format). */ + /* A typedef for 32-bit tags (as used in the SFNT format). */ /* */ typedef FT_UInt32 FT_Tag; @@ -290,7 +290,7 @@ FT_BEGIN_HEADER /* FT_Error */ /* */ /* <Description> */ - /* The FreeType error code type. A value of 0 is always interpreted */ + /* The FreeType error code type. A value of~0 is always interpreted */ /* as a successful operation. */ /* */ typedef int FT_Error; @@ -313,7 +313,7 @@ FT_BEGIN_HEADER /* FT_Offset */ /* */ /* <Description> */ - /* This is equivalent to the ANSI C `size_t' type, i.e., the largest */ + /* This is equivalent to the ANSI~C `size_t' type, i.e., the largest */ /* _unsigned_ integer type used to express a file size or position, */ /* or a memory block size. */ /* */ @@ -326,7 +326,7 @@ FT_BEGIN_HEADER /* FT_PtrDist */ /* */ /* <Description> */ - /* This is equivalent to the ANSI C `ptrdiff_t' type, i.e., the */ + /* This is equivalent to the ANSI~C `ptrdiff_t' type, i.e., the */ /* largest _signed_ integer type used to express the distance */ /* between two pointers. */ /* */ @@ -413,7 +413,7 @@ FT_BEGIN_HEADER /* FT_Generic_Finalizer */ /* */ /* <Description> */ - /* Describes a function used to destroy the `client' data of any */ + /* Describe a function used to destroy the `client' data of any */ /* FreeType object. See the description of the @FT_Generic type for */ /* details of usage. */ /* */ @@ -470,8 +470,8 @@ FT_BEGIN_HEADER /* TrueType tables into an unsigned long to be used within FreeType. */ /* */ /* <Note> */ - /* The produced values *must* be 32bit integers. Don't redefine this */ - /* macro. */ + /* The produced values *must* be 32-bit integers. Don't redefine */ + /* this macro. */ /* */ #define FT_MAKE_TAG( _x1, _x2, _x3, _x4 ) \ ( ( (FT_ULong)_x1 << 24 ) | \ diff --git a/src/3rdparty/freetype/include/freetype/ftwinfnt.h b/src/3rdparty/freetype/include/freetype/ftwinfnt.h index 3bcf20f..9a4cf58 100644 --- a/src/3rdparty/freetype/include/freetype/ftwinfnt.h +++ b/src/3rdparty/freetype/include/freetype/ftwinfnt.h @@ -111,11 +111,11 @@ FT_BEGIN_HEADER * ordering and minor deviations). * * FT_WinFNT_ID_CP949 :: - * A superset of Korean Hangul KS C 5601-1987 (with different + * A superset of Korean Hangul KS~C 5601-1987 (with different * ordering and minor deviations). * * FT_WinFNT_ID_CP950 :: - * A superset of traditional Chinese Big 5 ETen (with different + * A superset of traditional Chinese Big~5 ETen (with different * ordering and minor deviations). * * FT_WinFNT_ID_CP1250 :: @@ -248,7 +248,7 @@ FT_BEGIN_HEADER * aheader :: The WinFNT header. * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * @note: * This function only works with Windows FNT faces, returning an error diff --git a/src/3rdparty/freetype/include/freetype/ftxf86.h b/src/3rdparty/freetype/include/freetype/ftxf86.h index ea82abb..ae9ff07 100644 --- a/src/3rdparty/freetype/include/freetype/ftxf86.h +++ b/src/3rdparty/freetype/include/freetype/ftxf86.h @@ -60,8 +60,8 @@ FT_BEGIN_HEADER /* <Description> */ /* Return a string describing the format of a given face, using values */ /* which can be used as an X11 FONT_PROPERTY. Possible values are */ - /* `TrueType', `Type 1', `BDF', `PCF', `Type 42', `CID Type 1', `CFF', */ - /* `PFR', and `Windows FNT'. */ + /* `TrueType', `Type~1', `BDF', `PCF', `Type~42', `CID~Type~1', `CFF', */ + /* `PFR', and `Windows~FNT'. */ /* */ /* <Input> */ /* face :: */ diff --git a/src/3rdparty/freetype/include/freetype/internal/ftdebug.h b/src/3rdparty/freetype/include/freetype/internal/ftdebug.h index d40af4f..7baae35 100644 --- a/src/3rdparty/freetype/include/freetype/internal/ftdebug.h +++ b/src/3rdparty/freetype/include/freetype/internal/ftdebug.h @@ -4,7 +4,7 @@ /* */ /* Debugging and logging component (specification). */ /* */ -/* Copyright 1996-2001, 2002, 2004, 2006, 2007, 2008 by */ +/* Copyright 1996-2001, 2002, 2004, 2006, 2007, 2008, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -92,7 +92,7 @@ FT_BEGIN_HEADER #else /* !FT_DEBUG_LEVEL_TRACE */ -#define FT_TRACE( level, varformat ) do ; while ( 0 ) /* nothing */ +#define FT_TRACE( level, varformat ) do { } while ( 0 ) /* nothing */ #endif /* !FT_DEBUG_LEVEL_TRACE */ @@ -178,7 +178,7 @@ FT_BEGIN_HEADER #else /* !FT_DEBUG_LEVEL_ERROR */ -#define FT_ERROR( varformat ) do ; while ( 0 ) /* nothing */ +#define FT_ERROR( varformat ) do { } while ( 0 ) /* nothing */ #endif /* !FT_DEBUG_LEVEL_ERROR */ @@ -201,7 +201,7 @@ FT_BEGIN_HEADER #else /* !FT_DEBUG_LEVEL_ERROR */ -#define FT_ASSERT( condition ) do ; while ( 0 ) +#define FT_ASSERT( condition ) do { } while ( 0 ) #endif /* !FT_DEBUG_LEVEL_ERROR */ diff --git a/src/3rdparty/freetype/include/freetype/internal/ftdriver.h b/src/3rdparty/freetype/include/freetype/internal/ftdriver.h index e433e78..854abad 100644 --- a/src/3rdparty/freetype/include/freetype/internal/ftdriver.h +++ b/src/3rdparty/freetype/include/freetype/internal/ftdriver.h @@ -91,6 +91,7 @@ FT_BEGIN_HEADER (*FT_CharMap_CharNextFunc)( FT_CharMap charmap, FT_Long charcode ); + typedef FT_Error (*FT_Face_GetKerningFunc)( FT_Face face, FT_UInt left_glyph, @@ -104,11 +105,11 @@ FT_BEGIN_HEADER typedef FT_Error - (*FT_Face_GetAdvancesFunc)( FT_Face face, - FT_UInt first, - FT_UInt count, - FT_Bool vertical, - FT_UShort* advances ); + (*FT_Face_GetAdvancesFunc)( FT_Face face, + FT_UInt first, + FT_UInt count, + FT_Int32 flags, + FT_Fixed* advances ); /*************************************************************************/ diff --git a/src/3rdparty/freetype/include/freetype/internal/ftgloadr.h b/src/3rdparty/freetype/include/freetype/internal/ftgloadr.h index 9f47c0b..548481a 100644 --- a/src/3rdparty/freetype/include/freetype/internal/ftgloadr.h +++ b/src/3rdparty/freetype/include/freetype/internal/ftgloadr.h @@ -67,11 +67,11 @@ FT_BEGIN_HEADER typedef struct FT_GlyphLoadRec_ { - FT_Outline outline; /* outline */ - FT_Vector* extra_points; /* extra points table */ + FT_Outline outline; /* outline */ + FT_Vector* extra_points; /* extra points table */ FT_Vector* extra_points2; /* second extra points table */ - FT_UInt num_subglyphs; /* number of subglyphs */ - FT_SubGlyph subglyphs; /* subglyphs */ + FT_UInt num_subglyphs; /* number of subglyphs */ + FT_SubGlyph subglyphs; /* subglyphs */ } FT_GlyphLoadRec, *FT_GlyphLoad; diff --git a/src/3rdparty/freetype/include/freetype/internal/psaux.h b/src/3rdparty/freetype/include/freetype/internal/psaux.h index 67b7a42..7fb4c99 100644 --- a/src/3rdparty/freetype/include/freetype/internal/psaux.h +++ b/src/3rdparty/freetype/include/freetype/internal/psaux.h @@ -5,7 +5,7 @@ /* Auxiliary functions and data structures related to PostScript fonts */ /* (specification). */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2008 by */ +/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2008, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -197,6 +197,7 @@ FT_BEGIN_HEADER { T1_FIELD_LOCATION_CID_INFO, T1_FIELD_LOCATION_FONT_DICT, + T1_FIELD_LOCATION_FONT_EXTRA, T1_FIELD_LOCATION_FONT_INFO, T1_FIELD_LOCATION_PRIVATE, T1_FIELD_LOCATION_BBOX, @@ -227,7 +228,11 @@ FT_BEGIN_HEADER FT_UInt array_max; /* maximal number of elements for */ /* array */ FT_UInt count_offset; /* offset of element count for */ - /* arrays */ + /* arrays; must not be zero if in */ + /* use -- in other words, a */ + /* `num_FOO' element must not */ + /* start the used structure if we */ + /* parse a `FOO' array */ FT_UInt dict; /* where we expect it */ } T1_FieldRec; diff --git a/src/3rdparty/freetype/include/freetype/internal/services/svcid.h b/src/3rdparty/freetype/include/freetype/internal/services/svcid.h index 47fef62..2e391f2 100644 --- a/src/3rdparty/freetype/include/freetype/internal/services/svcid.h +++ b/src/3rdparty/freetype/include/freetype/internal/services/svcid.h @@ -4,7 +4,7 @@ /* */ /* The FreeType CID font services (specification). */ /* */ -/* Copyright 2007 by Derek Clegg. */ +/* Copyright 2007, 2009 by Derek Clegg, Michael Toftdal. */ /* */ /* This file is part of the FreeType project, and may only be used, */ /* modified, and distributed under the terms of the FreeType project */ @@ -31,10 +31,19 @@ FT_BEGIN_HEADER const char* *registry, const char* *ordering, FT_Int *supplement ); + typedef FT_Error + (*FT_CID_GetIsInternallyCIDKeyedFunc)( FT_Face face, + FT_Bool *is_cid ); + typedef FT_Error + (*FT_CID_GetCIDFromGlyphIndexFunc)( FT_Face face, + FT_UInt glyph_index, + FT_UInt *cid ); FT_DEFINE_SERVICE( CID ) { FT_CID_GetRegistryOrderingSupplementFunc get_ros; + FT_CID_GetIsInternallyCIDKeyedFunc get_is_cid; + FT_CID_GetCIDFromGlyphIndexFunc get_cid_from_glyph_index; }; /* */ diff --git a/src/3rdparty/freetype/include/freetype/internal/services/svpsinfo.h b/src/3rdparty/freetype/include/freetype/internal/services/svpsinfo.h index 63f5db9..124c6f9 100644 --- a/src/3rdparty/freetype/include/freetype/internal/services/svpsinfo.h +++ b/src/3rdparty/freetype/include/freetype/internal/services/svpsinfo.h @@ -4,7 +4,7 @@ /* */ /* The FreeType PostScript info service (specification). */ /* */ -/* Copyright 2003, 2004 by */ +/* Copyright 2003, 2004, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -33,6 +33,10 @@ FT_BEGIN_HEADER (*PS_GetFontInfoFunc)( FT_Face face, PS_FontInfoRec* afont_info ); + typedef FT_Error + (*PS_GetFontExtraFunc)( FT_Face face, + PS_FontExtraRec* afont_extra ); + typedef FT_Int (*PS_HasGlyphNamesFunc)( FT_Face face ); @@ -44,6 +48,7 @@ FT_BEGIN_HEADER FT_DEFINE_SERVICE( PsInfo ) { PS_GetFontInfoFunc ps_get_font_info; + PS_GetFontExtraFunc ps_get_font_extra; PS_HasGlyphNamesFunc ps_has_glyph_names; PS_GetFontPrivateFunc ps_get_font_private; }; diff --git a/src/3rdparty/freetype/include/freetype/internal/services/svttcmap.h b/src/3rdparty/freetype/include/freetype/internal/services/svttcmap.h index 1e02d15..553ecb0 100644 --- a/src/3rdparty/freetype/include/freetype/internal/services/svttcmap.h +++ b/src/3rdparty/freetype/include/freetype/internal/services/svttcmap.h @@ -7,7 +7,7 @@ /* Copyright 2003 by */ /* Masatake YAMATO, Redhat K.K. */ /* */ -/* Copyright 2003 by */ +/* Copyright 2003, 2008 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -49,6 +49,13 @@ FT_BEGIN_HEADER /* The language ID used in Mac fonts. Definitions of values are in */ /* freetype/ttnameid.h. */ /* */ + /* format :: */ + /* The cmap format. OpenType 1.5 defines the formats 0 (byte */ + /* encoding table), 2~(high-byte mapping through table), 4~(segment */ + /* mapping to delta values), 6~(trimmed table mapping), 8~(mixed */ + /* 16-bit and 32-bit coverage), 10~(trimmed array), 12~(segmented */ + /* coverage), and 14 (Unicode Variation Sequences). */ + /* */ typedef struct TT_CMapInfo_ { FT_ULong language; diff --git a/src/3rdparty/freetype/include/freetype/internal/t1types.h b/src/3rdparty/freetype/include/freetype/internal/t1types.h index 047c6d5..ff021b0 100644 --- a/src/3rdparty/freetype/include/freetype/internal/t1types.h +++ b/src/3rdparty/freetype/include/freetype/internal/t1types.h @@ -5,7 +5,7 @@ /* Basic Type1/Type2 type definitions and interface (specification */ /* only). */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2006 by */ +/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2008, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -87,11 +87,24 @@ FT_BEGIN_HEADER } T1_EncodingType; + /* used to hold extra data of PS_FontInfoRec that + * cannot be stored in the publicly defined structure. + * + * Note these can't be blended with multiple-masters. + */ + typedef struct PS_FontExtraRec_ + { + FT_UShort fs_type; + + } PS_FontExtraRec; + + typedef struct T1_FontRec_ { - PS_FontInfoRec font_info; /* font info dictionary */ - PS_PrivateRec private_dict; /* private dictionary */ - FT_String* font_name; /* top-level dictionary */ + PS_FontInfoRec font_info; /* font info dictionary */ + PS_FontExtraRec font_extra; /* font info extra fields */ + PS_PrivateRec private_dict; /* private dictionary */ + FT_String* font_name; /* top-level dictionary */ T1_EncodingType encoding_type; T1_EncodingRec encoding; @@ -231,7 +244,10 @@ FT_BEGIN_HEADER void* psnames; void* psaux; CID_FaceInfoRec cid; + PS_FontExtraRec font_extra; +#if 0 void* afm_data; +#endif CID_Subrs subrs; /* since version 2.1 - interface to PostScript hinter */ diff --git a/src/3rdparty/freetype/include/freetype/t1tables.h b/src/3rdparty/freetype/include/freetype/t1tables.h index bd11f33..5e2a393 100644 --- a/src/3rdparty/freetype/include/freetype/t1tables.h +++ b/src/3rdparty/freetype/include/freetype/t1tables.h @@ -5,7 +5,7 @@ /* Basic Type 1/Type 2 tables definitions and interface (specification */ /* only). */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2008 by */ +/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2008, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -43,7 +43,7 @@ FT_BEGIN_HEADER /* Type 1 Tables */ /* */ /* <Abstract> */ - /* Type 1 (PostScript) specific font tables. */ + /* Type~1 (PostScript) specific font tables. */ /* */ /* <Description> */ /* This section contains the definition of Type 1-specific tables, */ @@ -62,8 +62,8 @@ FT_BEGIN_HEADER /* PS_FontInfoRec */ /* */ /* <Description> */ - /* A structure used to model a Type1/Type2 FontInfo dictionary. Note */ - /* that for Multiple Master fonts, each instance has its own */ + /* A structure used to model a Type~1 or Type~2 FontInfo dictionary. */ + /* Note that for Multiple Master fonts, each instance has its own */ /* FontInfo dictionary. */ /* */ typedef struct PS_FontInfoRec_ @@ -111,9 +111,9 @@ FT_BEGIN_HEADER /* PS_PrivateRec */ /* */ /* <Description> */ - /* A structure used to model a Type1/Type2 private dictionary. Note */ - /* that for Multiple Master fonts, each instance has its own Private */ - /* dictionary. */ + /* A structure used to model a Type~1 or Type~2 private dictionary. */ + /* Note that for Multiple Master fonts, each instance has its own */ + /* Private dictionary. */ /* */ typedef struct PS_PrivateRec_ { @@ -408,7 +408,7 @@ FT_BEGIN_HEADER * FT_Has_PS_Glyph_Names * * @description: - * Return true if a given face provides reliable Postscript glyph + * Return true if a given face provides reliable PostScript glyph * names. This is similar to using the @FT_HAS_GLYPH_NAMES macro, * except that certain fonts (mostly TrueType) contain incorrect * glyph name tables. @@ -435,24 +435,24 @@ FT_BEGIN_HEADER * * @description: * Retrieve the @PS_FontInfoRec structure corresponding to a given - * Postscript font. + * PostScript font. * * @input: * face :: - * Postscript face handle. + * PostScript face handle. * * @output: * afont_info :: * Output font info structure pointer. * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * @note: * The string pointers within the font info structure are owned by * the face and don't need to be freed by the caller. * - * If the font's format is not Postscript-based, this function will + * If the font's format is not PostScript-based, this function will * return the `FT_Err_Invalid_Argument' error code. * */ @@ -468,25 +468,25 @@ FT_BEGIN_HEADER * * @description: * Retrieve the @PS_PrivateRec structure corresponding to a given - * Postscript font. + * PostScript font. * * @input: * face :: - * Postscript face handle. + * PostScript face handle. * * @output: * afont_private :: * Output private dictionary structure pointer. * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * @note: - * The string pointers within the font info structure are owned by + * The string pointers within the @PS_PrivateRec structure are owned by * the face and don't need to be freed by the caller. * - * If the font's format is not Postscript-based, this function will - * return the `FT_Err_Invalid_Argument' error code. + * If the font's format is not PostScript-based, this function returns + * the `FT_Err_Invalid_Argument' error code. * */ FT_EXPORT( FT_Error ) diff --git a/src/3rdparty/freetype/include/freetype/ttnameid.h b/src/3rdparty/freetype/include/freetype/ttnameid.h index 0cddba1..cbeac78 100644 --- a/src/3rdparty/freetype/include/freetype/ttnameid.h +++ b/src/3rdparty/freetype/include/freetype/ttnameid.h @@ -303,7 +303,7 @@ FT_BEGIN_HEADER * TT_ADOBE_ID_CUSTOM :: * Adobe custom encoding. * TT_ADOBE_ID_LATIN_1 :: - * Adobe Latin 1 encoding. + * Adobe Latin~1 encoding. */ #define TT_ADOBE_ID_STANDARD 0 @@ -835,16 +835,18 @@ FT_BEGIN_HEADER /* This is new in OpenType 1.3 */ #define TT_NAME_ID_CID_FINDFONT_NAME 20 + /* This is new in OpenType 1.5 */ +#define TT_NAME_ID_WWS_FAMILY 21 +#define TT_NAME_ID_WWS_SUBFAMILY 22 + /*************************************************************************/ /* */ /* Bit mask values for the Unicode Ranges from the TTF `OS2 ' table. */ /* */ - /* Updated 02-Jul-2000. */ + /* Updated 08-Nov-2008. */ /* */ - /* General Scripts Area */ - /* Bit 0 Basic Latin */ #define TT_UCR_BASIC_LATIN (1L << 0) /* U+0020-U+007E */ /* Bit 1 C1 Controls and Latin-1 Supplement */ @@ -853,27 +855,44 @@ FT_BEGIN_HEADER #define TT_UCR_LATIN_EXTENDED_A (1L << 2) /* U+0100-U+017F */ /* Bit 3 Latin Extended-B */ #define TT_UCR_LATIN_EXTENDED_B (1L << 3) /* U+0180-U+024F */ - /* Bit 4 IPA Extensions */ + /* Bit 4 IPA Extensions */ + /* Phonetic Extensions */ + /* Phonetic Extensions Supplement */ #define TT_UCR_IPA_EXTENSIONS (1L << 4) /* U+0250-U+02AF */ + /* U+1D00-U+1D7F */ + /* U+1D80-U+1DBF */ /* Bit 5 Spacing Modifier Letters */ + /* Modifier Tone Letters */ #define TT_UCR_SPACING_MODIFIER (1L << 5) /* U+02B0-U+02FF */ - /* Bit 6 Combining Diacritical Marks */ + /* U+A700-U+A71F */ + /* Bit 6 Combining Diacritical Marks */ + /* Combining Diacritical Marks Supplement */ #define TT_UCR_COMBINING_DIACRITICS (1L << 6) /* U+0300-U+036F */ + /* U+1DC0-U+1DFF */ /* Bit 7 Greek and Coptic */ #define TT_UCR_GREEK (1L << 7) /* U+0370-U+03FF */ - /* Bit 8 is reserved (was: Greek Symbols and Coptic) */ - /* Bit 9 Cyrillic + */ - /* Cyrillic Supplementary */ + /* Bit 8 Coptic */ +#define TT_UCR_COPTIC (1L << 8) /* U+2C80-U+2CFF */ + /* Bit 9 Cyrillic */ + /* Cyrillic Supplement */ + /* Cyrillic Extended-A */ + /* Cyrillic Extended-B */ #define TT_UCR_CYRILLIC (1L << 9) /* U+0400-U+04FF */ /* U+0500-U+052F */ + /* U+2DE0-U+2DFF */ + /* U+A640-U+A69F */ /* Bit 10 Armenian */ #define TT_UCR_ARMENIAN (1L << 10) /* U+0530-U+058F */ /* Bit 11 Hebrew */ #define TT_UCR_HEBREW (1L << 11) /* U+0590-U+05FF */ - /* Bit 12 is reserved (was: Hebrew Extended) */ - /* Bit 13 Arabic */ + /* Bit 12 Vai */ +#define TT_UCR_VAI (1L << 12) /* U+A500-U+A63F */ + /* Bit 13 Arabic */ + /* Arabic Supplement */ #define TT_UCR_ARABIC (1L << 13) /* U+0600-U+06FF */ - /* Bit 14 is reserved (was: Arabic Extended) */ + /* U+0750-U+077F */ + /* Bit 14 NKo */ +#define TT_UCR_NKO (1L << 14) /* U+07C0-U+07FF */ /* Bit 15 Devanagari */ #define TT_UCR_DEVANAGARI (1L << 15) /* U+0900-U+097F */ /* Bit 16 Bengali */ @@ -896,20 +915,26 @@ FT_BEGIN_HEADER #define TT_UCR_THAI (1L << 24) /* U+0E00-U+0E7F */ /* Bit 25 Lao */ #define TT_UCR_LAO (1L << 25) /* U+0E80-U+0EFF */ - /* Bit 26 Georgian */ + /* Bit 26 Georgian */ + /* Georgian Supplement */ #define TT_UCR_GEORGIAN (1L << 26) /* U+10A0-U+10FF */ - /* Bit 27 is reserved (was Georgian Extended) */ + /* U+2D00-U+2D2F */ + /* Bit 27 Balinese */ +#define TT_UCR_BALINESE (1L << 27) /* U+1B00-U+1B7F */ /* Bit 28 Hangul Jamo */ #define TT_UCR_HANGUL_JAMO (1L << 28) /* U+1100-U+11FF */ /* Bit 29 Latin Extended Additional */ + /* Latin Extended-C */ + /* Latin Extended-D */ #define TT_UCR_LATIN_EXTENDED_ADDITIONAL (1L << 29) /* U+1E00-U+1EFF */ + /* U+2C60-U+2C7F */ + /* U+A720-U+A7FF */ /* Bit 30 Greek Extended */ #define TT_UCR_GREEK_EXTENDED (1L << 30) /* U+1F00-U+1FFF */ - - /* Symbols Area */ - - /* Bit 31 General Punctuation */ + /* Bit 31 General Punctuation */ + /* Supplemental Punctuation */ #define TT_UCR_GENERAL_PUNCTUATION (1L << 31) /* U+2000-U+206F */ + /* U+2E00-U+2E7F */ /* Bit 32 Superscripts And Subscripts */ #define TT_UCR_SUPERSCRIPTS_SUBSCRIPTS (1L << 0) /* U+2070-U+209F */ /* Bit 33 Currency Symbols */ @@ -920,16 +945,18 @@ FT_BEGIN_HEADER #define TT_UCR_LETTERLIKE_SYMBOLS (1L << 3) /* U+2100-U+214F */ /* Bit 36 Number Forms */ #define TT_UCR_NUMBER_FORMS (1L << 4) /* U+2150-U+218F */ - /* Bit 37 Arrows + */ - /* Supplemental Arrows-A + */ - /* Supplemental Arrows-B */ + /* Bit 37 Arrows */ + /* Supplemental Arrows-A */ + /* Supplemental Arrows-B */ + /* Miscellaneous Symbols and Arrows */ #define TT_UCR_ARROWS (1L << 5) /* U+2190-U+21FF */ /* U+27F0-U+27FF */ /* U+2900-U+297F */ - /* Bit 38 Mathematical Operators + */ - /* Supplemental Mathematical Operators + */ - /* Miscellaneous Mathematical Symbols-A + */ - /* Miscellaneous Mathematical Symbols-B */ + /* U+2B00-U+2BFF */ + /* Bit 38 Mathematical Operators */ + /* Supplemental Mathematical Operators */ + /* Miscellaneous Mathematical Symbols-A */ + /* Miscellaneous Mathematical Symbols-B */ #define TT_UCR_MATHEMATICAL_OPERATORS (1L << 6) /* U+2200-U+22FF */ /* U+2A00-U+2AFF */ /* U+27C0-U+27EF */ @@ -952,60 +979,53 @@ FT_BEGIN_HEADER #define TT_UCR_MISCELLANEOUS_SYMBOLS (1L << 14) /* U+2600-U+26FF */ /* Bit 47 Dingbats */ #define TT_UCR_DINGBATS (1L << 15) /* U+2700-U+27BF */ - - /* CJK Phonetics and Symbols Area */ - /* Bit 48 CJK Symbols and Punctuation */ #define TT_UCR_CJK_SYMBOLS (1L << 16) /* U+3000-U+303F */ /* Bit 49 Hiragana */ #define TT_UCR_HIRAGANA (1L << 17) /* U+3040-U+309F */ - /* Bit 50 Katakana + */ - /* Katakana Phonetic Extensions */ + /* Bit 50 Katakana */ + /* Katakana Phonetic Extensions */ #define TT_UCR_KATAKANA (1L << 18) /* U+30A0-U+30FF */ /* U+31F0-U+31FF */ - /* Bit 51 Bopomofo + */ - /* Bopomofo Extended */ + /* Bit 51 Bopomofo */ + /* Bopomofo Extended */ #define TT_UCR_BOPOMOFO (1L << 19) /* U+3100-U+312F */ /* U+31A0-U+31BF */ /* Bit 52 Hangul Compatibility Jamo */ #define TT_UCR_HANGUL_COMPATIBILITY_JAMO (1L << 20) /* U+3130-U+318F */ - /* Bit 53 Kanbun */ -#define TT_UCR_CJK_MISC (1L << 21) /* U+3190-U+319F */ -#define TT_UCR_KANBUN TT_UCR_CJK_MISC + /* Bit 53 Phags-Pa */ +#define TT_UCR_CJK_MISC (1L << 21) /* U+A840-U+A87F */ +#define TT_UCR_KANBUN TT_UCR_CJK_MISC /* deprecated */ +#define TT_UCR_PHAGSPA /* Bit 54 Enclosed CJK Letters and Months */ #define TT_UCR_ENCLOSED_CJK_LETTERS_MONTHS (1L << 22) /* U+3200-U+32FF */ /* Bit 55 CJK Compatibility */ #define TT_UCR_CJK_COMPATIBILITY (1L << 23) /* U+3300-U+33FF */ - - /* Hangul Syllables Area */ - - /* Bit 56 Hangul */ + /* Bit 56 Hangul Syllables */ #define TT_UCR_HANGUL (1L << 24) /* U+AC00-U+D7A3 */ - - /* Surrogates Area */ - - /* Bit 57 High Surrogates + */ - /* High Private Use Surrogates + */ - /* Low Surrogates */ + /* Bit 57 High Surrogates */ + /* High Private Use Surrogates */ + /* Low Surrogates */ + /* */ + /* According to OpenType specs v.1.3+, */ + /* setting bit 57 implies that there is */ + /* at least one codepoint beyond the */ + /* Basic Multilingual Plane that is */ + /* supported by this font. So it really */ + /* means >= U+10000 */ #define TT_UCR_SURROGATES (1L << 25) /* U+D800-U+DB7F */ /* U+DB80-U+DBFF */ /* U+DC00-U+DFFF */ - /* According to OpenType specs v.1.3+, setting bit 57 implies that there */ - /* is at least one codepoint beyond the Basic Multilingual Plane that is */ - /* supported by this font. So it really means: >= U+10000 */ - - /* Bit 58 is reserved for Unicode SubRanges */ - - /* CJK Ideographs Area */ - - /* Bit 59 CJK Unified Ideographs + */ - /* CJK Radicals Supplement + */ - /* Kangxi Radicals + */ - /* Ideographic Description Characters + */ - /* CJK Unified Ideographs Extension A */ - /* CJK Unified Ideographs Extension A + */ - /* CJK Unified Ideographs Extension B + */ - /* Kanbun */ +#define TT_UCR_NON_PLANE_0 TT_UCR_SURROGATES + /* Bit 58 Phoenician */ +#define TT_UCR_PHOENICIAN (1L << 26) /*U+10900-U+1091F*/ + /* Bit 59 CJK Unified Ideographs */ + /* CJK Radicals Supplement */ + /* Kangxi Radicals */ + /* Ideographic Description Characters */ + /* CJK Unified Ideographs Extension A */ + /* CJK Unified Ideographs Extension B */ + /* Kanbun */ #define TT_UCR_CJK_UNIFIED_IDEOGRAPHS (1L << 27) /* U+4E00-U+9FFF */ /* U+2E80-U+2EFF */ /* U+2F00-U+2FDF */ @@ -1013,17 +1033,13 @@ FT_BEGIN_HEADER /* U+3400-U+4DB5 */ /*U+20000-U+2A6DF*/ /* U+3190-U+319F */ - - /* Private Use Area */ - /* Bit 60 Private Use */ #define TT_UCR_PRIVATE_USE (1L << 28) /* U+E000-U+F8FF */ - - /* Compatibility Area and Specials */ - - /* Bit 61 CJK Compatibility Ideographs + */ - /* CJK Compatibility Ideographs Supplement */ -#define TT_UCR_CJK_COMPATIBILITY_IDEOGRAPHS (1L << 29) /* U+F900-U+FAFF */ + /* Bit 61 CJK Strokes */ + /* CJK Compatibility Ideographs */ + /* CJK Compatibility Ideographs Supplement */ +#define TT_UCR_CJK_COMPATIBILITY_IDEOGRAPHS (1L << 29) /* U+31C0-U+31EF */ + /* U+F900-U+FAFF */ /*U+2F800-U+2FA1F*/ /* Bit 62 Alphabetic Presentation Forms */ #define TT_UCR_ALPHABETIC_PRESENTATION_FORMS (1L << 30) /* U+FB00-U+FB4F */ @@ -1031,8 +1047,10 @@ FT_BEGIN_HEADER #define TT_UCR_ARABIC_PRESENTATIONS_A (1L << 31) /* U+FB50-U+FDFF */ /* Bit 64 Combining Half Marks */ #define TT_UCR_COMBINING_HALF_MARKS (1L << 0) /* U+FE20-U+FE2F */ - /* Bit 65 CJK Compatibility Forms */ -#define TT_UCR_CJK_COMPATIBILITY_FORMS (1L << 1) /* U+FE30-U+FE4F */ + /* Bit 65 Vertical forms */ + /* CJK Compatibility Forms */ +#define TT_UCR_CJK_COMPATIBILITY_FORMS (1L << 1) /* U+FE10-U+FE1F */ + /* U+FE30-U+FE4F */ /* Bit 66 Small Form Variants */ #define TT_UCR_SMALL_FORM_VARIANTS (1L << 2) /* U+FE50-U+FE6F */ /* Bit 67 Arabic Presentation Forms-B */ @@ -1051,8 +1069,12 @@ FT_BEGIN_HEADER #define TT_UCR_SINHALA (1L << 9) /* U+0D80-U+0DFF */ /* Bit 74 Myanmar */ #define TT_UCR_MYANMAR (1L << 10) /* U+1000-U+109F */ - /* Bit 75 Ethiopic */ + /* Bit 75 Ethiopic */ + /* Ethiopic Supplement */ + /* Ethiopic Extended */ #define TT_UCR_ETHIOPIC (1L << 11) /* U+1200-U+137F */ + /* U+1380-U+139F */ + /* U+2D80-U+2DDF */ /* Bit 76 Cherokee */ #define TT_UCR_CHEROKEE (1L << 12) /* U+13A0-U+13FF */ /* Bit 77 Unified Canadian Aboriginal Syllabics */ @@ -1061,20 +1083,22 @@ FT_BEGIN_HEADER #define TT_UCR_OGHAM (1L << 14) /* U+1680-U+169F */ /* Bit 79 Runic */ #define TT_UCR_RUNIC (1L << 15) /* U+16A0-U+16FF */ - /* Bit 80 Khmer */ + /* Bit 80 Khmer */ + /* Khmer Symbols */ #define TT_UCR_KHMER (1L << 16) /* U+1780-U+17FF */ + /* U+19E0-U+19FF */ /* Bit 81 Mongolian */ #define TT_UCR_MONGOLIAN (1L << 17) /* U+1800-U+18AF */ /* Bit 82 Braille Patterns */ #define TT_UCR_BRAILLE (1L << 18) /* U+2800-U+28FF */ - /* Bit 83 Yi Syllables + */ - /* Yi Radicals */ + /* Bit 83 Yi Syllables */ + /* Yi Radicals */ #define TT_UCR_YI (1L << 19) /* U+A000-U+A48F */ /* U+A490-U+A4CF */ - /* Bit 84 Tagalog + */ - /* Hanunoo + */ - /* Buhid + */ - /* Tagbanwa */ + /* Bit 84 Tagalog */ + /* Hanunoo */ + /* Buhid */ + /* Tagbanwa */ #define TT_UCR_PHILIPPINE (1L << 20) /* U+1700-U+171F */ /* U+1720-U+173F */ /* U+1740-U+175F */ @@ -1085,20 +1109,97 @@ FT_BEGIN_HEADER #define TT_UCR_GOTHIC (1L << 22) /*U+10330-U+1034F*/ /* Bit 87 Deseret */ #define TT_UCR_DESERET (1L << 23) /*U+10400-U+1044F*/ - /* Bit 88 Byzantine Musical Symbols + */ - /* Musical Symbols */ + /* Bit 88 Byzantine Musical Symbols */ + /* Musical Symbols */ + /* Ancient Greek Musical Notation */ #define TT_UCR_MUSICAL_SYMBOLS (1L << 24) /*U+1D000-U+1D0FF*/ /*U+1D100-U+1D1FF*/ + /*U+1D200-U+1D24F*/ /* Bit 89 Mathematical Alphanumeric Symbols */ #define TT_UCR_MATH_ALPHANUMERIC_SYMBOLS (1L << 25) /*U+1D400-U+1D7FF*/ - /* Bit 90 Private Use (plane 15) + */ - /* Private Use (plane 16) */ + /* Bit 90 Private Use (plane 15) */ + /* Private Use (plane 16) */ #define TT_UCR_PRIVATE_USE_SUPPLEMENTARY (1L << 26) /*U+F0000-U+FFFFD*/ /*U+100000-U+10FFFD*/ - /* Bit 91 Variation Selectors */ + /* Bit 91 Variation Selectors */ + /* Variation Selectors Supplement */ #define TT_UCR_VARIATION_SELECTORS (1L << 27) /* U+FE00-U+FE0F */ + /*U+E0100-U+E01EF*/ /* Bit 92 Tags */ #define TT_UCR_TAGS (1L << 28) /*U+E0000-U+E007F*/ + /* Bit 93 Limbu */ +#define TT_UCR_LIMBU (1L << 29) /* U+1900-U+194F */ + /* Bit 94 Tai Le */ +#define TT_UCR_TAI_LE (1L << 30) /* U+1950-U+197F */ + /* Bit 95 New Tai Lue */ +#define TT_UCR_NEW_TAI_LUE (1L << 31) /* U+1980-U+19DF */ + /* Bit 96 Buginese */ +#define TT_UCR_BUGINESE (1L << 0) /* U+1A00-U+1A1F */ + /* Bit 97 Glagolitic */ +#define TT_UCR_GLAGOLITIC (1L << 1) /* U+2C00-U+2C5F */ + /* Bit 98 Tifinagh */ +#define TT_UCR_TIFINAGH (1L << 2) /* U+2D30-U+2D7F */ + /* Bit 99 Yijing Hexagram Symbols */ +#define TT_UCR_YIJING (1L << 3) /* U+4DC0-U+4DFF */ + /* Bit 100 Syloti Nagri */ +#define TT_UCR_SYLOTI_NAGRI (1L << 4) /* U+A800-U+A82F */ + /* Bit 101 Linear B Syllabary */ + /* Linear B Ideograms */ + /* Aegean Numbers */ +#define TT_UCR_LINEAR_B (1L << 5) /*U+10000-U+1007F*/ + /*U+10080-U+100FF*/ + /*U+10100-U+1013F*/ + /* Bit 102 Ancient Greek Numbers */ +#define TT_UCR_ANCIENT_GREEK_NUMBERS (1L << 6) /*U+10140-U+1018F*/ + /* Bit 103 Ugaritic */ +#define TT_UCR_UGARITIC (1L << 7) /*U+10380-U+1039F*/ + /* Bit 104 Old Persian */ +#define TT_UCR_OLD_PERSIAN (1L << 8) /*U+103A0-U+103DF*/ + /* Bit 105 Shavian */ +#define TT_UCR_SHAVIAN (1L << 9) /*U+10450-U+1047F*/ + /* Bit 106 Osmanya */ +#define TT_UCR_OSMANYA (1L << 10) /*U+10480-U+104AF*/ + /* Bit 107 Cypriot Syllabary */ +#define TT_UCR_CYPRIOT_SYLLABARY (1L << 11) /*U+10800-U+1083F*/ + /* Bit 108 Kharoshthi */ +#define TT_UCR_KHAROSHTHI (1L << 12) /*U+10A00-U+10A5F*/ + /* Bit 109 Tai Xuan Jing Symbols */ +#define TT_UCR_TAI_XUAN_JING (1L << 13) /*U+1D300-U+1D35F*/ + /* Bit 110 Cuneiform */ + /* Cuneiform Numbers and Punctuation */ +#define TT_UCR_CUNEIFORM (1L << 14) /*U+12000-U+123FF*/ + /*U+12400-U+1247F*/ + /* Bit 111 Counting Rod Numerals */ +#define TT_UCR_COUNTING_ROD_NUMERALS (1L << 15) /*U+1D360-U+1D37F*/ + /* Bit 112 Sundanese */ +#define TT_UCR_SUNDANESE (1L << 16) /* U+1B80-U+1BBF */ + /* Bit 113 Lepcha */ +#define TT_UCR_LEPCHA (1L << 17) /* U+1C00-U+1C4F */ + /* Bit 114 Ol Chiki */ +#define TT_UCR_OL_CHIKI (1L << 18) /* U+1C50-U+1C7F */ + /* Bit 115 Saurashtra */ +#define TT_UCR_SAURASHTRA (1L << 19) /* U+A880-U+A8DF */ + /* Bit 116 Kayah Li */ +#define TT_UCR_KAYAH_LI (1L << 20) /* U+A900-U+A92F */ + /* Bit 117 Rejang */ +#define TT_UCR_REJANG (1L << 21) /* U+A930-U+A95F */ + /* Bit 118 Cham */ +#define TT_UCR_CHAM (1L << 22) /* U+AA00-U+AA5F */ + /* Bit 119 Ancient Symbols */ +#define TT_UCR_ANCIENT_SYMBOLS (1L << 23) /*U+10190-U+101CF*/ + /* Bit 120 Phaistos Disc */ +#define TT_UCR_PHAISTOS_DISC (1L << 24) /*U+101D0-U+101FF*/ + /* Bit 121 Carian */ + /* Lycian */ + /* Lydian */ +#define TT_UCR_OLD_ANATOLIAN (1L << 25) /*U+102A0-U+102DF*/ + /*U+10280-U+1029F*/ + /*U+10920-U+1093F*/ + /* Bit 122 Domino Tiles */ + /* Mahjong Tiles */ +#define TT_UCR_GAME_TILES (1L << 26) /*U+1F030-U+1F09F*/ + /*U+1F000-U+1F02F*/ + /* Bit 123-127 Reserved for process-internal usage */ /*************************************************************************/ @@ -1117,7 +1218,7 @@ FT_BEGIN_HEADER /* */ /* Here some alias #defines in order to be clearer. */ /* */ - /* These are not always #defined to stay within the 31 character limit */ + /* These are not always #defined to stay within the 31~character limit */ /* which some compilers have. */ /* */ /* Credits go to Dave Hoo <dhoo@flash.net> for pointing out that modern */ diff --git a/src/3rdparty/freetype/include/freetype/tttables.h b/src/3rdparty/freetype/include/freetype/tttables.h index 79edb0e..c12b172 100644 --- a/src/3rdparty/freetype/include/freetype/tttables.h +++ b/src/3rdparty/freetype/include/freetype/tttables.h @@ -5,7 +5,7 @@ /* Basic SFNT/TrueType tables definitions and interface */ /* (specification only). */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2008 by */ +/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2008, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -156,9 +156,9 @@ FT_BEGIN_HEADER /* caret_Slope_Run :: The run coefficient of the cursor's */ /* slope. */ /* */ - /* Reserved :: 8 reserved bytes. */ + /* Reserved :: 8~reserved bytes. */ /* */ - /* metric_Data_Format :: Always 0. */ + /* metric_Data_Format :: Always~0. */ /* */ /* number_Of_HMetrics :: Number of HMetrics entries in the `hmtx' */ /* table -- this value can be smaller than */ @@ -281,9 +281,9 @@ FT_BEGIN_HEADER /* This value is `reserved' in vmtx */ /* version 1.0. */ /* */ - /* Reserved :: 8 reserved bytes. */ + /* Reserved :: 8~reserved bytes. */ /* */ - /* metric_Data_Format :: Always 0. */ + /* metric_Data_Format :: Always~0. */ /* */ /* number_Of_HMetrics :: Number of VMetrics entries in the */ /* `vmtx' table -- this value can be */ @@ -406,9 +406,9 @@ FT_BEGIN_HEADER /* TT_Postscript */ /* */ /* <Description> */ - /* A structure used to model a TrueType Postscript table. All fields */ + /* A structure used to model a TrueType PostScript table. All fields */ /* comply to the TrueType specification. This structure does not */ - /* reference the Postscript glyph names, which can be nevertheless */ + /* reference the PostScript glyph names, which can be nevertheless */ /* accessed with the `ttpost' module. */ /* */ typedef struct TT_Postscript_ @@ -578,7 +578,7 @@ FT_BEGIN_HEADER /* FT_Get_Sfnt_Table */ /* */ /* <Description> */ - /* Returns a pointer to a given SFNT table within a face. */ + /* Return a pointer to a given SFNT table within a face. */ /* */ /* <Input> */ /* face :: A handle to the source. */ @@ -586,7 +586,7 @@ FT_BEGIN_HEADER /* tag :: The index of the SFNT table. */ /* */ /* <Return> */ - /* A type-less pointer to the table. This will be 0 in case of */ + /* A type-less pointer to the table. This will be~0 in case of */ /* error, or if the corresponding table was not found *OR* loaded */ /* from the file. */ /* */ @@ -608,14 +608,14 @@ FT_BEGIN_HEADER * FT_Load_Sfnt_Table * * @description: - * Loads any font table into client memory. + * Load any font table into client memory. * * @input: * face :: * A handle to the source face. * * tag :: - * The four-byte tag of the table to load. Use the value 0 if you want + * The four-byte tag of the table to load. Use the value~0 if you want * to access the whole font file. Otherwise, you can use one of the * definitions found in the @FT_TRUETYPE_TAGS_H file, or forge a new * one with @FT_MAKE_TAG. @@ -633,18 +633,18 @@ FT_BEGIN_HEADER * If the `length' parameter is NULL, then try to load the whole table. * Return an error code if it fails. * - * Else, if `*length' is 0, exit immediately while returning the + * Else, if `*length' is~0, exit immediately while returning the * table's (or file) full size in it. * * Else the number of bytes to read from the table or file, from the * starting offset. * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * @note: * If you need to determine the table's length you should first call this - * function with `*length' set to 0, as in the following example: + * function with `*length' set to~0, as in the following example: * * { * FT_ULong length = 0; @@ -674,7 +674,7 @@ FT_BEGIN_HEADER * FT_Sfnt_Table_Info * * @description: - * Returns information on an SFNT table. + * Return information on an SFNT table. * * @input: * face :: @@ -692,10 +692,10 @@ FT_BEGIN_HEADER * The length of the SFNT table. * * @return: - * FreeType error code. 0 means success. + * FreeType error code. 0~means success. * * @note: - * SFNT tables with length zero are treated as missing by Windows. + * SFNT tables with length zero are treated as missing. * */ FT_EXPORT( FT_Error ) @@ -720,7 +720,7 @@ FT_BEGIN_HEADER /* */ /* <Return> */ /* The language ID of `charmap'. If `charmap' doesn't belong to a */ - /* TrueType/sfnt face, just return 0 as the default value. */ + /* TrueType/sfnt face, just return~0 as the default value. */ /* */ FT_EXPORT( FT_ULong ) FT_Get_CMap_Language_ID( FT_CharMap charmap ); diff --git a/src/3rdparty/freetype/include/freetype/tttags.h b/src/3rdparty/freetype/include/freetype/tttags.h index 5a79008..307ce4b 100644 --- a/src/3rdparty/freetype/include/freetype/tttags.h +++ b/src/3rdparty/freetype/include/freetype/tttags.h @@ -4,7 +4,7 @@ /* */ /* Tags for TrueType and OpenType tables (specification only). */ /* */ -/* Copyright 1996-2001, 2004, 2005, 2007 by */ +/* Copyright 1996-2001, 2004, 2005, 2007, 2008 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -41,6 +41,7 @@ FT_BEGIN_HEADER #define TTAG_bloc FT_MAKE_TAG( 'b', 'l', 'o', 'c' ) #define TTAG_bsln FT_MAKE_TAG( 'b', 's', 'l', 'n' ) #define TTAG_CFF FT_MAKE_TAG( 'C', 'F', 'F', ' ' ) +#define TTAG_CID FT_MAKE_TAG( 'C', 'I', 'D', ' ' ) #define TTAG_cmap FT_MAKE_TAG( 'c', 'm', 'a', 'p' ) #define TTAG_cvar FT_MAKE_TAG( 'c', 'v', 'a', 'r' ) #define TTAG_cvt FT_MAKE_TAG( 'c', 'v', 't', ' ' ) @@ -49,6 +50,7 @@ FT_BEGIN_HEADER #define TTAG_EBLC FT_MAKE_TAG( 'E', 'B', 'L', 'C' ) #define TTAG_EBSC FT_MAKE_TAG( 'E', 'B', 'S', 'C' ) #define TTAG_feat FT_MAKE_TAG( 'f', 'e', 'a', 't' ) +#define TTAG_FOND FT_MAKE_TAG( 'F', 'O', 'N', 'D' ) #define TTAG_fpgm FT_MAKE_TAG( 'f', 'p', 'g', 'm' ) #define TTAG_fvar FT_MAKE_TAG( 'f', 'v', 'a', 'r' ) #define TTAG_gasp FT_MAKE_TAG( 'g', 'a', 's', 'p' ) @@ -67,6 +69,7 @@ FT_BEGIN_HEADER #define TTAG_lcar FT_MAKE_TAG( 'l', 'c', 'a', 'r' ) #define TTAG_loca FT_MAKE_TAG( 'l', 'o', 'c', 'a' ) #define TTAG_LTSH FT_MAKE_TAG( 'L', 'T', 'S', 'H' ) +#define TTAG_LWFN FT_MAKE_TAG( 'L', 'W', 'F', 'N' ) #define TTAG_MATH FT_MAKE_TAG( 'M', 'A', 'T', 'H' ) #define TTAG_maxp FT_MAKE_TAG( 'm', 'a', 'x', 'p' ) #define TTAG_META FT_MAKE_TAG( 'M', 'E', 'T', 'A' ) @@ -79,14 +82,18 @@ FT_BEGIN_HEADER #define TTAG_OS2 FT_MAKE_TAG( 'O', 'S', '/', '2' ) #define TTAG_OTTO FT_MAKE_TAG( 'O', 'T', 'T', 'O' ) #define TTAG_PCLT FT_MAKE_TAG( 'P', 'C', 'L', 'T' ) +#define TTAG_POST FT_MAKE_TAG( 'P', 'O', 'S', 'T' ) #define TTAG_post FT_MAKE_TAG( 'p', 'o', 's', 't' ) #define TTAG_prep FT_MAKE_TAG( 'p', 'r', 'e', 'p' ) #define TTAG_prop FT_MAKE_TAG( 'p', 'r', 'o', 'p' ) +#define TTAG_sfnt FT_MAKE_TAG( 's', 'f', 'n', 't' ) #define TTAG_SING FT_MAKE_TAG( 'S', 'I', 'N', 'G' ) #define TTAG_trak FT_MAKE_TAG( 't', 'r', 'a', 'k' ) #define TTAG_true FT_MAKE_TAG( 't', 'r', 'u', 'e' ) #define TTAG_ttc FT_MAKE_TAG( 't', 't', 'c', ' ' ) #define TTAG_ttcf FT_MAKE_TAG( 't', 't', 'c', 'f' ) +#define TTAG_TYP1 FT_MAKE_TAG( 'T', 'Y', 'P', '1' ) +#define TTAG_typ1 FT_MAKE_TAG( 't', 'y', 'p', '1' ) #define TTAG_VDMX FT_MAKE_TAG( 'V', 'D', 'M', 'X' ) #define TTAG_vhea FT_MAKE_TAG( 'v', 'h', 'e', 'a' ) #define TTAG_vmtx FT_MAKE_TAG( 'v', 'm', 't', 'x' ) diff --git a/src/3rdparty/freetype/modules.cfg b/src/3rdparty/freetype/modules.cfg index 525866a..4047d7f 100644 --- a/src/3rdparty/freetype/modules.cfg +++ b/src/3rdparty/freetype/modules.cfg @@ -1,6 +1,6 @@ # modules.cfg # -# Copyright 2005, 2006, 2007 by +# Copyright 2005, 2006, 2007, 2009 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, @@ -106,7 +106,7 @@ RASTER_MODULES += smooth # FreeType's cache sub-system (quite stable but still in beta -- this means # that its public API is subject to change if necessary). See -# include/freetype/ftcache.h. +# include/freetype/ftcache.h. Needs ftglyph.c. AUX_MODULES += cache # TrueType GX/AAT table validation. Needs ftgxval.c below. @@ -152,48 +152,68 @@ BASE_EXTENSIONS += ftbbox.c # See include/freetype/ftbdf.h for the API. BASE_EXTENSIONS += ftbdf.c +# Utility functions for converting 1bpp, 2bpp, 4bpp, and 8bpp bitmaps into +# 8bpp format, and for emboldening of bitmap glyphs. +# +# See include/freetype/ftbitmap.h for the API. +BASE_EXTENSIONS += ftbitmap.c + # Access CID font information. # # See include/freetype/ftcid.h for the API. BASE_EXTENSIONS += ftcid.c -# Utility functions for converting 1bpp, 2bpp, 4bpp, and 8bpp bitmaps into -# 8bpp format, and for emboldening of bitmap glyphs. +# Access FSType information. Needs fttype1.c. # -# See include/freetype/ftbitmap.h for the API. -BASE_EXTENSIONS += ftbitmap.c +# See include/freetype/freetype.h for the API. +BASE_EXTENSIONS += ftfstype.c -# Convenience functions to handle glyphs. +# Support for GASP table queries. +# +# See include/freetype/ftgasp.h for the API. +BASE_EXTENSIONS += ftgasp.c + +# Convenience functions to handle glyphs. Needs ftbitmap.c. # # See include/freetype/ftglyph.h for the API. BASE_EXTENSIONS += ftglyph.c -# Interface for gxvalid module (which is required). +# Interface for gxvalid module. # # See include/freetype/ftgxval.h for the API. BASE_EXTENSIONS += ftgxval.c +# Support for LCD color filtering of subpixel bitmaps. +# +# See include/freetype/ftlcdfil.h for the API. +BASE_EXTENSIONS += ftlcdfil.c + # Multiple Master font interface. # # See include/freetype/ftmm.h for the API. BASE_EXTENSIONS += ftmm.c -# Interface for otvalid module (which is required). +# Interface for otvalid module. # # See include/freetype/ftotval.h for the API. BASE_EXTENSIONS += ftotval.c +# Support for FT_Face_CheckTrueTypePatents. +# +# See include/freetype/freetype.h for the API. +BASE_EXTENSIONS += ftpatent.c + # Interface for accessing PFR-specific data. Needs PFR font driver. # # See include/freetype/ftpfr.h for the API. BASE_EXTENSIONS += ftpfr.c -# Path stroker. +# Path stroker. Needs ftglyph.c. # # See include/freetype/ftstroke.h for the API. BASE_EXTENSIONS += ftstroke.c -# Support for synthetic embolding and slanting of fonts. +# Support for synthetic embolding and slanting of fonts. Needs ftbitmap.c. # # See include/freetype/ftsynth.h for the API. BASE_EXTENSIONS += ftsynth.c @@ -215,21 +235,6 @@ BASE_EXTENSIONS += ftwinfnt.c # See include/freetype/ftxf86.h for the API. BASE_EXTENSIONS += ftxf86.c -# Support for LCD color filtering of subpixel bitmaps. -# -# See include/freetype/ftlcdfil.h for the API. -BASE_EXTENSIONS += ftlcdfil.c - -# Support for GASP table queries. -# -# See include/freetype/ftgasp.h for the API. -BASE_EXTENSIONS += ftgasp.c - -# Support for FT_Face_CheckTrueTypePatents. -# -# See include/freetype.h for the API. -BASE_EXTENSIONS += ftpatent.c - #### #### The components `ftsystem.c' (for memory allocation and stream I/O #### management) and `ftdebug.c' (for emitting debug messages to the user) diff --git a/src/3rdparty/freetype/src/autofit/afcjk.c b/src/3rdparty/freetype/src/autofit/afcjk.c index 7e9438b..de3ce11 100644 --- a/src/3rdparty/freetype/src/autofit/afcjk.c +++ b/src/3rdparty/freetype/src/autofit/afcjk.c @@ -4,7 +4,7 @@ /* */ /* Auto-fitter hinting routines for CJK script (body). */ /* */ -/* Copyright 2006, 2007 by */ +/* Copyright 2006, 2007, 2008 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -1253,10 +1253,15 @@ else if ( after >= edge_limit ) af_cjk_align_serif_edge( hints, before, edge ); else - edge->pos = before->pos + - FT_MulDiv( edge->fpos - before->fpos, - after->pos - before->pos, - after->fpos - before->fpos ); + { + if ( after->fpos == before->fpos ) + edge->pos = before->pos; + else + edge->pos = before->pos + + FT_MulDiv( edge->fpos - before->fpos, + after->pos - before->pos, + after->fpos - before->fpos ); + } } } } @@ -1436,29 +1441,29 @@ static const AF_Script_UniRangeRec af_cjk_uniranges[] = { #if 0 - { 0x0100, 0xFFFF }, /* why this? */ + { 0x0100UL, 0xFFFFUL }, /* why this? */ #endif - { 0x2E80, 0x2EFF }, /* CJK Radicals Supplement */ - { 0x2F00, 0x2FDF }, /* Kangxi Radicals */ - { 0x3000, 0x303F }, /* CJK Symbols and Punctuation */ - { 0x3040, 0x309F }, /* Hiragana */ - { 0x30A0, 0x30FF }, /* Katakana */ - { 0x3100, 0x312F }, /* Bopomofo */ - { 0x3130, 0x318F }, /* Hangul Compatibility Jamo */ - { 0x31A0, 0x31BF }, /* Bopomofo Extended */ - { 0x31C0, 0x31EF }, /* CJK Strokes */ - { 0x31F0, 0x31FF }, /* Katakana Phonetic Extensions */ - { 0x3200, 0x32FF }, /* Enclosed CJK Letters and Months */ - { 0x3300, 0x33FF }, /* CJK Compatibility */ - { 0x3400, 0x4DBF }, /* CJK Unified Ideographs Extension A */ - { 0x4DC0, 0x4DFF }, /* Yijing Hexagram Symbols */ - { 0x4E00, 0x9FFF }, /* CJK Unified Ideographs */ - { 0xF900, 0xFAFF }, /* CJK Compatibility Ideographs */ - { 0xFE30, 0xFE4F }, /* CJK Compatibility Forms */ - { 0xFF00, 0xFFEF }, /* Halfwidth and Fullwidth Forms */ - { 0x20000, 0x2A6DF }, /* CJK Unified Ideographs Extension B */ - { 0x2F800, 0x2FA1F }, /* CJK Compatibility Ideographs Supplement */ - { 0, 0 } + { 0x2E80UL, 0x2EFFUL }, /* CJK Radicals Supplement */ + { 0x2F00UL, 0x2FDFUL }, /* Kangxi Radicals */ + { 0x3000UL, 0x303FUL }, /* CJK Symbols and Punctuation */ + { 0x3040UL, 0x309FUL }, /* Hiragana */ + { 0x30A0UL, 0x30FFUL }, /* Katakana */ + { 0x3100UL, 0x312FUL }, /* Bopomofo */ + { 0x3130UL, 0x318FUL }, /* Hangul Compatibility Jamo */ + { 0x31A0UL, 0x31BFUL }, /* Bopomofo Extended */ + { 0x31C0UL, 0x31EFUL }, /* CJK Strokes */ + { 0x31F0UL, 0x31FFUL }, /* Katakana Phonetic Extensions */ + { 0x3200UL, 0x32FFUL }, /* Enclosed CJK Letters and Months */ + { 0x3300UL, 0x33FFUL }, /* CJK Compatibility */ + { 0x3400UL, 0x4DBFUL }, /* CJK Unified Ideographs Extension A */ + { 0x4DC0UL, 0x4DFFUL }, /* Yijing Hexagram Symbols */ + { 0x4E00UL, 0x9FFFUL }, /* CJK Unified Ideographs */ + { 0xF900UL, 0xFAFFUL }, /* CJK Compatibility Ideographs */ + { 0xFE30UL, 0xFE4FUL }, /* CJK Compatibility Forms */ + { 0xFF00UL, 0xFFEFUL }, /* Halfwidth and Fullwidth Forms */ + { 0x20000UL, 0x2A6DFUL }, /* CJK Unified Ideographs Extension B */ + { 0x2F800UL, 0x2FA1FUL }, /* CJK Compatibility Ideographs Supplement */ + { 0UL, 0UL } }; diff --git a/src/3rdparty/freetype/src/autofit/afhints.c b/src/3rdparty/freetype/src/autofit/afhints.c index 4828706..8ab1761 100644 --- a/src/3rdparty/freetype/src/autofit/afhints.c +++ b/src/3rdparty/freetype/src/autofit/afhints.c @@ -4,7 +4,7 @@ /* */ /* Auto-fitter hinting routines (body). */ /* */ -/* Copyright 2003, 2004, 2005, 2006, 2007 by */ +/* Copyright 2003, 2004, 2005, 2006, 2007, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -127,7 +127,7 @@ #ifdef AF_DEBUG -#include <stdio.h> +#include FT_CONFIG_STANDARD_LIBRARY_H static const char* af_dir_str( AF_Direction dir ) @@ -203,14 +203,14 @@ if ( flags & AF_EDGE_ROUND ) { - memcpy( temp + pos, "round", 5 ); + ft_memcpy( temp + pos, "round", 5 ); pos += 5; } if ( flags & AF_EDGE_SERIF ) { if ( pos > 0 ) temp[pos++] = ' '; - memcpy( temp + pos, "serif", 5 ); + ft_memcpy( temp + pos, "serif", 5 ); pos += 5; } if ( pos == 0 ) diff --git a/src/3rdparty/freetype/src/autofit/aflatin.c b/src/3rdparty/freetype/src/autofit/aflatin.c index b70da06..ba59e5b 100644 --- a/src/3rdparty/freetype/src/autofit/aflatin.c +++ b/src/3rdparty/freetype/src/autofit/aflatin.c @@ -4,7 +4,7 @@ /* */ /* Auto-fitter hinting routines for latin script (body). */ /* */ -/* Copyright 2003, 2004, 2005, 2006, 2007 by */ +/* Copyright 2003, 2004, 2005, 2006, 2007, 2008 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -2008,7 +2008,10 @@ if ( before >= edges && before < edge && after < edge_limit && after > edge ) { - edge->pos = before->pos + + if ( after->opos == before->opos ) + edge->pos = before->pos; + else + edge->pos = before->pos + FT_MulDiv( edge->opos - before->opos, after->pos - before->pos, after->opos - before->opos ); @@ -2124,27 +2127,33 @@ static const AF_Script_UniRangeRec af_latin_uniranges[] = { - { 0x0020, 0x007F }, /* Basic Latin (no control characters) */ - { 0x00A0, 0x00FF }, /* Latin-1 Supplement (no control characters) */ - { 0x0100, 0x017F }, /* Latin Extended-A */ - { 0x0180, 0x024F }, /* Latin Extended-B */ - { 0x0250, 0x02AF }, /* IPA Extensions */ - { 0x02B0, 0x02FF }, /* Spacing Modifier Letters */ - { 0x0300, 0x036F }, /* Combining Diacritical Marks */ - { 0x0370, 0x03FF }, /* Greek and Coptic */ - { 0x0400, 0x04FF }, /* Cyrillic */ - { 0x0500, 0x052F }, /* Cyrillic Supplement */ - { 0x1D00, 0x1D7F }, /* Phonetic Extensions */ - { 0x1D80, 0x1DBF }, /* Phonetic Extensions Supplement */ - { 0x1DC0, 0x1DFF }, /* Combining Diacritical Marks Supplement */ - { 0x1E00, 0x1EFF }, /* Latin Extended Additional */ - { 0x1F00, 0x1FFF }, /* Greek Extended */ - { 0x2000, 0x206F }, /* General Punctuation */ - { 0x2070, 0x209F }, /* Superscripts and Subscripts */ - { 0x20A0, 0x20CF }, /* Currency Symbols */ - { 0x2150, 0x218F }, /* Number Forms */ - { 0x2460, 0x24FF }, /* Enclosed Alphanumerics */ - { 0 , 0 } + { 0x0020 , 0x007F }, /* Basic Latin (no control chars) */ + { 0x00A0 , 0x00FF }, /* Latin-1 Supplement (no control chars) */ + { 0x0100 , 0x017F }, /* Latin Extended-A */ + { 0x0180 , 0x024F }, /* Latin Extended-B */ + { 0x0250 , 0x02AF }, /* IPA Extensions */ + { 0x02B0 , 0x02FF }, /* Spacing Modifier Letters */ + { 0x0300 , 0x036F }, /* Combining Diacritical Marks */ + { 0x0370 , 0x03FF }, /* Greek and Coptic */ + { 0x0400 , 0x04FF }, /* Cyrillic */ + { 0x0500 , 0x052F }, /* Cyrillic Supplement */ + { 0x1D00 , 0x1D7F }, /* Phonetic Extensions */ + { 0x1D80 , 0x1DBF }, /* Phonetic Extensions Supplement */ + { 0x1DC0 , 0x1DFF }, /* Combining Diacritical Marks Supplement */ + { 0x1E00 , 0x1EFF }, /* Latin Extended Additional */ + { 0x1F00 , 0x1FFF }, /* Greek Extended */ + { 0x2000 , 0x206F }, /* General Punctuation */ + { 0x2070 , 0x209F }, /* Superscripts and Subscripts */ + { 0x20A0 , 0x20CF }, /* Currency Symbols */ + { 0x2150 , 0x218F }, /* Number Forms */ + { 0x2460 , 0x24FF }, /* Enclosed Alphanumerics */ + { 0x2C60 , 0x2C7F }, /* Latin Extended-C */ + { 0x2DE0 , 0x2DFF }, /* Cyrillic Extended-A */ + { 0xA640U , 0xA69FU }, /* Cyrillic Extended-B */ + { 0xA720U , 0xA7FFU }, /* Latin Extended-D */ + { 0xFB00U , 0xFB06U }, /* Alphab. Present. Forms (Latin Ligs) */ + { 0x1D400UL, 0x1D7FFUL }, /* Mathematical Alphanumeric Symbols */ + { 0 , 0 } }; diff --git a/src/3rdparty/freetype/src/autofit/aflatin2.c b/src/3rdparty/freetype/src/autofit/aflatin2.c index 0b41774..14327b1 100644 --- a/src/3rdparty/freetype/src/autofit/aflatin2.c +++ b/src/3rdparty/freetype/src/autofit/aflatin2.c @@ -4,7 +4,7 @@ /* */ /* Auto-fitter hinting routines for latin script (body). */ /* */ -/* Copyright 2003, 2004, 2005, 2006, 2007 by */ +/* Copyright 2003, 2004, 2005, 2006, 2007, 2008 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -944,6 +944,9 @@ } } } +#if 0 + } +#endif /* now, compute the `serif' segments */ for ( seg1 = segments; seg1 < segment_limit; seg1++ ) @@ -2150,7 +2153,10 @@ if ( before >= edges && before < edge && after < edge_limit && after > edge ) { - edge->pos = before->pos + + if ( after->opos == before->opos ) + edge->pos = before->pos; + else + edge->pos = before->pos + FT_MulDiv( edge->opos - before->opos, after->pos - before->pos, after->opos - before->opos ); diff --git a/src/3rdparty/freetype/src/autofit/aftypes.h b/src/3rdparty/freetype/src/autofit/aftypes.h index 56811f0..626a388 100644 --- a/src/3rdparty/freetype/src/autofit/aftypes.h +++ b/src/3rdparty/freetype/src/autofit/aftypes.h @@ -4,7 +4,7 @@ /* */ /* Auto-fitter types (specification only). */ /* */ -/* Copyright 2003, 2004, 2005, 2006, 2007, 2008 by */ +/* Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -58,7 +58,8 @@ FT_BEGIN_HEADER #ifdef AF_DEBUG -#include <stdio.h> +#include FT_CONFIG_STANDARD_LIBRARY_H + #define AF_LOG( x ) do { if ( _af_debug ) printf x; } while ( 0 ) extern int _af_debug; @@ -69,7 +70,7 @@ extern void* _af_debug_hints; #else /* !AF_DEBUG */ -#define AF_LOG( x ) do ; while ( 0 ) /* nothing */ +#define AF_LOG( x ) do { } while ( 0 ) /* nothing */ #endif /* !AF_DEBUG */ diff --git a/src/3rdparty/freetype/src/autofit/module.mk b/src/3rdparty/freetype/src/autofit/module.mk index 4a386ce..6ec6091 100644 --- a/src/3rdparty/freetype/src/autofit/module.mk +++ b/src/3rdparty/freetype/src/autofit/module.mk @@ -16,7 +16,7 @@ FTMODULE_H_COMMANDS += AUTOFIT_MODULE define AUTOFIT_MODULE -$(OPEN_DRIVER)autofit_module_class$(CLOSE_DRIVER) +$(OPEN_DRIVER) FT_Module_Class, autofit_module_class $(CLOSE_DRIVER) $(ECHO_DRIVER)autofit $(ECHO_DRIVER_DESC)automatic hinting module$(ECHO_DRIVER_DONE) endef diff --git a/src/3rdparty/freetype/src/base/Jamfile b/src/3rdparty/freetype/src/base/Jamfile index aeffe38..aba60fb 100644 --- a/src/3rdparty/freetype/src/base/Jamfile +++ b/src/3rdparty/freetype/src/base/Jamfile @@ -1,6 +1,6 @@ # FreeType 2 src/base Jamfile # -# Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007 by +# Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, @@ -17,8 +17,10 @@ SubDir FT2_TOP $(FT2_SRC_DIR) base ; if $(FT2_MULTI) { - _sources = ftutil ftdbgmem ftstream ftcalc fttrigon ftgloadr ftoutln - ftobjs ftnames ftrfork ; + _sources = ftadvanc ftcalc ftdbgmem ftgloadr + ftnames ftobjs ftoutln ftrfork + ftstream fttrigon ftutil + ; } else { @@ -31,11 +33,11 @@ SubDir FT2_TOP $(FT2_SRC_DIR) base ; # Add the optional/replaceable files. # { - local _sources = system init glyph mm bdf - bbox debug xf86 type1 pfr - stroke winfnt otval bitmap synth - gxval lcdfil gasp patent - ; + local _sources = bbox bdf bitmap debug gasp + glyph gxval init lcdfil mm + otval pfr stroke synth system + type1 winfnt xf86 patent + ; Library $(FT2_LIB) : ft$(_sources).c ; } @@ -46,5 +48,12 @@ if $(MAC) { Library $(FT2_LIB) : ftmac.c ; } +else if $(OS) = MACOSX +{ + if $(FT2_MULTI) + { + Library $(FT2_LIB) : ftmac.c ; + } +} # end of src/base Jamfile diff --git a/src/3rdparty/freetype/src/base/ftadvanc.c b/src/3rdparty/freetype/src/base/ftadvanc.c new file mode 100644 index 0000000..504f9d2 --- /dev/null +++ b/src/3rdparty/freetype/src/base/ftadvanc.c @@ -0,0 +1,163 @@ +/***************************************************************************/ +/* */ +/* ftadvanc.c */ +/* */ +/* Quick computation of advance widths (body). */ +/* */ +/* Copyright 2008, 2009 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#include <ft2build.h> +#include FT_ADVANCES_H +#include FT_INTERNAL_OBJECTS_H + + + static FT_Error + _ft_face_scale_advances( FT_Face face, + FT_Fixed* advances, + FT_UInt count, + FT_Int32 flags ) + { + FT_Fixed scale; + FT_UInt nn; + + + if ( flags & FT_LOAD_NO_SCALE ) + return FT_Err_Ok; + + if ( face->size == NULL ) + return FT_Err_Invalid_Size_Handle; + + if ( flags & FT_LOAD_VERTICAL_LAYOUT ) + scale = face->size->metrics.y_scale; + else + scale = face->size->metrics.x_scale; + + /* this must be the same scaling as to get linear{Hori,Vert}Advance */ + /* (see `FT_Load_Glyph' implementation in src/base/ftobjs.c) */ + + for ( nn = 0; nn < count; nn++ ) + advances[nn] = FT_MulDiv( advances[nn], scale, 64 ); + + return FT_Err_Ok; + } + + + /* at the moment, we can perform fast advance retrieval only in */ + /* the following cases: */ + /* */ + /* - unscaled load */ + /* - unhinted load */ + /* - light-hinted load */ + +#define LOAD_ADVANCE_FAST_CHECK( flags ) \ + ( flags & ( FT_LOAD_NO_SCALE | FT_LOAD_NO_HINTING ) || \ + FT_LOAD_TARGET_MODE( flags ) == FT_RENDER_MODE_LIGHT ) + + + /* documentation is in ftadvanc.h */ + + FT_EXPORT_DEF( FT_Error ) + FT_Get_Advance( FT_Face face, + FT_UInt gindex, + FT_Int32 flags, + FT_Fixed *padvance ) + { + FT_Face_GetAdvancesFunc func; + + + if ( !face ) + return FT_Err_Invalid_Face_Handle; + + if ( gindex >= (FT_UInt)face->num_glyphs ) + return FT_Err_Invalid_Glyph_Index; + + func = face->driver->clazz->get_advances; + if ( func && LOAD_ADVANCE_FAST_CHECK( flags ) ) + { + FT_Error error; + + + error = func( face, gindex, 1, flags, padvance ); + if ( !error ) + return _ft_face_scale_advances( face, padvance, 1, flags ); + + if ( error != FT_ERROR_BASE( FT_Err_Unimplemented_Feature ) ) + return error; + } + + return FT_Get_Advances( face, gindex, 1, flags, padvance ); + } + + + /* documentation is in ftadvanc.h */ + + FT_EXPORT_DEF( FT_Error ) + FT_Get_Advances( FT_Face face, + FT_UInt start, + FT_UInt count, + FT_Int32 flags, + FT_Fixed *padvances ) + { + FT_Face_GetAdvancesFunc func; + FT_UInt num, end, nn; + FT_Error error = FT_Err_Ok; + + + if ( !face ) + return FT_Err_Invalid_Face_Handle; + + num = (FT_UInt)face->num_glyphs; + end = start + count; + if ( start >= num || end < start || end > num ) + return FT_Err_Invalid_Glyph_Index; + + if ( count == 0 ) + return FT_Err_Ok; + + func = face->driver->clazz->get_advances; + if ( func && LOAD_ADVANCE_FAST_CHECK( flags ) ) + { + error = func( face, start, count, flags, padvances ); + if ( !error ) + goto Exit; + + if ( error != FT_ERROR_BASE( FT_Err_Unimplemented_Feature ) ) + return error; + } + + error = FT_Err_Ok; + + if ( flags & FT_ADVANCE_FLAG_FAST_ONLY ) + return FT_Err_Unimplemented_Feature; + + flags |= FT_LOAD_ADVANCE_ONLY; + for ( nn = 0; nn < count; nn++ ) + { + error = FT_Load_Glyph( face, start + nn, flags ); + if ( error ) + break; + + padvances[nn] = ( flags & FT_LOAD_VERTICAL_LAYOUT ) + ? face->glyph->advance.y + : face->glyph->advance.x; + } + + if ( error ) + return error; + + Exit: + return _ft_face_scale_advances( face, padvances, count, flags ); + } + + +/* END */ diff --git a/src/3rdparty/freetype/src/base/ftbase.c b/src/3rdparty/freetype/src/base/ftbase.c index 300e02d..d1fe6e6 100644 --- a/src/3rdparty/freetype/src/base/ftbase.c +++ b/src/3rdparty/freetype/src/base/ftbase.c @@ -4,7 +4,7 @@ /* */ /* Single object library component (body only). */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2007 by */ +/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2007, 2008 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -20,6 +20,7 @@ #define FT_MAKE_OPTION_SINGLE_OBJECT +#include "ftadvanc.c" #include "ftcalc.c" #include "ftdbgmem.c" #include "ftgloadr.c" @@ -31,7 +32,7 @@ #include "fttrigon.c" #include "ftutil.c" -#if defined( __APPLE__ ) && !defined ( DARWIN_NO_CARBON ) +#if defined( FT_MACINTOSH ) && !defined ( DARWIN_NO_CARBON ) #include "ftmac.c" #endif diff --git a/src/3rdparty/freetype/src/base/ftbase.h b/src/3rdparty/freetype/src/base/ftbase.h new file mode 100644 index 0000000..9cae85d --- /dev/null +++ b/src/3rdparty/freetype/src/base/ftbase.h @@ -0,0 +1,57 @@ +/***************************************************************************/ +/* */ +/* ftbase.h */ +/* */ +/* The FreeType private functions used in base module (specification). */ +/* */ +/* Copyright 2008 by */ +/* David Turner, Robert Wilhelm, Werner Lemberg, and suzuki toshiya. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + +#ifndef __FTBASE_H__ +#define __FTBASE_H__ + + +#include <ft2build.h> +#include FT_INTERNAL_OBJECTS_H + + +FT_BEGIN_HEADER + + + /* Assume the stream is sfnt-wrapped PS Type1 or sfnt-wrapped CID-keyed */ + /* font, and try to load a face specified by the face_index. */ + FT_LOCAL_DEF( FT_Error ) + open_face_PS_from_sfnt_stream( FT_Library library, + FT_Stream stream, + FT_Long face_index, + FT_Int num_params, + FT_Parameter *params, + FT_Face *aface ); + + + /* Create a new FT_Face given a buffer and a driver name. */ + /* From ftmac.c. */ + FT_LOCAL_DEF( FT_Error ) + open_face_from_buffer( FT_Library library, + FT_Byte* base, + FT_ULong size, + FT_Long face_index, + const char* driver_name, + FT_Face *aface ); + + +FT_END_HEADER + +#endif /* __FTBASE_H__ */ + + +/* END */ diff --git a/src/3rdparty/freetype/src/base/ftbitmap.c b/src/3rdparty/freetype/src/base/ftbitmap.c index 4c1cdf2..8810cfa 100644 --- a/src/3rdparty/freetype/src/base/ftbitmap.c +++ b/src/3rdparty/freetype/src/base/ftbitmap.c @@ -2,10 +2,9 @@ /* */ /* ftbitmap.c */ /* */ -/* FreeType utility functions for converting 1bpp, 2bpp, 4bpp, and 8bpp */ -/* bitmaps into 8bpp format (body). */ +/* FreeType utility functions for bitmaps (body). */ /* */ -/* Copyright 2004, 2005, 2006, 2007 by */ +/* Copyright 2004, 2005, 2006, 2007, 2008, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -19,6 +18,7 @@ #include <ft2build.h> #include FT_BITMAP_H +#include FT_IMAGE_H #include FT_INTERNAL_OBJECTS_H @@ -388,6 +388,8 @@ case FT_PIXEL_MODE_GRAY: case FT_PIXEL_MODE_GRAY2: case FT_PIXEL_MODE_GRAY4: + case FT_PIXEL_MODE_LCD: + case FT_PIXEL_MODE_LCD_V: { FT_Int pad; FT_Long old_size; @@ -482,6 +484,8 @@ case FT_PIXEL_MODE_GRAY: + case FT_PIXEL_MODE_LCD: + case FT_PIXEL_MODE_LCD_V: { FT_Int width = source->width; FT_Byte* s = source->buffer; @@ -606,6 +610,31 @@ /* documentation is in ftbitmap.h */ FT_EXPORT_DEF( FT_Error ) + FT_GlyphSlot_Own_Bitmap( FT_GlyphSlot slot ) + { + if ( slot && slot->format == FT_GLYPH_FORMAT_BITMAP && + !( slot->internal->flags & FT_GLYPH_OWN_BITMAP ) ) + { + FT_Bitmap bitmap; + FT_Error error; + + + FT_Bitmap_New( &bitmap ); + error = FT_Bitmap_Copy( slot->library, &slot->bitmap, &bitmap ); + if ( error ) + return error; + + slot->bitmap = bitmap; + slot->internal->flags |= FT_GLYPH_OWN_BITMAP; + } + + return FT_Err_Ok; + } + + + /* documentation is in ftbitmap.h */ + + FT_EXPORT_DEF( FT_Error ) FT_Bitmap_Done( FT_Library library, FT_Bitmap *bitmap ) { diff --git a/src/3rdparty/freetype/src/base/ftcalc.c b/src/3rdparty/freetype/src/base/ftcalc.c index c69b9f6..04295a6 100644 --- a/src/3rdparty/freetype/src/base/ftcalc.c +++ b/src/3rdparty/freetype/src/base/ftcalc.c @@ -33,10 +33,14 @@ #include <ft2build.h> +#include FT_GLYPH_H #include FT_INTERNAL_CALC_H #include FT_INTERNAL_DEBUG_H #include FT_INTERNAL_OBJECTS_H +#ifdef FT_MULFIX_INLINED +#undef FT_MulFix +#endif /* we need to define a 64-bits data type here */ @@ -192,15 +196,33 @@ FT_MulFix( FT_Long a, FT_Long b ) { +#ifdef FT_MULFIX_ASSEMBLER + + return FT_MULFIX_ASSEMBLER( a, b ); + +#else + FT_Int s = 1; FT_Long c; - if ( a < 0 ) { a = -a; s = -1; } - if ( b < 0 ) { b = -b; s = -s; } + if ( a < 0 ) + { + a = -a; + s = -1; + } + + if ( b < 0 ) + { + b = -b; + s = -s; + } c = (FT_Long)( ( (FT_Int64)a * b + 0x8000L ) >> 16 ); - return ( s > 0 ) ? c : -c ; + + return ( s > 0 ) ? c : -c; + +#endif /* FT_MULFIX_ASSEMBLER */ } @@ -412,31 +434,18 @@ FT_MulFix( FT_Long a, FT_Long b ) { - /* use inline assembly to speed up things a bit */ - -#if defined( __GNUC__ ) && defined( i386 ) - - FT_Long result; - - - __asm__ __volatile__ ( - "imul %%edx\n" - "movl %%edx, %%ecx\n" - "sarl $31, %%ecx\n" - "addl $0x8000, %%ecx\n" - "addl %%ecx, %%eax\n" - "adcl $0, %%edx\n" - "shrl $16, %%eax\n" - "shll $16, %%edx\n" - "addl %%edx, %%eax\n" - "mov %%eax, %0\n" - : "=a"(result), "+d"(b) - : "a"(a) - : "%ecx" - ); - return result; +#ifdef FT_MULFIX_ASSEMBLER -#elif 1 + return FT_MULFIX_ASSEMBLER( a, b ); + +#elif 0 + + /* + * This code is nonportable. See comment below. + * + * However, on a platform where right-shift of a signed quantity fills + * the leftmost bits by copying the sign bit, it might be faster. + */ FT_Long sa, sb; FT_ULong ua, ub; @@ -445,6 +454,24 @@ if ( a == 0 || b == 0x10000L ) return a; + /* + * This is a clever way of converting a signed number `a' into its + * absolute value (stored back into `a') and its sign. The sign is + * stored in `sa'; 0 means `a' was positive or zero, and -1 means `a' + * was negative. (Similarly for `b' and `sb'). + * + * Unfortunately, it doesn't work (at least not portably). + * + * It makes the assumption that right-shift on a negative signed value + * fills the leftmost bits by copying the sign bit. This is wrong. + * According to K&R 2nd ed, section `A7.8 Shift Operators' on page 206, + * the result of right-shift of a negative signed value is + * implementation-defined. At least one implementation fills the + * leftmost bits with 0s (i.e., it is exactly the same as an unsigned + * right shift). This means that when `a' is negative, `sa' ends up + * with the value 1 rather than -1. After that, everything else goes + * wrong. + */ sa = ( a >> ( sizeof ( a ) * 8 - 1 ) ); a = ( a ^ sa ) - sa; sb = ( b >> ( sizeof ( b ) * 8 - 1 ) ); @@ -666,6 +693,59 @@ #endif /* FT_LONG64 */ + /* documentation is in ftglyph.h */ + + FT_EXPORT_DEF( void ) + FT_Matrix_Multiply( const FT_Matrix* a, + FT_Matrix *b ) + { + FT_Fixed xx, xy, yx, yy; + + + if ( !a || !b ) + return; + + xx = FT_MulFix( a->xx, b->xx ) + FT_MulFix( a->xy, b->yx ); + xy = FT_MulFix( a->xx, b->xy ) + FT_MulFix( a->xy, b->yy ); + yx = FT_MulFix( a->yx, b->xx ) + FT_MulFix( a->yy, b->yx ); + yy = FT_MulFix( a->yx, b->xy ) + FT_MulFix( a->yy, b->yy ); + + b->xx = xx; b->xy = xy; + b->yx = yx; b->yy = yy; + } + + + /* documentation is in ftglyph.h */ + + FT_EXPORT_DEF( FT_Error ) + FT_Matrix_Invert( FT_Matrix* matrix ) + { + FT_Pos delta, xx, yy; + + + if ( !matrix ) + return FT_Err_Invalid_Argument; + + /* compute discriminant */ + delta = FT_MulFix( matrix->xx, matrix->yy ) - + FT_MulFix( matrix->xy, matrix->yx ); + + if ( !delta ) + return FT_Err_Invalid_Argument; /* matrix can't be inverted */ + + matrix->xy = - FT_DivFix( matrix->xy, delta ); + matrix->yx = - FT_DivFix( matrix->yx, delta ); + + xx = matrix->xx; + yy = matrix->yy; + + matrix->xx = FT_DivFix( yy, delta ); + matrix->yy = FT_DivFix( xx, delta ); + + return FT_Err_Ok; + } + + /* documentation is in ftcalc.h */ FT_BASE_DEF( void ) diff --git a/src/3rdparty/freetype/src/base/ftcid.c b/src/3rdparty/freetype/src/base/ftcid.c index 5a8b50f..733aae1 100644 --- a/src/3rdparty/freetype/src/base/ftcid.c +++ b/src/3rdparty/freetype/src/base/ftcid.c @@ -4,7 +4,7 @@ /* */ /* FreeType API for accessing CID font information. */ /* */ -/* Copyright 2007 by Derek Clegg. */ +/* Copyright 2007, 2009 by Derek Clegg, Michael Toftdal. */ /* */ /* This file is part of the FreeType project, and may only be used, */ /* modified, and distributed under the terms of the FreeType project */ @@ -16,6 +16,7 @@ #include <ft2build.h> +#include FT_CID_H #include FT_INTERNAL_OBJECTS_H #include FT_SERVICE_CID_H @@ -60,4 +61,57 @@ } + FT_EXPORT_DEF( FT_Error ) + FT_Get_CID_Is_Internally_CID_Keyed( FT_Face face, + FT_Bool *is_cid ) + { + FT_Error error = FT_Err_Invalid_Argument; + FT_Bool ic = 0; + + + if ( face ) + { + FT_Service_CID service; + + + FT_FACE_FIND_SERVICE( face, service, CID ); + + if ( service && service->get_is_cid ) + error = service->get_is_cid( face, &ic); + } + + if ( is_cid ) + *is_cid = ic; + + return error; + } + + + FT_EXPORT_DEF( FT_Error ) + FT_Get_CID_From_Glyph_Index( FT_Face face, + FT_UInt glyph_index, + FT_UInt *cid ) + { + FT_Error error = FT_Err_Invalid_Argument; + FT_UInt c = 0; + + + if ( face ) + { + FT_Service_CID service; + + + FT_FACE_FIND_SERVICE( face, service, CID ); + + if ( service && service->get_cid_from_glyph_index ) + error = service->get_cid_from_glyph_index( face, glyph_index, &c); + } + + if ( cid ) + *cid = c; + + return error; + } + + /* END */ diff --git a/src/3rdparty/freetype/src/base/ftdbgmem.c b/src/3rdparty/freetype/src/base/ftdbgmem.c index 52a5c20..8b2a330 100644 --- a/src/3rdparty/freetype/src/base/ftdbgmem.c +++ b/src/3rdparty/freetype/src/base/ftdbgmem.c @@ -4,7 +4,7 @@ /* */ /* Memory debugger (body). */ /* */ -/* Copyright 2001, 2002, 2003, 2004, 2005, 2006 by */ +/* Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -33,8 +33,7 @@ * memory, however. */ -#include <stdio.h> -#include <stdlib.h> +#include FT_CONFIG_STANDARD_LIBRARY_H FT_BASE_DEF( const char* ) _ft_debug_file = 0; FT_BASE_DEF( long ) _ft_debug_lineno = 0; @@ -990,7 +989,7 @@ #else /* !FT_DEBUG_MEMORY */ /* ANSI C doesn't like empty source files */ - const FT_Byte _debug_mem_dummy = 0; + static const FT_Byte _debug_mem_dummy = 0; #endif /* !FT_DEBUG_MEMORY */ diff --git a/src/3rdparty/freetype/src/base/ftdebug.c b/src/3rdparty/freetype/src/base/ftdebug.c index 356c8c2..2adbeab 100644 --- a/src/3rdparty/freetype/src/base/ftdebug.c +++ b/src/3rdparty/freetype/src/base/ftdebug.c @@ -46,7 +46,7 @@ #include FT_INTERNAL_DEBUG_H -#if defined( FT_DEBUG_LEVEL_ERROR ) +#ifdef FT_DEBUG_LEVEL_ERROR /* documentation is in ftdebug.h */ diff --git a/src/3rdparty/freetype/src/base/ftfstype.c b/src/3rdparty/freetype/src/base/ftfstype.c new file mode 100644 index 0000000..d0ef7b7 --- /dev/null +++ b/src/3rdparty/freetype/src/base/ftfstype.c @@ -0,0 +1,62 @@ +/***************************************************************************/ +/* */ +/* ftfstype.c */ +/* */ +/* FreeType utility file to access FSType data (body). */ +/* */ +/* Copyright 2008, 2009 by */ +/* David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + +#include <ft2build.h> +#include FT_TYPE1_TABLES_H +#include FT_TRUETYPE_TABLES_H +#include FT_INTERNAL_SERVICE_H +#include FT_SERVICE_POSTSCRIPT_INFO_H + + + /* documentation is in freetype.h */ + + FT_EXPORT_DEF( FT_UShort ) + FT_Get_FSType_Flags( FT_Face face ) + { + TT_OS2* os2; + + + /* first, try to get the fs_type directly from the font */ + if ( face ) + { + FT_Service_PsInfo service = NULL; + + + FT_FACE_FIND_SERVICE( face, service, POSTSCRIPT_INFO ); + + if ( service && service->ps_get_font_extra ) + { + PS_FontExtraRec extra; + + + if ( !service->ps_get_font_extra( face, &extra ) && + extra.fs_type != 0 ) + return extra.fs_type; + } + } + + /* look at FSType before fsType for Type42 */ + + if ( ( os2 = (TT_OS2*)FT_Get_Sfnt_Table( face, ft_sfnt_os2 ) ) != NULL && + os2->version != 0xFFFFU ) + return os2->fsType; + + return 0; + } + + +/* END */ diff --git a/src/3rdparty/freetype/src/base/ftglyph.c b/src/3rdparty/freetype/src/base/ftglyph.c index db0e79f..4130cb1 100644 --- a/src/3rdparty/freetype/src/base/ftglyph.c +++ b/src/3rdparty/freetype/src/base/ftglyph.c @@ -4,7 +4,7 @@ /* */ /* FreeType convenience functions to handle glyphs (body). */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2007 by */ +/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2007, 2008 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -48,68 +48,6 @@ /*************************************************************************/ /*************************************************************************/ /**** ****/ - /**** Convenience functions ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - - - /* documentation is in ftglyph.h */ - - FT_EXPORT_DEF( void ) - FT_Matrix_Multiply( const FT_Matrix* a, - FT_Matrix *b ) - { - FT_Fixed xx, xy, yx, yy; - - - if ( !a || !b ) - return; - - xx = FT_MulFix( a->xx, b->xx ) + FT_MulFix( a->xy, b->yx ); - xy = FT_MulFix( a->xx, b->xy ) + FT_MulFix( a->xy, b->yy ); - yx = FT_MulFix( a->yx, b->xx ) + FT_MulFix( a->yy, b->yx ); - yy = FT_MulFix( a->yx, b->xy ) + FT_MulFix( a->yy, b->yy ); - - b->xx = xx; b->xy = xy; - b->yx = yx; b->yy = yy; - } - - - /* documentation is in ftglyph.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_Matrix_Invert( FT_Matrix* matrix ) - { - FT_Pos delta, xx, yy; - - - if ( !matrix ) - return FT_Err_Invalid_Argument; - - /* compute discriminant */ - delta = FT_MulFix( matrix->xx, matrix->yy ) - - FT_MulFix( matrix->xy, matrix->yx ); - - if ( !delta ) - return FT_Err_Invalid_Argument; /* matrix can't be inverted */ - - matrix->xy = - FT_DivFix( matrix->xy, delta ); - matrix->yx = - FT_DivFix( matrix->yx, delta ); - - xx = matrix->xx; - yy = matrix->yy; - - matrix->xx = FT_DivFix( yy, delta ); - matrix->yy = FT_DivFix( xx, delta ); - - return FT_Err_Ok; - } - - - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ /**** FT_BitmapGlyph support ****/ /**** ****/ /*************************************************************************/ diff --git a/src/3rdparty/freetype/src/base/ftinit.c b/src/3rdparty/freetype/src/base/ftinit.c index 7af19c3..dac30b0 100644 --- a/src/3rdparty/freetype/src/base/ftinit.c +++ b/src/3rdparty/freetype/src/base/ftinit.c @@ -55,9 +55,9 @@ #undef FT_USE_MODULE #ifdef __cplusplus -#define FT_USE_MODULE( x ) extern "C" const FT_Module_Class x; +#define FT_USE_MODULE( type, x ) extern "C" const type x; #else -#define FT_USE_MODULE( x ) extern const FT_Module_Class x; +#define FT_USE_MODULE( type, x ) extern const type x; #endif @@ -65,7 +65,7 @@ #undef FT_USE_MODULE -#define FT_USE_MODULE( x ) (const FT_Module_Class*)&(x), +#define FT_USE_MODULE( type, x ) (const FT_Module_Class*)&(x), static const FT_Module_Class* const ft_default_modules[] = diff --git a/src/3rdparty/freetype/src/base/ftlcdfil.c b/src/3rdparty/freetype/src/base/ftlcdfil.c index 5f1fa0b..8064011 100644 --- a/src/3rdparty/freetype/src/base/ftlcdfil.c +++ b/src/3rdparty/freetype/src/base/ftlcdfil.c @@ -4,7 +4,7 @@ /* */ /* FreeType API for color filtering of subpixel bitmap glyphs (body). */ /* */ -/* Copyright 2006, 2008 by */ +/* Copyright 2006, 2008, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -266,7 +266,7 @@ #endif /* USE_LEGACY */ - FT_EXPORT( FT_Error ) + FT_EXPORT_DEF( FT_Error ) FT_Library_SetLcdFilter( FT_Library library, FT_LcdFilter filter ) { @@ -296,13 +296,13 @@ #elif defined( FT_FORCE_LIGHT_LCD_FILTER ) - memcpy( library->lcd_weights, light_filter, 5 ); + ft_memcpy( library->lcd_weights, light_filter, 5 ); library->lcd_filter_func = _ft_lcd_filter_fir; library->lcd_extra = 2; #else - memcpy( library->lcd_weights, default_filter, 5 ); + ft_memcpy( library->lcd_weights, default_filter, 5 ); library->lcd_filter_func = _ft_lcd_filter_fir; library->lcd_extra = 2; @@ -311,7 +311,7 @@ break; case FT_LCD_FILTER_LIGHT: - memcpy( library->lcd_weights, light_filter, 5 ); + ft_memcpy( library->lcd_weights, light_filter, 5 ); library->lcd_filter_func = _ft_lcd_filter_fir; library->lcd_extra = 2; break; @@ -335,7 +335,7 @@ #else /* !FT_CONFIG_OPTION_SUBPIXEL_RENDERING */ - FT_EXPORT( FT_Error ) + FT_EXPORT_DEF( FT_Error ) FT_Library_SetLcdFilter( FT_Library library, FT_LcdFilter filter ) { diff --git a/src/3rdparty/freetype/src/base/ftmac.c b/src/3rdparty/freetype/src/base/ftmac.c index 7f05907..63f927d 100644 --- a/src/3rdparty/freetype/src/base/ftmac.c +++ b/src/3rdparty/freetype/src/base/ftmac.c @@ -8,7 +8,8 @@ /* This file is for Mac OS X only; see builds/mac/ftoldmac.c for */ /* classic platforms built by MPW. */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */ +/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, */ +/* 2009 by */ /* Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -67,7 +68,9 @@ #include <ft2build.h> #include FT_FREETYPE_H +#include FT_TRUETYPE_TAGS_H #include FT_INTERNAL_STREAM_H +#include "ftbase.h" /* This is for Mac OS X. Without redefinition, OS_INLINE */ /* expands to `static inline' which doesn't survive the */ @@ -77,26 +80,32 @@ #define OS_INLINE static __inline__ #endif - /* The ResourceIndex type was only added in the 10.5 SDK */ -#ifndef MAC_OS_X_VERSION_10_5 -typedef short ResourceIndex; + /* `configure' checks the availability of `ResourceIndex' strictly */ + /* and sets HAVE_TYPE_RESOURCE_INDEX 1 or 0 always. If it is */ + /* not set (e.g., a build without `configure'), the availability */ + /* is guessed from the SDK version. */ +#ifndef HAVE_TYPE_RESOURCE_INDEX +#if !defined( MAC_OS_X_VERSION_10_5 ) || \ + ( MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_5 ) +#define HAVE_TYPE_RESOURCE_INDEX 0 +#else +#define HAVE_TYPE_RESOURCE_INDEX 1 +#endif +#endif /* !HAVE_TYPE_RESOURCE_INDEX */ + +#if ( HAVE_TYPE_RESOURCE_INDEX == 0 ) + typedef short ResourceIndex; #endif #include <CoreServices/CoreServices.h> #include <ApplicationServices/ApplicationServices.h> #include <sys/syslimits.h> /* PATH_MAX */ + /* Don't want warnings about our own use of deprecated functions. */ #define FT_DEPRECATED_ATTRIBUTE #include FT_MAC_H - /* undefine blocking-macros in ftmac.h */ -#undef FT_GetFile_From_Mac_Name( a, b, c ) -#undef FT_GetFile_From_Mac_ATS_Name( a, b, c ) -#undef FT_New_Face_From_FOND( a, b, c, d ) -#undef FT_New_Face_From_FSSpec( a, b, c, d ) -#undef FT_New_Face_From_FSRef( a, b, c, d ) - #ifndef kATSOptionFlagsUnRestrictedScope /* since Mac OS X 10.1 */ #define kATSOptionFlagsUnRestrictedScope kATSOptionFlagsDefault #endif @@ -134,7 +143,7 @@ typedef short ResourceIndex; FSRef* ats_font_ref ) { #if defined( MAC_OS_X_VERSION_10_5 ) && \ - MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 + ( MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 ) OSStatus err; @@ -235,7 +244,7 @@ typedef short ResourceIndex; FT_Long* face_index ) { #if ( __LP64__ ) || ( defined( MAC_OS_X_VERSION_10_5 ) && \ - MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 ) + ( MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 ) ) FT_UNUSED( fontName ); FT_UNUSED( pathSpec ); FT_UNUSED( face_index ); @@ -589,8 +598,7 @@ typedef short ResourceIndex; for (;;) { - post_data = Get1Resource( FT_MAKE_TAG( 'P', 'O', 'S', 'T' ), - res_id++ ); + post_data = Get1Resource( TTAG_POST, res_id++ ); if ( post_data == NULL ) break; /* we are done */ @@ -629,8 +637,7 @@ typedef short ResourceIndex; for (;;) { - post_data = Get1Resource( FT_MAKE_TAG( 'P', 'O', 'S', 'T' ), - res_id++ ); + post_data = Get1Resource( TTAG_POST, res_id++ ); if ( post_data == NULL ) break; /* we are done */ @@ -682,110 +689,7 @@ typedef short ResourceIndex; } - /* Finalizer for a memory stream; gets called by FT_Done_Face(). - It frees the memory it uses. */ - static void - memory_stream_close( FT_Stream stream ) - { - FT_Memory memory = stream->memory; - - - FT_FREE( stream->base ); - - stream->size = 0; - stream->base = 0; - stream->close = 0; - } - - - /* Create a new memory stream from a buffer and a size. */ - static FT_Error - new_memory_stream( FT_Library library, - FT_Byte* base, - FT_ULong size, - FT_Stream_CloseFunc close, - FT_Stream* astream ) - { - FT_Error error; - FT_Memory memory; - FT_Stream stream; - - - if ( !library ) - return FT_Err_Invalid_Library_Handle; - - if ( !base ) - return FT_Err_Invalid_Argument; - - *astream = 0; - memory = library->memory; - if ( FT_NEW( stream ) ) - goto Exit; - - FT_Stream_OpenMemory( stream, base, size ); - - stream->close = close; - - *astream = stream; - - Exit: - return error; - } - - - /* Create a new FT_Face given a buffer and a driver name. */ - static FT_Error - open_face_from_buffer( FT_Library library, - FT_Byte* base, - FT_ULong size, - FT_Long face_index, - const char* driver_name, - FT_Face* aface ) - { - FT_Open_Args args; - FT_Error error; - FT_Stream stream; - FT_Memory memory = library->memory; - - - error = new_memory_stream( library, - base, - size, - memory_stream_close, - &stream ); - if ( error ) - { - FT_FREE( base ); - return error; - } - - args.flags = FT_OPEN_STREAM; - args.stream = stream; - if ( driver_name ) - { - args.flags = args.flags | FT_OPEN_DRIVER; - args.driver = FT_Get_Module( library, driver_name ); - } - - /* At this point, face_index has served its purpose; */ - /* whoever calls this function has already used it to */ - /* locate the correct font data. We should not propagate */ - /* this index to FT_Open_Face() (unless it is negative). */ - - if ( face_index > 0 ) - face_index = 0; - - error = FT_Open_Face( library, &args, face_index, aface ); - if ( error == FT_Err_Ok ) - (*aface)->face_flags &= ~FT_FACE_FLAG_EXTERNAL_STREAM; - else - FT_Stream_Free( stream, 0 ); - - return error; - } - - - /* Create a new FT_Face from a file spec to an LWFN file. */ + /* Create a new FT_Face from a file path to an LWFN file. */ static FT_Error FT_New_Face_From_LWFN( FT_Library library, const UInt8* pathname, @@ -829,10 +733,10 @@ typedef short ResourceIndex; size_t sfnt_size; FT_Error error = FT_Err_Ok; FT_Memory memory = library->memory; - int is_cff; + int is_cff, is_sfnt_ps; - sfnt = GetResource( FT_MAKE_TAG( 's', 'f', 'n', 't' ), sfnt_id ); + sfnt = GetResource( TTAG_sfnt, sfnt_id ); if ( sfnt == NULL ) return FT_Err_Invalid_Handle; @@ -846,21 +750,45 @@ typedef short ResourceIndex; ft_memcpy( sfnt_data, *sfnt, sfnt_size ); ReleaseResource( sfnt ); - is_cff = sfnt_size > 4 && sfnt_data[0] == 'O' && - sfnt_data[1] == 'T' && - sfnt_data[2] == 'T' && - sfnt_data[3] == 'O'; + is_cff = sfnt_size > 4 && !ft_memcmp( sfnt_data, "OTTO", 4 ); + is_sfnt_ps = sfnt_size > 4 && !ft_memcmp( sfnt_data, "typ1", 4 ); - return open_face_from_buffer( library, - sfnt_data, - sfnt_size, - face_index, - is_cff ? "cff" : "truetype", - aface ); + if ( is_sfnt_ps ) + { + FT_Stream stream; + + + if ( FT_NEW( stream ) ) + goto Try_OpenType; + + FT_Stream_OpenMemory( stream, sfnt_data, sfnt_size ); + if ( !open_face_PS_from_sfnt_stream( library, + stream, + face_index, + 0, NULL, + aface ) ) + { + FT_Stream_Close( stream ); + FT_FREE( stream ); + FT_FREE( sfnt_data ); + goto Exit; + } + + FT_FREE( stream ); + } + Try_OpenType: + error = open_face_from_buffer( library, + sfnt_data, + sfnt_size, + face_index, + is_cff ? "cff" : "truetype", + aface ); + Exit: + return error; } - /* Create a new FT_Face from a file spec to a suitcase file. */ + /* Create a new FT_Face from a file path to a suitcase file. */ static FT_Error FT_New_Face_From_Suitcase( FT_Library library, const UInt8* pathname, @@ -884,8 +812,7 @@ typedef short ResourceIndex; num_faces_in_res = 0; for ( res_index = 1; ; ++res_index ) { - fond = Get1IndResource( FT_MAKE_TAG( 'F', 'O', 'N', 'D' ), - res_index ); + fond = Get1IndResource( TTAG_FOND, res_index ); if ( ResError() ) break; @@ -924,7 +851,7 @@ typedef short ResourceIndex; GetResInfo( fond, &fond_id, &fond_type, fond_name ); - if ( ResError() != noErr || fond_type != FT_MAKE_TAG( 'F', 'O', 'N', 'D' ) ) + if ( ResError() != noErr || fond_type != TTAG_FOND ) return FT_Err_Invalid_File_Format; parse_fond( *fond, &have_sfnt, &sfnt_id, lwfn_file_name, face_index ); @@ -991,7 +918,7 @@ typedef short ResourceIndex; /* LWFN is a (very) specific file format, check for it explicitly */ file_type = get_file_type_from_path( pathname ); - if ( file_type == FT_MAKE_TAG( 'L', 'W', 'F', 'N' ) ) + if ( file_type == TTAG_LWFN ) return FT_New_Face_From_LWFN( library, pathname, face_index, aface ); /* Otherwise the file type doesn't matter (there are more than */ @@ -1108,7 +1035,7 @@ typedef short ResourceIndex; FT_Face* aface ) { #if ( __LP64__ ) || ( defined( MAC_OS_X_VERSION_10_5 ) && \ - MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 ) + ( MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 ) ) FT_UNUSED( library ); FT_UNUSED( spec ); FT_UNUSED( face_index ); diff --git a/src/3rdparty/freetype/src/base/ftmm.c b/src/3rdparty/freetype/src/base/ftmm.c index 586d5e8..0307729 100644 --- a/src/3rdparty/freetype/src/base/ftmm.c +++ b/src/3rdparty/freetype/src/base/ftmm.c @@ -4,7 +4,7 @@ /* */ /* Multiple Master font support (body). */ /* */ -/* Copyright 1996-2001, 2003, 2004 by */ +/* Copyright 1996-2001, 2003, 2004, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -52,7 +52,7 @@ *aservice, MULTI_MASTERS ); - if ( aservice ) + if ( *aservice ) error = FT_Err_Ok; } diff --git a/src/3rdparty/freetype/src/base/ftobjs.c b/src/3rdparty/freetype/src/base/ftobjs.c index f90af67..086237a 100644 --- a/src/3rdparty/freetype/src/base/ftobjs.c +++ b/src/3rdparty/freetype/src/base/ftobjs.c @@ -4,7 +4,7 @@ /* */ /* The FreeType private base classes (body). */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */ +/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -26,6 +26,7 @@ #include FT_INTERNAL_STREAM_H #include FT_INTERNAL_SFNT_H /* for SFNT_Load_Table_Func */ #include FT_TRUETYPE_TABLES_H +#include FT_TRUETYPE_TAGS_H #include FT_TRUETYPE_IDS_H #include FT_OUTLINE_H @@ -36,8 +37,11 @@ #include FT_SERVICE_KERNING_H #include FT_SERVICE_TRUETYPE_ENGINE_H +#include "ftbase.h" + #define GRID_FIT_METRICS + FT_BASE_DEF( FT_Pointer ) ft_service_list_lookup( FT_ServiceDesc service_descriptors, const char* service_id ) @@ -128,13 +132,14 @@ FT_Stream stream; + *astream = 0; + if ( !library ) return FT_Err_Invalid_Library_Handle; if ( !args ) return FT_Err_Invalid_Argument; - *astream = 0; memory = library->memory; if ( FT_NEW( stream ) ) @@ -196,6 +201,12 @@ } + /*************************************************************************/ + /* */ + /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ + /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ + /* messages during execution. */ + /* */ #undef FT_COMPONENT #define FT_COMPONENT trace_objs @@ -244,7 +255,7 @@ FT_BASE_DEF( void ) ft_glyphslot_free_bitmap( FT_GlyphSlot slot ) { - if ( slot->internal && slot->internal->flags & FT_GLYPH_OWN_BITMAP ) + if ( slot->internal && ( slot->internal->flags & FT_GLYPH_OWN_BITMAP ) ) { FT_Memory memory = FT_FACE_MEMORY( slot->face ); @@ -546,7 +557,7 @@ FT_Driver driver; FT_GlyphSlot slot; FT_Library library; - FT_Bool autohint = 0; + FT_Bool autohint = FALSE; FT_Module hinter; @@ -590,22 +601,22 @@ * * - Otherwise, auto-hint for LIGHT hinting mode. * - * - Exception: The font requires the unpatented - * bytecode interpreter to load properly. + * - Exception: The font is `tricky' and requires + * the native hinter to load properly. */ - autohint = 0; - if ( hinter && - ( load_flags & FT_LOAD_NO_HINTING ) == 0 && - ( load_flags & FT_LOAD_NO_AUTOHINT ) == 0 && - FT_DRIVER_IS_SCALABLE( driver ) && - FT_DRIVER_USES_OUTLINES( driver ) && - face->internal->transform_matrix.yy > 0 && - face->internal->transform_matrix.yx == 0 ) + if ( hinter && + !( load_flags & FT_LOAD_NO_HINTING ) && + !( load_flags & FT_LOAD_NO_AUTOHINT ) && + FT_DRIVER_IS_SCALABLE( driver ) && + FT_DRIVER_USES_OUTLINES( driver ) && + !FT_IS_TRICKY( face ) && + face->internal->transform_matrix.yy > 0 && + face->internal->transform_matrix.yx == 0 ) { - if ( ( load_flags & FT_LOAD_FORCE_AUTOHINT ) != 0 || - !FT_DRIVER_HAS_HINTER( driver ) ) - autohint = 1; + if ( ( load_flags & FT_LOAD_FORCE_AUTOHINT ) || + !FT_DRIVER_HAS_HINTER( driver ) ) + autohint = TRUE; else { FT_Render_Mode mode = FT_LOAD_TARGET_MODE( load_flags ); @@ -613,7 +624,7 @@ if ( mode == FT_RENDER_MODE_LIGHT || face->internal->ignore_unpatented_hinter ) - autohint = 1; + autohint = TRUE; } } @@ -696,7 +707,7 @@ /* compute the linear advance in 16.16 pixels */ if ( ( load_flags & FT_LOAD_LINEAR_DESIGN ) == 0 && - ( face->face_flags & FT_FACE_FLAG_SCALABLE ) ) + ( FT_IS_SCALABLE( face ) ) ) { FT_Size_Metrics* metrics = &face->size->metrics; @@ -1114,7 +1125,7 @@ /* there's a Mac-specific extended implementation of FT_New_Face() */ /* in src/base/ftmac.c */ -#ifndef FT_MACINTOSH +#if !defined( FT_MACINTOSH ) || defined( DARWIN_NO_CARBON ) /* documentation is in freetype.h */ @@ -1133,11 +1144,12 @@ args.flags = FT_OPEN_PATHNAME; args.pathname = (char*)pathname; + args.stream = NULL; return FT_Open_Face( library, &args, face_index, aface ); } -#endif /* !FT_MACINTOSH */ +#endif /* defined( FT_MACINTOSH ) && !defined( DARWIN_NO_CARBON ) */ /* documentation is in freetype.h */ @@ -1159,12 +1171,13 @@ args.flags = FT_OPEN_MEMORY; args.memory_base = file_base; args.memory_size = file_size; + args.stream = NULL; return FT_Open_Face( library, &args, face_index, aface ); } -#if !defined( FT_MACINTOSH ) && defined( FT_CONFIG_OPTION_MAC_FONTS ) +#ifdef FT_CONFIG_OPTION_MAC_FONTS /* The behavior here is very similar to that in base/ftmac.c, but it */ /* is designed to work on non-mac systems, so no mac specific calls. */ @@ -1193,9 +1206,9 @@ /* we don't really have access to it. */ - /* Finalizer for a memory stream; gets called by FT_Done_Face(). - It frees the memory it uses. */ - /* from ftmac.c */ + /* Finalizer for a memory stream; gets called by FT_Done_Face(). */ + /* It frees the memory it uses. */ + /* From ftmac.c. */ static void memory_stream_close( FT_Stream stream ) { @@ -1211,7 +1224,7 @@ /* Create a new memory stream from a buffer and a size. */ - /* from ftmac.c */ + /* From ftmac.c. */ static FT_Error new_memory_stream( FT_Library library, FT_Byte* base, @@ -1248,7 +1261,7 @@ /* Create a new FT_Face given a buffer and a driver name. */ /* from ftmac.c */ - static FT_Error + FT_LOCAL_DEF( FT_Error ) open_face_from_buffer( FT_Library library, FT_Byte* base, FT_ULong size, @@ -1281,20 +1294,172 @@ args.driver = FT_Get_Module( library, driver_name ); } +#ifdef FT_MACINTOSH + /* At this point, face_index has served its purpose; */ + /* whoever calls this function has already used it to */ + /* locate the correct font data. We should not propagate */ + /* this index to FT_Open_Face() (unless it is negative). */ + + if ( face_index > 0 ) + face_index = 0; +#endif + error = FT_Open_Face( library, &args, face_index, aface ); if ( error == FT_Err_Ok ) (*aface)->face_flags &= ~FT_FACE_FLAG_EXTERNAL_STREAM; else +#ifdef FT_MACINTOSH + FT_Stream_Free( stream, 0 ); +#else { FT_Stream_Close( stream ); FT_FREE( stream ); } +#endif return error; } + /* Look up `TYP1' or `CID ' table from sfnt table directory. */ + /* `offset' and `length' must exclude the binary header in tables. */ + + /* Type 1 and CID-keyed font drivers should recognize sfnt-wrapped */ + /* format too. Here, since we can't expect that the TrueType font */ + /* driver is loaded unconditially, we must parse the font by */ + /* ourselves. We are only interested in the name of the table and */ + /* the offset. */ + + static FT_Error + ft_lookup_PS_in_sfnt_stream( FT_Stream stream, + FT_Long face_index, + FT_ULong* offset, + FT_ULong* length, + FT_Bool* is_sfnt_cid ) + { + FT_Error error; + FT_UShort numTables; + FT_Long pstable_index; + FT_ULong tag; + int i; + + + *offset = 0; + *length = 0; + *is_sfnt_cid = FALSE; + + /* TODO: support for sfnt-wrapped PS/CID in TTC format */ + + /* version check for 'typ1' (should be ignored?) */ + if ( FT_READ_ULONG( tag ) ) + return error; + if ( tag != TTAG_typ1 ) + return FT_Err_Unknown_File_Format; + + if ( FT_READ_USHORT( numTables ) ) + return error; + if ( FT_STREAM_SKIP( 2 * 3 ) ) /* skip binary search header */ + return error; + + pstable_index = -1; + *is_sfnt_cid = FALSE; + + for ( i = 0; i < numTables; i++ ) + { + if ( FT_READ_ULONG( tag ) || FT_STREAM_SKIP( 4 ) || + FT_READ_ULONG( *offset ) || FT_READ_ULONG( *length ) ) + return error; + + if ( tag == TTAG_CID ) + { + pstable_index++; + *offset += 22; + *length -= 22; + *is_sfnt_cid = TRUE; + if ( face_index < 0 ) + return FT_Err_Ok; + } + else if ( tag == TTAG_TYP1 ) + { + pstable_index++; + *offset += 24; + *length -= 24; + *is_sfnt_cid = FALSE; + if ( face_index < 0 ) + return FT_Err_Ok; + } + if ( face_index >= 0 && pstable_index == face_index ) + return FT_Err_Ok; + } + return FT_Err_Table_Missing; + } + + + FT_LOCAL_DEF( FT_Error ) + open_face_PS_from_sfnt_stream( FT_Library library, + FT_Stream stream, + FT_Long face_index, + FT_Int num_params, + FT_Parameter *params, + FT_Face *aface ) + { + FT_Error error; + FT_Memory memory = library->memory; + FT_ULong offset, length; + FT_Long pos; + FT_Bool is_sfnt_cid; + FT_Byte* sfnt_ps; + + FT_UNUSED( num_params ); + FT_UNUSED( params ); + + + pos = FT_Stream_Pos( stream ); + + error = ft_lookup_PS_in_sfnt_stream( stream, + face_index, + &offset, + &length, + &is_sfnt_cid ); + if ( error ) + goto Exit; + + if ( FT_Stream_Seek( stream, pos + offset ) ) + goto Exit; + + if ( FT_ALLOC( sfnt_ps, (FT_Long)length ) ) + goto Exit; + + error = FT_Stream_Read( stream, (FT_Byte *)sfnt_ps, length ); + if ( error ) + goto Exit; + + error = open_face_from_buffer( library, + sfnt_ps, + length, + face_index < 0 ? face_index : 0, + is_sfnt_cid ? "cid" : "type1", + aface ); + Exit: + { + FT_Error error1; + + + if ( error == FT_Err_Unknown_File_Format ) + { + error1 = FT_Stream_Seek( stream, pos ); + if ( error1 ) + return error1; + } + + return error; + } + } + + +#if !defined( FT_MACINTOSH ) || defined( DARWIN_NO_CARBON ) + /* The resource header says we've got resource_cnt `POST' (type1) */ /* resources in this file. They all need to be coalesced into */ /* one lump which gets passed on to the type1 driver. */ @@ -1449,17 +1614,25 @@ if ( rlen == -1 ) return FT_Err_Cannot_Open_Resource; + error = open_face_PS_from_sfnt_stream( library, + stream, + face_index, + 0, NULL, + aface ); + if ( !error ) + goto Exit; + + /* rewind sfnt stream before open_face_PS_from_sfnt_stream() */ + if ( FT_Stream_Seek( stream, flag_offset + 4 ) ) + goto Exit; + if ( FT_ALLOC( sfnt_data, (FT_Long)rlen ) ) return error; error = FT_Stream_Read( stream, (FT_Byte *)sfnt_data, rlen ); if ( error ) goto Exit; - is_cff = rlen > 4 && sfnt_data[0] == 'O' && - sfnt_data[1] == 'T' && - sfnt_data[2] == 'T' && - sfnt_data[3] == 'O'; - + is_cff = rlen > 4 && !ft_memcmp( sfnt_data, "OTTO", 4 ); error = open_face_from_buffer( library, sfnt_data, rlen, @@ -1498,7 +1671,7 @@ error = FT_Raccess_Get_DataOffsets( library, stream, map_offset, rdara_pos, - FT_MAKE_TAG( 'P', 'O', 'S', 'T' ), + TTAG_POST, &data_offsets, &count ); if ( !error ) { @@ -1513,7 +1686,7 @@ error = FT_Raccess_Get_DataOffsets( library, stream, map_offset, rdara_pos, - FT_MAKE_TAG( 's', 'f', 'n', 't' ), + TTAG_sfnt, &data_offsets, &count ); if ( !error ) { @@ -1604,7 +1777,7 @@ FT_Error errors[FT_RACCESS_N_RULES]; FT_Open_Args args2; - FT_Stream stream2; + FT_Stream stream2 = 0; FT_Raccess_Guess( library, stream, @@ -1659,7 +1832,7 @@ } - /* Check for some macintosh formats. */ + /* Check for some macintosh formats without Carbon framework. */ /* Is this a macbinary file? If so look at the resource fork. */ /* Is this a mac dfont file? */ /* Is this an old style resource fork? (in data) */ @@ -1702,6 +1875,7 @@ face_index, aface, args ); return error; } +#endif #endif /* !FT_MACINTOSH && FT_CONFIG_OPTION_MAC_FONTS */ @@ -1717,7 +1891,7 @@ FT_Error error; FT_Driver driver; FT_Memory memory; - FT_Stream stream; + FT_Stream stream = 0; FT_Face face = 0; FT_ListNode node = 0; FT_Bool external_stream; @@ -1800,6 +1974,28 @@ if ( !error ) goto Success; +#ifdef FT_CONFIG_OPTION_MAC_FONTS + if ( ft_strcmp( cur[0]->clazz->module_name, "truetype" ) == 0 && + FT_ERROR_BASE( error ) == FT_Err_Table_Missing ) + { + /* TrueType but essential tables are missing */ + if ( FT_Stream_Seek( stream, 0 ) ) + break; + + error = open_face_PS_from_sfnt_stream( library, + stream, + face_index, + num_params, + params, + aface ); + if ( !error ) + { + FT_Stream_Free( stream, external_stream ); + return error; + } + } +#endif + if ( FT_ERROR_BASE( error ) != FT_Err_Unknown_File_Format ) goto Fail3; } @@ -2275,8 +2471,8 @@ } else { - metrics->x_scale = 1L << 22; - metrics->y_scale = 1L << 22; + metrics->x_scale = 1L << 16; + metrics->y_scale = 1L << 16; metrics->ascender = bsize->y_ppem; metrics->descender = 0; metrics->height = bsize->height << 6; @@ -2387,8 +2583,8 @@ else { FT_ZERO( metrics ); - metrics->x_scale = 1L << 22; - metrics->y_scale = 1L << 22; + metrics->x_scale = 1L << 16; + metrics->y_scale = 1L << 16; } } @@ -3269,11 +3465,11 @@ if ( size == NULL ) - return FT_Err_Bad_Argument; + return FT_Err_Invalid_Argument; face = size->face; if ( face == NULL || face->driver == NULL ) - return FT_Err_Bad_Argument; + return FT_Err_Invalid_Argument; /* we don't need anything more complex than that; all size objects */ /* are already listed by the face */ @@ -4021,7 +4217,11 @@ faces = &FT_DRIVER(module)->faces_list; while ( faces->head ) + { FT_Done_Face( FT_FACE( faces->head->data ) ); + if ( faces->head ) + FT_ERROR(( "FT_Done_Library: failed to free some faces\n" )); + } } } diff --git a/src/3rdparty/freetype/src/base/ftotval.c b/src/3rdparty/freetype/src/base/ftotval.c index b6de6db..20ed686 100644 --- a/src/3rdparty/freetype/src/base/ftotval.c +++ b/src/3rdparty/freetype/src/base/ftotval.c @@ -4,7 +4,7 @@ /* */ /* FreeType API for validating OpenType tables (body). */ /* */ -/* Copyright 2004, 2006 by */ +/* Copyright 2004, 2006, 2008 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -18,6 +18,7 @@ #include <ft2build.h> #include FT_INTERNAL_OBJECTS_H #include FT_SERVICE_OPENTYPE_VALIDATE_H +#include FT_OPENTYPE_VALIDATE_H /* documentation is in ftotval.h */ diff --git a/src/3rdparty/freetype/src/base/ftoutln.c b/src/3rdparty/freetype/src/base/ftoutln.c index 2bae857..49ef82e 100644 --- a/src/3rdparty/freetype/src/base/ftoutln.c +++ b/src/3rdparty/freetype/src/base/ftoutln.c @@ -4,7 +4,7 @@ /* */ /* FreeType outline management (body). */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007 by */ +/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -26,6 +26,7 @@ #include <ft2build.h> #include FT_OUTLINE_H #include FT_INTERNAL_OBJECTS_H +#include FT_INTERNAL_DEBUG_H #include FT_TRIGONOMETRY_H @@ -83,21 +84,25 @@ FT_Int last; /* index of last point in contour */ + FT_TRACE5(( "FT_Outline_Decompose: Outline %d\n", n )); + last = outline->contours[n]; if ( last < 0 ) goto Invalid_Outline; limit = outline->points + last; - v_start = outline->points[first]; - v_last = outline->points[last]; + v_start = outline->points[first]; + v_start.x = SCALED( v_start.x ); + v_start.y = SCALED( v_start.y ); - v_start.x = SCALED( v_start.x ); v_start.y = SCALED( v_start.y ); - v_last.x = SCALED( v_last.x ); v_last.y = SCALED( v_last.y ); + v_last = outline->points[last]; + v_last.x = SCALED( v_last.x ); + v_last.y = SCALED( v_last.y ); v_control = v_start; point = outline->points + first; - tags = outline->tags + first; + tags = outline->tags + first; tag = FT_CURVE_TAG( tags[0] ); /* A contour cannot start with a cubic control point! */ @@ -128,6 +133,8 @@ tags--; } + FT_TRACE5(( " move to (%.2f, %.2f)\n", + v_start.x / 64.0, v_start.y / 64.0 )); error = func_interface->move_to( &v_start, user ); if ( error ) goto Exit; @@ -148,6 +155,8 @@ vec.x = SCALED( point->x ); vec.y = SCALED( point->y ); + FT_TRACE5(( " line to (%.2f, %.2f)\n", + vec.x / 64.0, vec.y / 64.0 )); error = func_interface->line_to( &vec, user ); if ( error ) goto Exit; @@ -174,6 +183,10 @@ if ( tag == FT_CURVE_TAG_ON ) { + FT_TRACE5(( " conic to (%.2f, %.2f)" + " with control (%.2f, %.2f)\n", + vec.x / 64.0, vec.y / 64.0, + v_control.x / 64.0, v_control.y / 64.0 )); error = func_interface->conic_to( &v_control, &vec, user ); if ( error ) goto Exit; @@ -186,6 +199,10 @@ v_middle.x = ( v_control.x + vec.x ) / 2; v_middle.y = ( v_control.y + vec.y ) / 2; + FT_TRACE5(( " conic to (%.2f, %.2f)" + " with control (%.2f, %.2f)\n", + v_middle.x / 64.0, v_middle.y / 64.0, + v_control.x / 64.0, v_control.y / 64.0 )); error = func_interface->conic_to( &v_control, &v_middle, user ); if ( error ) goto Exit; @@ -194,6 +211,10 @@ goto Do_Conic; } + FT_TRACE5(( " conic to (%.2f, %.2f)" + " with control (%.2f, %.2f)\n", + v_start.x / 64.0, v_start.y / 64.0, + v_control.x / 64.0, v_control.y / 64.0 )); error = func_interface->conic_to( &v_control, &v_start, user ); goto Close; @@ -209,8 +230,11 @@ point += 2; tags += 2; - vec1.x = SCALED( point[-2].x ); vec1.y = SCALED( point[-2].y ); - vec2.x = SCALED( point[-1].x ); vec2.y = SCALED( point[-1].y ); + vec1.x = SCALED( point[-2].x ); + vec1.y = SCALED( point[-2].y ); + + vec2.x = SCALED( point[-1].x ); + vec2.y = SCALED( point[-1].y ); if ( point <= limit ) { @@ -220,12 +244,22 @@ vec.x = SCALED( point->x ); vec.y = SCALED( point->y ); + FT_TRACE5(( " cubic to (%.2f, %.2f)" + " with controls (%.2f, %.2f) and (%.2f, %.2f)\n", + vec.x / 64.0, vec.y / 64.0, + vec1.x / 64.0, vec1.y / 64.0, + vec2.x / 64.0, vec2.y / 64.0 )); error = func_interface->cubic_to( &vec1, &vec2, &vec, user ); if ( error ) goto Exit; continue; } + FT_TRACE5(( " cubic to (%.2f, %.2f)" + " with controls (%.2f, %.2f) and (%.2f, %.2f)\n", + v_start.x / 64.0, v_start.y / 64.0, + vec1.x / 64.0, vec1.y / 64.0, + vec2.x / 64.0, vec2.y / 64.0 )); error = func_interface->cubic_to( &vec1, &vec2, &v_start, user ); goto Close; } @@ -233,6 +267,8 @@ } /* close the contour with a line segment */ + FT_TRACE5(( " line to (%.2f, %.2f)\n", + v_start.x / 64.0, v_start.y / 64.0 )); error = func_interface->line_to( &v_start, user ); Close: @@ -242,9 +278,11 @@ first = last + 1; } - return 0; + FT_TRACE5(( "FT_Outline_Decompose: Done\n", n )); + return FT_Err_Ok; Exit: + FT_TRACE5(( "FT_Outline_Decompose: Error %d\n", error )); return error; Invalid_Outline: @@ -558,7 +596,7 @@ FT_Raster_Params* params ) { FT_Error error; - FT_Bool update = 0; + FT_Bool update = FALSE; FT_Renderer renderer; FT_ListNode node; @@ -589,7 +627,7 @@ /* format */ renderer = FT_Lookup_Renderer( library, FT_GLYPH_FORMAT_OUTLINE, &node ); - update = 1; + update = TRUE; } /* if we changed the current renderer for the glyph image format */ @@ -1007,7 +1045,7 @@ } } - if ( xmin == 32768 ) + if ( xmin == 32768L ) return FT_ORIENTATION_TRUETYPE; ray_y[0] = ( xmin_ymin * 3 + xmin_ymax ) >> 2; diff --git a/src/3rdparty/freetype/src/base/ftpatent.c b/src/3rdparty/freetype/src/base/ftpatent.c index d63f191..9f129d8 100644 --- a/src/3rdparty/freetype/src/base/ftpatent.c +++ b/src/3rdparty/freetype/src/base/ftpatent.c @@ -5,7 +5,7 @@ /* FreeType API for checking patented TrueType bytecode instructions */ /* (body). */ /* */ -/* Copyright 2007 by David Turner. */ +/* Copyright 2007, 2008 by David Turner. */ /* */ /* This file is part of the FreeType project, and may only be used, */ /* modified, and distributed under the terms of the FreeType project */ @@ -260,7 +260,7 @@ FT_Face_SetUnpatentedHinting( FT_Face face, FT_Bool value ) { - FT_Bool result = 0; + FT_Bool result = FALSE; #if defined( TT_CONFIG_OPTION_UNPATENTED_HINTING ) && \ diff --git a/src/3rdparty/freetype/src/base/ftpfr.c b/src/3rdparty/freetype/src/base/ftpfr.c index 9e930dd..f9592bb 100644 --- a/src/3rdparty/freetype/src/base/ftpfr.c +++ b/src/3rdparty/freetype/src/base/ftpfr.c @@ -4,7 +4,7 @@ /* */ /* FreeType API for accessing PFR-specific data (body). */ /* */ -/* Copyright 2002, 2003, 2004 by */ +/* Copyright 2002, 2003, 2004, 2008 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -46,6 +46,9 @@ FT_Service_PfrMetrics service; + if ( !face ) + return FT_Err_Invalid_Argument; + service = ft_pfr_check( face ); if ( service ) { @@ -55,14 +58,17 @@ ametrics_x_scale, ametrics_y_scale ); } - else if ( face ) + else { FT_Fixed x_scale, y_scale; /* this is not a PFR font */ - *aoutline_resolution = face->units_per_EM; - *ametrics_resolution = face->units_per_EM; + if ( aoutline_resolution ) + *aoutline_resolution = face->units_per_EM; + + if ( ametrics_resolution ) + *ametrics_resolution = face->units_per_EM; x_scale = y_scale = 0x10000L; if ( face->size ) @@ -70,11 +76,15 @@ x_scale = face->size->metrics.x_scale; y_scale = face->size->metrics.y_scale; } - *ametrics_x_scale = x_scale; - *ametrics_y_scale = y_scale; + + if ( ametrics_x_scale ) + *ametrics_x_scale = x_scale; + + if ( ametrics_y_scale ) + *ametrics_y_scale = y_scale; + + error = FT_Err_Unknown_File_Format; } - else - error = FT_Err_Invalid_Argument; return error; } @@ -92,14 +102,15 @@ FT_Service_PfrMetrics service; + if ( !face ) + return FT_Err_Invalid_Argument; + service = ft_pfr_check( face ); if ( service ) error = service->get_kerning( face, left, right, avector ); - else if ( face ) + else error = FT_Get_Kerning( face, left, right, FT_KERNING_UNSCALED, avector ); - else - error = FT_Err_Invalid_Argument; return error; } diff --git a/src/3rdparty/freetype/src/base/ftrfork.c b/src/3rdparty/freetype/src/base/ftrfork.c index 5a835ee..d59a076 100644 --- a/src/3rdparty/freetype/src/base/ftrfork.c +++ b/src/3rdparty/freetype/src/base/ftrfork.c @@ -4,7 +4,7 @@ /* */ /* Embedded resource forks accessor (body). */ /* */ -/* Copyright 2004, 2005, 2006, 2007 by */ +/* Copyright 2004, 2005, 2006, 2007, 2008, 2009 by */ /* Masatake YAMATO and Redhat K.K. */ /* */ /* FT_Raccess_Get_HeaderInfo() and raccess_guess_darwin_hfsplus() are */ @@ -399,7 +399,10 @@ char **result_file_name, FT_Long *result_offset ) { - FT_Int32 magic = ( 0x00 << 24 | 0x05 << 16 | 0x16 << 8 | 0x07 ); + FT_Int32 magic = ( 0x00 << 24 ) | + ( 0x05 << 16 ) | + ( 0x16 << 8 ) | + 0x07; *result_file_name = NULL; @@ -418,7 +421,10 @@ char **result_file_name, FT_Long *result_offset ) { - FT_Int32 magic = (0x00 << 24 | 0x05 << 16 | 0x16 << 8 | 0x00); + FT_Int32 magic = ( 0x00 << 24 ) | + ( 0x05 << 16 ) | + ( 0x16 << 8 ) | + 0x00; *result_file_name = NULL; @@ -703,8 +709,12 @@ return FT_Err_Ok; } else - FT_Stream_Skip( stream, 4 + 4 ); /* offset + length */ + { + error = FT_Stream_Skip( stream, 4 + 4 ); /* offset + length */ + if ( error ) + return error; } + } return FT_Err_Unknown_File_Format; } diff --git a/src/3rdparty/freetype/src/base/ftstream.c b/src/3rdparty/freetype/src/base/ftstream.c index 2082345..901b683 100644 --- a/src/3rdparty/freetype/src/base/ftstream.c +++ b/src/3rdparty/freetype/src/base/ftstream.c @@ -707,12 +707,13 @@ { FT_Error error; FT_Bool frame_accessed = 0; - FT_Byte* cursor = stream->cursor; - + FT_Byte* cursor; if ( !fields || !stream ) return FT_Err_Invalid_Argument; + cursor = stream->cursor; + error = FT_Err_Ok; do { diff --git a/src/3rdparty/freetype/src/base/ftstroke.c b/src/3rdparty/freetype/src/base/ftstroke.c index 5dfee8b..3f5421f 100644 --- a/src/3rdparty/freetype/src/base/ftstroke.c +++ b/src/3rdparty/freetype/src/base/ftstroke.c @@ -4,7 +4,7 @@ /* */ /* FreeType path stroker (body). */ /* */ -/* Copyright 2002, 2003, 2004, 2005, 2006, 2008 by */ +/* Copyright 2002, 2003, 2004, 2005, 2006, 2008, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -261,7 +261,7 @@ { FT_UInt old_max = border->max_points; FT_UInt new_max = border->num_points + new_points; - FT_Error error = 0; + FT_Error error = FT_Err_Ok; if ( new_max > old_max ) @@ -279,6 +279,7 @@ border->max_points = cur_max; } + Exit: return error; } @@ -346,7 +347,7 @@ } border->start = -1; - border->movable = 0; + border->movable = FALSE; } @@ -355,7 +356,7 @@ FT_Vector* to, FT_Bool movable ) { - FT_Error error = 0; + FT_Error error = FT_Err_Ok; FT_ASSERT( border->start >= 0 ); @@ -410,7 +411,7 @@ border->num_points += 2; } - border->movable = 0; + border->movable = FALSE; return error; } @@ -443,7 +444,7 @@ border->num_points += 3; } - border->movable = 0; + border->movable = FALSE; return error; } @@ -461,7 +462,7 @@ FT_Angle total, angle, step, rotate, next, theta; FT_Vector a, b, a2, b2; FT_Fixed length; - FT_Error error = 0; + FT_Error error = FT_Err_Ok; /* compute start point */ @@ -527,12 +528,12 @@ { /* close current open path if any ? */ if ( border->start >= 0 ) - ft_stroke_border_close( border, 0 ); + ft_stroke_border_close( border, FALSE ); border->start = border->num_points; - border->movable = 0; + border->movable = FALSE; - return ft_stroke_border_lineto( border, to, 0 ); + return ft_stroke_border_lineto( border, to, FALSE ); } @@ -547,7 +548,7 @@ border->num_points = 0; border->max_points = 0; border->start = -1; - border->valid = 0; + border->valid = FALSE; } @@ -556,7 +557,7 @@ { border->num_points = 0; border->start = -1; - border->valid = 0; + border->valid = FALSE; } @@ -572,7 +573,7 @@ border->num_points = 0; border->max_points = 0; border->start = -1; - border->valid = 0; + border->valid = FALSE; } @@ -581,7 +582,7 @@ FT_UInt *anum_points, FT_UInt *anum_contours ) { - FT_Error error = 0; + FT_Error error = FT_Err_Ok; FT_UInt num_points = 0; FT_UInt num_contours = 0; @@ -605,9 +606,6 @@ if ( tags[0] & FT_STROKE_TAG_END ) { - if ( in_contour == 0 ) - goto Fail; - in_contour = 0; num_contours++; } @@ -616,7 +614,7 @@ if ( in_contour != 0 ) goto Fail; - border->valid = 1; + border->valid = TRUE; Exit: *anum_points = num_points; @@ -798,7 +796,7 @@ { FT_Angle total, rotate; FT_Fixed radius = stroker->radius; - FT_Error error = 0; + FT_Error error = FT_Err_Ok; FT_StrokeBorder border = stroker->borders + side; @@ -813,7 +811,7 @@ radius, stroker->angle_in + rotate, total ); - border->movable = 0; + border->movable = FALSE; return error; } @@ -824,7 +822,7 @@ FT_Angle angle, FT_Int side ) { - FT_Error error = 0; + FT_Error error = FT_Err_Ok; if ( stroker->line_cap == FT_STROKER_LINECAP_ROUND ) @@ -849,7 +847,7 @@ delta.x += stroker->center.x + delta2.x; delta.y += stroker->center.y + delta2.y; - error = ft_stroke_border_lineto( border, &delta, 0 ); + error = ft_stroke_border_lineto( border, &delta, FALSE ); if ( error ) goto Exit; @@ -859,7 +857,7 @@ delta.x += delta2.x + stroker->center.x; delta.y += delta2.y + stroker->center.y; - error = ft_stroke_border_lineto( border, &delta, 0 ); + error = ft_stroke_border_lineto( border, &delta, FALSE ); } Exit: @@ -876,7 +874,7 @@ FT_Angle phi, theta, rotate; FT_Fixed length, thcos, sigma; FT_Vector delta; - FT_Error error = 0; + FT_Error error = FT_Err_Ok; rotate = FT_SIDE_TO_ROTATE( side ); @@ -900,7 +898,7 @@ stroker->angle_out + rotate ); delta.x += stroker->center.x; delta.y += stroker->center.y; - border->movable = 0; + border->movable = FALSE; } else { @@ -911,7 +909,7 @@ delta.y += stroker->center.y; } - error = ft_stroke_border_lineto( border, &delta, 0 ); + error = ft_stroke_border_lineto( border, &delta, FALSE ); return error; } @@ -928,9 +926,7 @@ if ( stroker->line_join == FT_STROKER_LINEJOIN_ROUND ) - { error = ft_stroker_arcto( stroker, side ); - } else { /* this is a mitered or beveled corner */ @@ -943,7 +939,7 @@ rotate = FT_SIDE_TO_ROTATE( side ); miter = FT_BOOL( stroker->line_join == FT_STROKER_LINEJOIN_MITER ); - theta = FT_Angle_Diff( stroker->angle_in, stroker->angle_out ); + theta = FT_Angle_Diff( stroker->angle_in, stroker->angle_out ); if ( theta == FT_ANGLE_PI ) { theta = rotate; @@ -959,7 +955,7 @@ sigma = FT_MulFix( stroker->miter_limit, thcos ); if ( sigma >= 0x10000L ) - miter = 0; + miter = FALSE; if ( miter ) /* this is a miter (broken angle) */ { @@ -983,7 +979,7 @@ delta.x += middle.x; delta.y += middle.y; - error = ft_stroke_border_lineto( border, &delta, 0 ); + error = ft_stroke_border_lineto( border, &delta, FALSE ); if ( error ) goto Exit; @@ -992,7 +988,7 @@ delta.x += middle.x; delta.y += middle.y; - error = ft_stroke_border_lineto( border, &delta, 0 ); + error = ft_stroke_border_lineto( border, &delta, FALSE ); if ( error ) goto Exit; @@ -1001,7 +997,7 @@ delta.x += stroker->center.x; delta.y += stroker->center.y; - error = ft_stroke_border_lineto( border, &delta, 1 ); + error = ft_stroke_border_lineto( border, &delta, TRUE ); } else /* this is a bevel (intersection) */ @@ -1016,8 +1012,9 @@ delta.x += stroker->center.x; delta.y += stroker->center.y; - error = ft_stroke_border_lineto( border, &delta, 0 ); - if (error) goto Exit; + error = ft_stroke_border_lineto( border, &delta, FALSE ); + if ( error ) + goto Exit; /* now add end point */ FT_Vector_From_Polar( &delta, stroker->radius, @@ -1025,7 +1022,7 @@ delta.x += stroker->center.x; delta.y += stroker->center.y; - error = ft_stroke_border_lineto( border, &delta, 1 ); + error = ft_stroke_border_lineto( border, &delta, TRUE ); } } @@ -1037,7 +1034,7 @@ static FT_Error ft_stroker_process_corner( FT_Stroker stroker ) { - FT_Error error = 0; + FT_Error error = FT_Err_Ok; FT_Angle turn; FT_Int inside_side; @@ -1069,7 +1066,7 @@ /* add two points to the left and right borders corresponding to the */ - /* start of the subpath.. */ + /* start of the subpath */ static FT_Error ft_stroker_subpath_start( FT_Stroker stroker, FT_Angle start_angle ) @@ -1099,7 +1096,7 @@ /* save angle for last cap */ stroker->subpath_angle = start_angle; - stroker->first_point = 0; + stroker->first_point = FALSE; Exit: return error; @@ -1112,7 +1109,7 @@ FT_Stroker_LineTo( FT_Stroker stroker, FT_Vector* to ) { - FT_Error error = 0; + FT_Error error = FT_Err_Ok; FT_StrokeBorder border; FT_Vector delta; FT_Angle angle; @@ -1143,7 +1140,7 @@ goto Exit; } - /* now add a line segment to both the "inside" and "outside" paths */ + /* now add a line segment to both the `inside' and `outside' paths */ for ( border = stroker->borders, side = 1; side >= 0; side--, border++ ) { @@ -1153,7 +1150,7 @@ point.x = to->x + delta.x; point.y = to->y + delta.y; - error = ft_stroke_border_lineto( border, &point, 1 ); + error = ft_stroke_border_lineto( border, &point, TRUE ); if ( error ) goto Exit; @@ -1176,12 +1173,12 @@ FT_Vector* control, FT_Vector* to ) { - FT_Error error = 0; + FT_Error error = FT_Err_Ok; FT_Vector bez_stack[34]; FT_Vector* arc; FT_Vector* limit = bez_stack + 30; FT_Angle start_angle; - FT_Bool first_arc = 1; + FT_Bool first_arc = TRUE; arc = bez_stack; @@ -1206,7 +1203,7 @@ if ( first_arc ) { - first_arc = 0; + first_arc = FALSE; start_angle = angle_in; @@ -1275,12 +1272,12 @@ FT_Vector* control2, FT_Vector* to ) { - FT_Error error = 0; + FT_Error error = FT_Err_Ok; FT_Vector bez_stack[37]; FT_Vector* arc; FT_Vector* limit = bez_stack + 32; FT_Angle start_angle; - FT_Bool first_arc = 1; + FT_Bool first_arc = TRUE; arc = bez_stack; @@ -1308,7 +1305,7 @@ if ( first_arc ) { - first_arc = 0; + first_arc = FALSE; /* process corner if necessary */ start_angle = angle_in; @@ -1386,15 +1383,16 @@ { /* We cannot process the first point, because there is not enough */ /* information regarding its corner/cap. The latter will be processed */ - /* in the "end_subpath" routine. */ + /* in the `FT_Stroker_EndSubPath' routine. */ /* */ - stroker->first_point = 1; - stroker->center = *to; - stroker->subpath_open = open; + stroker->first_point = TRUE; + stroker->center = *to; + stroker->subpath_open = open; - /* record the subpath start point index for each border */ + /* record the subpath start point for each border */ stroker->subpath_start = *to; - return 0; + + return FT_Err_Ok; } @@ -1402,10 +1400,10 @@ ft_stroker_add_reverse_left( FT_Stroker stroker, FT_Bool open ) { - FT_StrokeBorder right = stroker->borders + 0; - FT_StrokeBorder left = stroker->borders + 1; + FT_StrokeBorder right = stroker->borders + 0; + FT_StrokeBorder left = stroker->borders + 1; FT_Int new_points; - FT_Error error = 0; + FT_Error error = FT_Err_Ok; FT_ASSERT( left->start >= 0 ); @@ -1452,8 +1450,8 @@ left->num_points = left->start; right->num_points += new_points; - right->movable = 0; - left->movable = 0; + right->movable = FALSE; + left->movable = FALSE; } Exit: @@ -1467,7 +1465,8 @@ FT_EXPORT_DEF( FT_Error ) FT_Stroker_EndSubPath( FT_Stroker stroker ) { - FT_Error error = 0; + FT_Error error = FT_Err_Ok; + if ( stroker->subpath_open ) { @@ -1480,8 +1479,8 @@ if ( error ) goto Exit; - /* add reversed points from "left" to "right" */ - error = ft_stroker_add_reverse_left( stroker, 1 ); + /* add reversed points from `left' to `right' */ + error = ft_stroker_add_reverse_left( stroker, TRUE ); if ( error ) goto Exit; @@ -1494,7 +1493,7 @@ /* Now end the right subpath accordingly. The left one is */ /* rewind and doesn't need further processing. */ - ft_stroke_border_close( right, 0 ); + ft_stroke_border_close( right, FALSE ); } else { @@ -1536,8 +1535,8 @@ } /* then end our two subpaths */ - ft_stroke_border_close( stroker->borders + 0, 1 ); - ft_stroke_border_close( stroker->borders + 1, 0 ); + ft_stroke_border_close( stroker->borders + 0, TRUE ); + ft_stroke_border_close( stroker->borders + 1, FALSE ); } Exit: @@ -1692,7 +1691,7 @@ v_control = v_start; point = outline->points + first; - tags = outline->tags + first; + tags = outline->tags + first; tag = FT_CURVE_TAG( tags[0] ); /* A contour cannot start with a cubic control point! */ @@ -1836,7 +1835,7 @@ first = last + 1; } - return 0; + return FT_Err_Ok; Exit: return error; @@ -1884,7 +1883,7 @@ FT_UInt num_points, num_contours; - error = FT_Stroker_ParseOutline( stroker, outline, 0 ); + error = FT_Stroker_ParseOutline( stroker, outline, FALSE ); if ( error ) goto Fail; @@ -1967,7 +1966,7 @@ border = FT_STROKER_BORDER_LEFT; } - error = FT_Stroker_ParseOutline( stroker, outline, 0 ); + error = FT_Stroker_ParseOutline( stroker, outline, FALSE ); if ( error ) goto Fail; diff --git a/src/3rdparty/freetype/src/base/ftsynth.c b/src/3rdparty/freetype/src/base/ftsynth.c index ff88ce9..443d272 100644 --- a/src/3rdparty/freetype/src/base/ftsynth.c +++ b/src/3rdparty/freetype/src/base/ftsynth.c @@ -68,36 +68,13 @@ /*************************************************************************/ - FT_EXPORT_DEF( FT_Error ) - FT_GlyphSlot_Own_Bitmap( FT_GlyphSlot slot ) - { - if ( slot && slot->format == FT_GLYPH_FORMAT_BITMAP && - !( slot->internal->flags & FT_GLYPH_OWN_BITMAP ) ) - { - FT_Bitmap bitmap; - FT_Error error; - - - FT_Bitmap_New( &bitmap ); - error = FT_Bitmap_Copy( slot->library, &slot->bitmap, &bitmap ); - if ( error ) - return error; - - slot->bitmap = bitmap; - slot->internal->flags |= FT_GLYPH_OWN_BITMAP; - } - - return FT_Err_Ok; - } - - /* documentation is in ftsynth.h */ FT_EXPORT_DEF( void ) FT_GlyphSlot_Embolden( FT_GlyphSlot slot ) { FT_Library library = slot->library; - FT_Face face = FT_SLOT_FACE( slot ); + FT_Face face = slot->face; FT_Error error; FT_Pos xstr, ystr; @@ -123,10 +100,11 @@ } else if ( slot->format == FT_GLYPH_FORMAT_BITMAP ) { - xstr = FT_PIX_FLOOR( xstr ); + /* round to full pixels */ + xstr &= ~63; if ( xstr == 0 ) xstr = 1 << 6; - ystr = FT_PIX_FLOOR( ystr ); + ystr &= ~63; error = FT_GlyphSlot_Own_Bitmap( slot ); if ( error ) diff --git a/src/3rdparty/freetype/src/base/ftsystem.c b/src/3rdparty/freetype/src/base/ftsystem.c index f61a3ed..f64908f 100644 --- a/src/3rdparty/freetype/src/base/ftsystem.c +++ b/src/3rdparty/freetype/src/base/ftsystem.c @@ -4,7 +4,7 @@ /* */ /* ANSI-specific FreeType low-level system interface (body). */ /* */ -/* Copyright 1996-2001, 2002, 2006 by */ +/* Copyright 1996-2001, 2002, 2006, 2008 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -294,7 +294,7 @@ #ifdef FT_DEBUG_MEMORY ft_mem_debug_done( memory ); #endif - memory->free( memory, memory ); + ft_sfree( memory ); } diff --git a/src/3rdparty/freetype/src/base/rules.mk b/src/3rdparty/freetype/src/base/rules.mk index d6e4412..66260e6 100644 --- a/src/3rdparty/freetype/src/base/rules.mk +++ b/src/3rdparty/freetype/src/base/rules.mk @@ -3,7 +3,7 @@ # -# Copyright 1996-2000, 2002, 2003, 2004, 2005, 2006, 2007 by +# Copyright 1996-2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, @@ -21,8 +21,6 @@ # BASE_EXT_OBJ: A list of base layer extensions, i.e., components found # in `freetype/src/base' which are not compiled within the # base layer proper. -# -# BASE_H is defined in freetype.mk to simplify the dependency rules. BASE_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(SRC_DIR)/base) @@ -35,7 +33,8 @@ BASE_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(SRC_DIR)/base) # All files listed here should be included in `ftbase.c' (for a `single' # build). # -BASE_SRC := $(BASE_DIR)/ftcalc.c \ +BASE_SRC := $(BASE_DIR)/ftadvanc.c \ + $(BASE_DIR)/ftcalc.c \ $(BASE_DIR)/ftdbgmem.c \ $(BASE_DIR)/ftgloadr.c \ $(BASE_DIR)/ftnames.c \ @@ -46,6 +45,13 @@ BASE_SRC := $(BASE_DIR)/ftcalc.c \ $(BASE_DIR)/fttrigon.c \ $(BASE_DIR)/ftutil.c + +ifneq ($(ftmac_c),) + BASE_SRC += $(BASE_DIR)/$(ftmac_c) +endif + +BASE_H := $(BASE_DIR)/ftbase.h + # Base layer `extensions' sources # # An extension is added to the library file as a separate object. It is @@ -77,13 +83,13 @@ BASE_SRC_S := $(BASE_DIR)/ftbase.c # Base layer - single object build # -$(BASE_OBJ_S): $(BASE_SRC_S) $(BASE_SRC) $(FREETYPE_H) +$(BASE_OBJ_S): $(BASE_SRC_S) $(BASE_SRC) $(FREETYPE_H) $(BASE_H) $(BASE_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(BASE_SRC_S)) # Multiple objects build + extensions # -$(OBJ_DIR)/%.$O: $(BASE_DIR)/%.c $(FREETYPE_H) +$(OBJ_DIR)/%.$O: $(BASE_DIR)/%.c $(FREETYPE_H) $(BASE_H) $(BASE_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<) diff --git a/src/3rdparty/freetype/src/bdf/bdfdrivr.c b/src/3rdparty/freetype/src/bdf/bdfdrivr.c index 2a5767e..0b736b5 100644 --- a/src/3rdparty/freetype/src/bdf/bdfdrivr.c +++ b/src/3rdparty/freetype/src/bdf/bdfdrivr.c @@ -2,7 +2,7 @@ FreeType font driver for bdf files - Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007 by + Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by Francesco Zappa Nardelli Permission is hereby granted, free of charge, to any person obtaining a copy @@ -304,10 +304,15 @@ THE SOFTWARE. FT_CALLBACK_DEF( void ) BDF_Face_Done( FT_Face bdfface ) /* BDF_Face */ { - BDF_Face face = (BDF_Face)bdfface; - FT_Memory memory = FT_FACE_MEMORY( face ); + BDF_Face face = (BDF_Face)bdfface; + FT_Memory memory; + if ( !face ) + return; + + memory = FT_FACE_MEMORY( face ); + bdf_free_font( face->bdffont ); FT_FREE( face->en_table ); @@ -610,7 +615,7 @@ THE SOFTWARE. switch ( req->type ) { case FT_SIZE_REQUEST_TYPE_NOMINAL: - if ( height == ( bsize->y_ppem + 32 ) >> 6 ) + if ( height == ( ( bsize->y_ppem + 32 ) >> 6 ) ) error = BDF_Err_Ok; break; diff --git a/src/3rdparty/freetype/src/bdf/bdflib.c b/src/3rdparty/freetype/src/bdf/bdflib.c index 512cd62..5435b20 100644 --- a/src/3rdparty/freetype/src/bdf/bdflib.c +++ b/src/3rdparty/freetype/src/bdf/bdflib.c @@ -1,6 +1,6 @@ /* * Copyright 2000 Computing Research Labs, New Mexico State University - * Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007 + * Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009 * Francesco Zappa Nardelli * * Permission is hereby granted, free of charge, to any person obtaining a @@ -1394,6 +1394,12 @@ font->font_descent = fp->value.int32; else if ( ft_memcmp( name, "SPACING", 7 ) == 0 ) { + if ( !fp->value.atom ) + { + error = BDF_Err_Invalid_File_Format; + goto Exit; + } + if ( fp->value.atom[0] == 'p' || fp->value.atom[0] == 'P' ) font->spacing = BDF_PROPORTIONAL; else if ( fp->value.atom[0] == 'm' || fp->value.atom[0] == 'M' ) @@ -2072,6 +2078,7 @@ error = _bdf_list_split( &p->list, (char *)" +", line, linelen ); if ( error ) goto Exit; + /* at this point, `p->font' can't be NULL */ p->cnt = p->font->props_size = _bdf_atoul( p->list.field[1], 0, 10 ); if ( FT_NEW_ARRAY( p->font->props, p->cnt ) ) diff --git a/src/3rdparty/freetype/src/bdf/module.mk b/src/3rdparty/freetype/src/bdf/module.mk index dfaa274..fe06ae8 100644 --- a/src/3rdparty/freetype/src/bdf/module.mk +++ b/src/3rdparty/freetype/src/bdf/module.mk @@ -27,7 +27,7 @@ FTMODULE_H_COMMANDS += BDF_DRIVER define BDF_DRIVER -$(OPEN_DRIVER)bdf_driver_class$(CLOSE_DRIVER) +$(OPEN_DRIVER) FT_Driver_ClassRec, bdf_driver_class $(CLOSE_DRIVER) $(ECHO_DRIVER)bdf $(ECHO_DRIVER_DESC)bdf bitmap fonts$(ECHO_DRIVER_DONE) endef diff --git a/src/3rdparty/freetype/src/bdf/rules.mk b/src/3rdparty/freetype/src/bdf/rules.mk index 25d98e5..6ff1614 100644 --- a/src/3rdparty/freetype/src/bdf/rules.mk +++ b/src/3rdparty/freetype/src/bdf/rules.mk @@ -3,7 +3,7 @@ # -# Copyright (C) 2001, 2002, 2003 by +# Copyright (C) 2001, 2002, 2003, 2008 by # Francesco Zappa Nardelli # # Permission is hereby granted, free of charge, to any person obtaining a copy @@ -29,7 +29,7 @@ # bdf driver directory # -BDF_DIR := $(SRC_DIR)/bdf +BDF_DIR := $(SRC_DIR)/bdf BDF_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(BDF_DIR)) @@ -44,7 +44,8 @@ BDF_DRV_SRC := $(BDF_DIR)/bdflib.c \ # bdf driver headers # BDF_DRV_H := $(BDF_DIR)/bdf.h \ - $(BDF_DIR)/bdfdrivr.h + $(BDF_DIR)/bdfdrivr.h \ + $(BDF_DIR)/bdferror.h # bdf driver object(s) # diff --git a/src/3rdparty/freetype/src/cache/ftccmap.c b/src/3rdparty/freetype/src/cache/ftccmap.c index aa59307..4c6a7fd 100644 --- a/src/3rdparty/freetype/src/cache/ftccmap.c +++ b/src/3rdparty/freetype/src/cache/ftccmap.c @@ -4,7 +4,7 @@ /* */ /* FreeType CharMap cache (body) */ /* */ -/* Copyright 2000-2001, 2002, 2003, 2004, 2005, 2006, 2007 by */ +/* Copyright 2000-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -288,8 +288,20 @@ FT_Error error; FT_UInt gindex = 0; FT_UInt32 hash; + FT_Int no_cmap_change = 0; + if ( cmap_index < 0 ) + { + /* Treat a negative cmap index as a special value, meaning that you */ + /* don't want to change the FT_Face's character map through this */ + /* call. This can be useful if the face requester callback already */ + /* sets the face's charmap to the appropriate value. */ + + no_cmap_change = 1; + cmap_index = 0; + } + if ( !cache ) { FT_ERROR(( "FTC_CMapCache_Lookup: bad arguments, returning 0!\n" )); @@ -311,7 +323,7 @@ * Adobe Acrobat Reader Pack, named `KozMinProVI-Regular.otf', * which contains more than 5 charmaps. */ - if ( cmap_index >= 16 ) + if ( cmap_index >= 16 && !no_cmap_change ) { FTC_OldCMapDesc desc = (FTC_OldCMapDesc) face_id; @@ -393,12 +405,12 @@ old = face->charmap; cmap = face->charmaps[cmap_index]; - if ( old != cmap ) + if ( old != cmap && !no_cmap_change ) FT_Set_Charmap( face, cmap ); gindex = FT_Get_Char_Index( face, char_code ); - if ( old != cmap ) + if ( old != cmap && !no_cmap_change ) FT_Set_Charmap( face, old ); } diff --git a/src/3rdparty/freetype/src/cache/ftcmanag.c b/src/3rdparty/freetype/src/cache/ftcmanag.c index 9d7347c..4d44094 100644 --- a/src/3rdparty/freetype/src/cache/ftcmanag.c +++ b/src/3rdparty/freetype/src/cache/ftcmanag.c @@ -4,7 +4,7 @@ /* */ /* FreeType Cache Manager (body). */ /* */ -/* Copyright 2000-2001, 2002, 2003, 2004, 2005, 2006 by */ +/* Copyright 2000-2001, 2002, 2003, 2004, 2005, 2006, 2008, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -181,7 +181,7 @@ if ( asize == NULL ) - return FTC_Err_Bad_Argument; + return FTC_Err_Invalid_Argument; *asize = NULL; @@ -306,7 +306,7 @@ if ( aface == NULL ) - return FTC_Err_Bad_Argument; + return FTC_Err_Invalid_Argument; *aface = NULL; @@ -608,7 +608,8 @@ } Exit: - *acache = cache; + if ( acache ) + *acache = cache; return error; } diff --git a/src/3rdparty/freetype/src/cache/rules.mk b/src/3rdparty/freetype/src/cache/rules.mk index 457dec8..ed75a6a 100644 --- a/src/3rdparty/freetype/src/cache/rules.mk +++ b/src/3rdparty/freetype/src/cache/rules.mk @@ -3,7 +3,7 @@ # -# Copyright 2000, 2001, 2003, 2004, 2006 by +# Copyright 2000, 2001, 2003, 2004, 2006, 2008 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, @@ -26,7 +26,7 @@ CACHE_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(CACHE_DIR)) # CACHE_DRV_SRC := $(CACHE_DIR)/ftcbasic.c \ $(CACHE_DIR)/ftccache.c \ - $(CACHE_DIR)/ftccmap.c \ + $(CACHE_DIR)/ftccmap.c \ $(CACHE_DIR)/ftcglyph.c \ $(CACHE_DIR)/ftcimage.c \ $(CACHE_DIR)/ftcmanag.c \ @@ -35,12 +35,14 @@ CACHE_DRV_SRC := $(CACHE_DIR)/ftcbasic.c \ # Cache driver headers # -CACHE_DRV_H := $(CACHE_DIR)/ftccback.h \ +CACHE_DRV_H := $(CACHE_DIR)/ftccache.h \ + $(CACHE_DIR)/ftccback.h \ $(CACHE_DIR)/ftcerror.h \ $(CACHE_DIR)/ftcglyph.h \ $(CACHE_DIR)/ftcimage.h \ $(CACHE_DIR)/ftcmanag.h \ - $(CACHE_DIR)/ftcmru.h + $(CACHE_DIR)/ftcmru.h \ + $(CACHE_DIR)/ftcsbits.h # Cache driver object(s) diff --git a/src/3rdparty/freetype/src/cff/cffdrivr.c b/src/3rdparty/freetype/src/cff/cffdrivr.c index 6c3ff98..3dd86f2 100644 --- a/src/3rdparty/freetype/src/cff/cffdrivr.c +++ b/src/3rdparty/freetype/src/cff/cffdrivr.c @@ -4,7 +4,7 @@ /* */ /* OpenType font driver implementation (body). */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007 by */ +/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -187,6 +187,35 @@ } + FT_CALLBACK_DEF( FT_Error ) + cff_get_advances( FT_Face face, + FT_UInt start, + FT_UInt count, + FT_Int32 flags, + FT_Fixed* advances ) + { + FT_UInt nn; + FT_Error error = CFF_Err_Ok; + FT_GlyphSlot slot = face->glyph; + + + flags |= FT_LOAD_ADVANCE_ONLY; + + for ( nn = 0; nn < count; nn++ ) + { + error = Load_Glyph( slot, face->size, start + nn, flags ); + if ( error ) + break; + + advances[nn] = ( flags & FT_LOAD_VERTICAL_LAYOUT ) + ? slot->linearVertAdvance + : slot->linearHoriAdvance; + } + + return error; + } + + /* * GLYPH DICT SERVICE * @@ -341,7 +370,8 @@ cff->font_info = font_info; } - *afont_info = *cff->font_info; + if ( cff ) + *afont_info = *cff->font_info; Fail: return error; @@ -351,6 +381,7 @@ static const FT_Service_PsInfoRec cff_service_ps_info = { (PS_GetFontInfoFunc) cff_ps_get_font_info, + (PS_GetFontExtraFunc) NULL, (PS_HasGlyphNamesFunc) cff_ps_has_glyph_names, (PS_GetFontPrivateFunc)NULL /* unsupported with CFF fonts */ }; @@ -396,6 +427,7 @@ cmap_info->language = 0; + cmap_info->format = 0; if ( cmap->clazz != &cff_cmap_encoding_class_rec && cmap->clazz != &cff_cmap_unicode_class_rec ) @@ -475,9 +507,74 @@ } + static FT_Error + cff_get_is_cid( CFF_Face face, + FT_Bool *is_cid ) + { + FT_Error error = CFF_Err_Ok; + CFF_Font cff = (CFF_Font)face->extra.data; + + + *is_cid = 0; + + if ( cff ) + { + CFF_FontRecDict dict = &cff->top_font.font_dict; + + + if ( dict->cid_registry != 0xFFFFU ) + *is_cid = 1; + } + + return error; + } + + + static FT_Error + cff_get_cid_from_glyph_index( CFF_Face face, + FT_UInt glyph_index, + FT_UInt *cid ) + { + FT_Error error = CFF_Err_Ok; + CFF_Font cff; + + + cff = (CFF_Font)face->extra.data; + + if ( cff ) + { + FT_UInt c; + CFF_FontRecDict dict = &cff->top_font.font_dict; + + + if ( dict->cid_registry == 0xFFFFU ) + { + error = CFF_Err_Invalid_Argument; + goto Fail; + } + + if ( glyph_index > cff->num_glyphs ) + { + error = CFF_Err_Invalid_Argument; + goto Fail; + } + + c = cff->charset.sids[glyph_index]; + + if ( cid ) + *cid = c; + } + + Fail: + return error; + } + + static const FT_Service_CIDRec cff_service_cid_info = { - (FT_CID_GetRegistryOrderingSupplementFunc)cff_get_ros + (FT_CID_GetRegistryOrderingSupplementFunc)cff_get_ros, + (FT_CID_GetIsInternallyCIDKeyedFunc) cff_get_is_cid, + (FT_CID_GetCIDFromGlyphIndexFunc) cff_get_cid_from_glyph_index }; @@ -570,7 +667,7 @@ cff_get_kerning, 0, /* FT_Face_AttachFunc */ - 0, /* FT_Face_GetAdvancesFunc */ + cff_get_advances, /* FT_Face_GetAdvancesFunc */ cff_size_request, diff --git a/src/3rdparty/freetype/src/cff/cffgload.c b/src/3rdparty/freetype/src/cff/cffgload.c index 6553c8d..2718a27 100644 --- a/src/3rdparty/freetype/src/cff/cffgload.c +++ b/src/3rdparty/freetype/src/cff/cffgload.c @@ -4,7 +4,7 @@ /* */ /* OpenType Glyph Loader (body). */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */ +/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -110,8 +110,11 @@ cff_op_callgsubr, cff_op_return, - cff_op_hsbw, /* Type 1 opcode: invalid but seen in real life */ - cff_op_closepath, /* ditto */ + /* Type 1 opcodes: invalid but seen in real life */ + cff_op_hsbw, + cff_op_closepath, + cff_op_callothersubr, + cff_op_pop, /* do not remove */ cff_op_max @@ -123,6 +126,11 @@ #define CFF_COUNT_EXACT 0x40 #define CFF_COUNT_CLEAR_STACK 0x20 + /* count values which have the `CFF_COUNT_CHECK_WIDTH' flag set are */ + /* used for checking the width and requested numbers of arguments */ + /* only; they are set to zero afterwards */ + + /* the other two flags are informative only and unused currently */ static const FT_Byte cff_argument_counts[] = { @@ -193,6 +201,8 @@ 0, 2, /* hsbw */ + 0, + 0, 0 }; @@ -406,9 +416,11 @@ goto Exit; } + FT_TRACE4(( "glyph index %d (subfont %d):\n", glyph_index, fd_index )); + sub = cff->subfonts[fd_index]; - if ( builder->hints_funcs ) + if ( builder->hints_funcs && size ) { CFF_Internal internal = (CFF_Internal)size->root.internal; @@ -417,6 +429,10 @@ builder->hints_globals = (void *)internal->subfonts[fd_index]; } } +#ifdef FT_DEBUG_LEVEL_TRACE + else + FT_TRACE4(( "glyph index %d:\n", glyph_index )); +#endif decoder->num_locals = sub->num_local_subrs; decoder->locals = sub->local_subrs; @@ -944,6 +960,11 @@ } else { + /* The specification says that normally arguments are to be taken */ + /* from the bottom of the stack. However, this seems not to be */ + /* correct, at least for Acroread 7.0.8 on GNU/Linux: It pops the */ + /* arguments similar to a PS interpreter. */ + FT_Fixed* args = decoder->top; FT_Int num_args = (FT_Int)( args - decoder->stack ); FT_Int req_args; @@ -1028,6 +1049,12 @@ case 15: op = cff_op_eq; break; + case 16: + op = cff_op_callothersubr; + break; + case 17: + op = cff_op_pop; + break; case 18: op = cff_op_drop; break; @@ -1130,6 +1157,7 @@ default: ; } + if ( op == cff_op_unknown ) goto Syntax_Error; @@ -1137,8 +1165,6 @@ req_args = cff_argument_counts[op]; if ( req_args & CFF_COUNT_CHECK_WIDTH ) { - args = stack; - if ( num_args > 0 && decoder->read_width ) { /* If `nominal_width' is non-zero, the number is really a */ @@ -1172,7 +1198,7 @@ case cff_op_endchar: /* If there is a width specified for endchar, we either have */ /* 1 argument or 5 arguments. We like to argue. */ - set_width_ok = ( ( num_args == 5 ) || ( num_args == 1 ) ); + set_width_ok = ( num_args == 5 ) || ( num_args == 1 ); break; default: @@ -1185,9 +1211,14 @@ decoder->glyph_width = decoder->nominal_width + ( stack[0] >> 16 ); + if ( decoder->width_only ) + { + /* we only want the advance width; stop here */ + break; + } + /* Consumed an argument. */ num_args--; - args++; } } @@ -1201,6 +1232,14 @@ args -= req_args; num_args -= req_args; + /* At this point, `args' points to the first argument of the */ + /* operand in case `req_args' isn't zero. Otherwise, we have */ + /* to adjust `args' manually. */ + + /* Note that we only pop arguments from the stack which we */ + /* really need and can digest so that we can continue in case */ + /* of superfluous stack elements. */ + switch ( op ) { case cff_op_hstem: @@ -1208,15 +1247,16 @@ case cff_op_hstemhm: case cff_op_vstemhm: /* the number of arguments is always even here */ - FT_TRACE4(( op == cff_op_hstem ? " hstem" : - ( op == cff_op_vstem ? " vstem" : - ( op == cff_op_hstemhm ? " hstemhm" : " vstemhm" ) ) )); + FT_TRACE4(( + op == cff_op_hstem ? " hstem\n" : + ( op == cff_op_vstem ? " vstem\n" : + ( op == cff_op_hstemhm ? " hstemhm\n" : " vstemhm\n" ) ) )); if ( hinter ) hinter->stems( hinter->hints, ( op == cff_op_hstem || op == cff_op_hstemhm ), num_args / 2, - args ); + args - ( num_args & ~1 ) ); decoder->num_hints += num_args / 2; args = stack; @@ -1236,7 +1276,7 @@ hinter->stems( hinter->hints, 0, num_args / 2, - args ); + args - ( num_args & ~1 ) ); decoder->num_hints += num_args / 2; } @@ -1259,12 +1299,14 @@ FT_UInt maskbyte; - FT_TRACE4(( " " )); + FT_TRACE4(( " (maskbytes: " )); for ( maskbyte = 0; maskbyte < (FT_UInt)(( decoder->num_hints + 7 ) >> 3); maskbyte++, ip++ ) FT_TRACE4(( "0x%02X", *ip )); + + FT_TRACE4(( ")\n" )); } #else ip += ( decoder->num_hints + 7 ) >> 3; @@ -1275,44 +1317,44 @@ break; case cff_op_rmoveto: - FT_TRACE4(( " rmoveto" )); + FT_TRACE4(( " rmoveto\n" )); cff_builder_close_contour( builder ); builder->path_begun = 0; - x += args[0]; - y += args[1]; + x += args[-2]; + y += args[-1]; args = stack; break; case cff_op_vmoveto: - FT_TRACE4(( " vmoveto" )); + FT_TRACE4(( " vmoveto\n" )); cff_builder_close_contour( builder ); builder->path_begun = 0; - y += args[0]; + y += args[-1]; args = stack; break; case cff_op_hmoveto: - FT_TRACE4(( " hmoveto" )); + FT_TRACE4(( " hmoveto\n" )); cff_builder_close_contour( builder ); builder->path_begun = 0; - x += args[0]; + x += args[-1]; args = stack; break; case cff_op_rlineto: - FT_TRACE4(( " rlineto" )); + FT_TRACE4(( " rlineto\n" )); if ( cff_builder_start_point ( builder, x, y ) || check_points( builder, num_args / 2 ) ) goto Fail; - if ( num_args < 2 || num_args & 1 ) + if ( num_args < 2 ) goto Stack_Underflow; - args = stack; + args -= num_args & ~1; while ( args < decoder->top ) { x += args[0]; @@ -1329,8 +1371,11 @@ FT_Int phase = ( op == cff_op_hlineto ); - FT_TRACE4(( op == cff_op_hlineto ? " hlineto" - : " vlineto" )); + FT_TRACE4(( op == cff_op_hlineto ? " hlineto\n" + : " vlineto\n" )); + + if ( num_args < 1 ) + goto Stack_Underflow; if ( cff_builder_start_point ( builder, x, y ) || check_points( builder, num_args ) ) @@ -1355,125 +1400,164 @@ break; case cff_op_rrcurveto: - FT_TRACE4(( " rrcurveto" )); + { + FT_Int nargs; - /* check number of arguments; must be a multiple of 6 */ - if ( num_args % 6 != 0 ) - goto Stack_Underflow; - if ( cff_builder_start_point ( builder, x, y ) || - check_points( builder, num_args / 2 ) ) - goto Fail; + FT_TRACE4(( " rrcurveto\n" )); - args = stack; - while ( args < decoder->top ) - { - x += args[0]; - y += args[1]; - cff_builder_add_point( builder, x, y, 0 ); - x += args[2]; - y += args[3]; - cff_builder_add_point( builder, x, y, 0 ); - x += args[4]; - y += args[5]; - cff_builder_add_point( builder, x, y, 1 ); - args += 6; + if ( num_args < 6 ) + goto Stack_Underflow; + + nargs = num_args - num_args % 6; + + if ( cff_builder_start_point ( builder, x, y ) || + check_points( builder, nargs / 2 ) ) + goto Fail; + + args -= nargs; + while ( args < decoder->top ) + { + x += args[0]; + y += args[1]; + cff_builder_add_point( builder, x, y, 0 ); + x += args[2]; + y += args[3]; + cff_builder_add_point( builder, x, y, 0 ); + x += args[4]; + y += args[5]; + cff_builder_add_point( builder, x, y, 1 ); + args += 6; + } + args = stack; } - args = stack; break; case cff_op_vvcurveto: - FT_TRACE4(( " vvcurveto" )); + { + FT_Int nargs; - if ( cff_builder_start_point( builder, x, y ) ) - goto Fail; - args = stack; - if ( num_args & 1 ) - { - x += args[0]; - args++; - num_args--; - } + FT_TRACE4(( " vvcurveto\n" )); - if ( num_args % 4 != 0 ) - goto Stack_Underflow; + if ( num_args < 4 ) + goto Stack_Underflow; - if ( check_points( builder, 3 * ( num_args / 4 ) ) ) - goto Fail; + /* if num_args isn't of the form 4n or 4n+1, */ + /* we reduce it to 4n+1 */ - while ( args < decoder->top ) - { - y += args[0]; - cff_builder_add_point( builder, x, y, 0 ); - x += args[1]; - y += args[2]; - cff_builder_add_point( builder, x, y, 0 ); - y += args[3]; - cff_builder_add_point( builder, x, y, 1 ); - args += 4; + nargs = num_args - num_args % 4; + if ( num_args - nargs > 0 ) + nargs += 1; + + if ( cff_builder_start_point( builder, x, y ) ) + goto Fail; + + args -= nargs; + + if ( nargs & 1 ) + { + x += args[0]; + args++; + nargs--; + } + + if ( check_points( builder, 3 * ( nargs / 4 ) ) ) + goto Fail; + + while ( args < decoder->top ) + { + y += args[0]; + cff_builder_add_point( builder, x, y, 0 ); + x += args[1]; + y += args[2]; + cff_builder_add_point( builder, x, y, 0 ); + y += args[3]; + cff_builder_add_point( builder, x, y, 1 ); + args += 4; + } + args = stack; } - args = stack; break; case cff_op_hhcurveto: - FT_TRACE4(( " hhcurveto" )); + { + FT_Int nargs; - if ( cff_builder_start_point( builder, x, y ) ) - goto Fail; - args = stack; - if ( num_args & 1 ) - { - y += args[0]; - args++; - num_args--; - } + FT_TRACE4(( " hhcurveto\n" )); - if ( num_args % 4 != 0 ) - goto Stack_Underflow; + if ( num_args < 4 ) + goto Stack_Underflow; - if ( check_points( builder, 3 * ( num_args / 4 ) ) ) - goto Fail; + /* if num_args isn't of the form 4n or 4n+1, */ + /* we reduce it to 4n+1 */ - while ( args < decoder->top ) - { - x += args[0]; - cff_builder_add_point( builder, x, y, 0 ); - x += args[1]; - y += args[2]; - cff_builder_add_point( builder, x, y, 0 ); - x += args[3]; - cff_builder_add_point( builder, x, y, 1 ); - args += 4; + nargs = num_args - num_args % 4; + if ( num_args - nargs > 0 ) + nargs += 1; + + if ( cff_builder_start_point( builder, x, y ) ) + goto Fail; + + args -= nargs; + if ( nargs & 1 ) + { + y += args[0]; + args++; + nargs--; + } + + if ( check_points( builder, 3 * ( nargs / 4 ) ) ) + goto Fail; + + while ( args < decoder->top ) + { + x += args[0]; + cff_builder_add_point( builder, x, y, 0 ); + x += args[1]; + y += args[2]; + cff_builder_add_point( builder, x, y, 0 ); + x += args[3]; + cff_builder_add_point( builder, x, y, 1 ); + args += 4; + } + args = stack; } - args = stack; break; case cff_op_vhcurveto: case cff_op_hvcurveto: { FT_Int phase; + FT_Int nargs; - FT_TRACE4(( op == cff_op_vhcurveto ? " vhcurveto" - : " hvcurveto" )); + FT_TRACE4(( op == cff_op_vhcurveto ? " vhcurveto\n" + : " hvcurveto\n" )); if ( cff_builder_start_point( builder, x, y ) ) goto Fail; - args = stack; - if ( num_args < 4 || ( num_args % 4 ) > 1 ) + if ( num_args < 4 ) goto Stack_Underflow; - if ( check_points( builder, ( num_args / 4 ) * 3 ) ) + /* if num_args isn't of the form 8n, 8n+1, 8n+4, or 8n+5, */ + /* we reduce it to the largest one which fits */ + + nargs = num_args - num_args % 4; + if ( num_args - nargs > 0 ) + nargs += 1; + + args -= nargs; + if ( check_points( builder, ( nargs / 4 ) * 3 ) ) goto Stack_Underflow; phase = ( op == cff_op_hvcurveto ); - while ( num_args >= 4 ) + while ( nargs >= 4 ) { - num_args -= 4; + nargs -= 4; if ( phase ) { x += args[0]; @@ -1482,7 +1566,7 @@ y += args[2]; cff_builder_add_point( builder, x, y, 0 ); y += args[3]; - if ( num_args == 1 ) + if ( nargs == 1 ) x += args[4]; cff_builder_add_point( builder, x, y, 1 ); } @@ -1494,7 +1578,7 @@ y += args[2]; cff_builder_add_point( builder, x, y, 0 ); x += args[3]; - if ( num_args == 1 ) + if ( nargs == 1 ) y += args[4]; cff_builder_add_point( builder, x, y, 1 ); } @@ -1507,19 +1591,23 @@ case cff_op_rlinecurve: { - FT_Int num_lines = ( num_args - 6 ) / 2; + FT_Int num_lines; + FT_Int nargs; - FT_TRACE4(( " rlinecurve" )); + FT_TRACE4(( " rlinecurve\n" )); - if ( num_args < 8 || ( num_args - 6 ) & 1 ) + if ( num_args < 8 ) goto Stack_Underflow; + nargs = num_args & ~1; + num_lines = ( nargs - 6 ) / 2; + if ( cff_builder_start_point( builder, x, y ) || check_points( builder, num_lines + 3 ) ) goto Fail; - args = stack; + args -= nargs; /* first, add the line segments */ while ( num_lines > 0 ) @@ -1547,19 +1635,24 @@ case cff_op_rcurveline: { - FT_Int num_curves = ( num_args - 2 ) / 6; + FT_Int num_curves; + FT_Int nargs; - FT_TRACE4(( " rcurveline" )); + FT_TRACE4(( " rcurveline\n" )); - if ( num_args < 8 || ( num_args - 2 ) % 6 ) + if ( num_args < 8 ) goto Stack_Underflow; + nargs = num_args - 2; + nargs = nargs - nargs % 6 + 2; + num_curves = ( nargs - 2 ) / 6; + if ( cff_builder_start_point ( builder, x, y ) || - check_points( builder, num_curves*3 + 2 ) ) + check_points( builder, num_curves * 3 + 2 ) ) goto Fail; - args = stack; + args -= nargs; /* first, add the curves */ while ( num_curves > 0 ) @@ -1590,18 +1683,16 @@ FT_Pos start_y; - FT_TRACE4(( " hflex1" )); - - args = stack; + FT_TRACE4(( " hflex1\n" )); - /* adding five more points; 4 control points, 1 on-curve point */ - /* make sure we have enough space for the start point if it */ + /* adding five more points: 4 control points, 1 on-curve point */ + /* -- make sure we have enough space for the start point if it */ /* needs to be added */ if ( cff_builder_start_point( builder, x, y ) || check_points( builder, 6 ) ) goto Fail; - /* Record the starting point's y position for later use */ + /* record the starting point's y position for later use */ start_y = y; /* first control point */ @@ -1643,9 +1734,7 @@ FT_Pos start_y; - FT_TRACE4(( " hflex" )); - - args = stack; + FT_TRACE4(( " hflex\n" )); /* adding six more points; 4 control points, 2 on-curve points */ if ( cff_builder_start_point( builder, x, y ) || @@ -1690,14 +1779,15 @@ case cff_op_flex1: { - FT_Pos start_x, start_y; /* record start x, y values for */ - /* alter use */ - FT_Fixed dx = 0, dy = 0; /* used in horizontal/vertical */ - /* algorithm below */ - FT_Int horizontal, count; + FT_Pos start_x, start_y; /* record start x, y values for */ + /* alter use */ + FT_Fixed dx = 0, dy = 0; /* used in horizontal/vertical */ + /* algorithm below */ + FT_Int horizontal, count; + FT_Fixed* temp; - FT_TRACE4(( " flex1" )); + FT_TRACE4(( " flex1\n" )); /* adding six more points; 4 control points, 2 on-curve points */ if ( cff_builder_start_point( builder, x, y ) || @@ -1711,21 +1801,20 @@ /* XXX: figure out whether this is supposed to be a horizontal */ /* or vertical flex; the Type 2 specification is vague... */ - args = stack; + temp = args; /* grab up to the last argument */ for ( count = 5; count > 0; count-- ) { - dx += args[0]; - dy += args[1]; - args += 2; + dx += temp[0]; + dy += temp[1]; + temp += 2; } - /* rewind */ - args = stack; - - if ( dx < 0 ) dx = -dx; - if ( dy < 0 ) dy = -dy; + if ( dx < 0 ) + dx = -dx; + if ( dy < 0 ) + dy = -dy; /* strange test, but here it is... */ horizontal = ( dx > dy ); @@ -1734,7 +1823,8 @@ { x += args[0]; y += args[1]; - cff_builder_add_point( builder, x, y, (FT_Bool)( count == 3 ) ); + cff_builder_add_point( builder, x, y, + (FT_Bool)( count == 3 ) ); args += 2; } @@ -1761,13 +1851,12 @@ FT_UInt count; - FT_TRACE4(( " flex" )); + FT_TRACE4(( " flex\n" )); if ( cff_builder_start_point( builder, x, y ) || check_points( builder, 6 ) ) goto Fail; - args = stack; for ( count = 6; count > 0; count-- ) { x += args[0]; @@ -1782,21 +1871,20 @@ break; case cff_op_endchar: - FT_TRACE4(( " endchar" )); + FT_TRACE4(( " endchar\n" )); /* We are going to emulate the seac operator. */ - if ( num_args == 4 ) + if ( num_args >= 4 ) { /* Save glyph width so that the subglyphs don't overwrite it. */ FT_Pos glyph_width = decoder->glyph_width; error = cff_operator_seac( decoder, - args[0], - args[1], - (FT_Int)( args[2] >> 16 ), - (FT_Int)( args[3] >> 16 ) ); - args += 4; + args[-4], + args[-3], + (FT_Int)( args[-2] >> 16 ), + (FT_Int)( args[-1] >> 16 ) ); decoder->glyph_width = glyph_width; } @@ -1826,11 +1914,11 @@ } /* return now! */ - FT_TRACE4(( "\n\n" )); + FT_TRACE4(( "\n" )); return error; case cff_op_abs: - FT_TRACE4(( " abs" )); + FT_TRACE4(( " abs\n" )); if ( args[0] < 0 ) args[0] = -args[0]; @@ -1838,28 +1926,28 @@ break; case cff_op_add: - FT_TRACE4(( " add" )); + FT_TRACE4(( " add\n" )); args[0] += args[1]; args++; break; case cff_op_sub: - FT_TRACE4(( " sub" )); + FT_TRACE4(( " sub\n" )); args[0] -= args[1]; args++; break; case cff_op_div: - FT_TRACE4(( " div" )); + FT_TRACE4(( " div\n" )); args[0] = FT_DivFix( args[0], args[1] ); args++; break; case cff_op_neg: - FT_TRACE4(( " neg" )); + FT_TRACE4(( " neg\n" )); args[0] = -args[0]; args++; @@ -1870,7 +1958,7 @@ FT_Fixed Rand; - FT_TRACE4(( " rand" )); + FT_TRACE4(( " rand\n" )); Rand = seed; if ( Rand >= 0x8000L ) @@ -1885,14 +1973,14 @@ break; case cff_op_mul: - FT_TRACE4(( " mul" )); + FT_TRACE4(( " mul\n" )); args[0] = FT_MulFix( args[0], args[1] ); args++; break; case cff_op_sqrt: - FT_TRACE4(( " sqrt" )); + FT_TRACE4(( " sqrt\n" )); if ( args[0] > 0 ) { @@ -1917,7 +2005,7 @@ case cff_op_drop: /* nothing */ - FT_TRACE4(( " drop" )); + FT_TRACE4(( " drop\n" )); break; @@ -1926,7 +2014,7 @@ FT_Fixed tmp; - FT_TRACE4(( " exch" )); + FT_TRACE4(( " exch\n" )); tmp = args[0]; args[0] = args[1]; @@ -1940,7 +2028,7 @@ FT_Int idx = (FT_Int)( args[0] >> 16 ); - FT_TRACE4(( " index" )); + FT_TRACE4(( " index\n" )); if ( idx < 0 ) idx = 0; @@ -1957,7 +2045,7 @@ FT_Int idx = (FT_Int)( args[1] >> 16 ); - FT_TRACE4(( " roll" )); + FT_TRACE4(( " roll\n" )); if ( count <= 0 ) count = 1; @@ -1999,7 +2087,7 @@ break; case cff_op_dup: - FT_TRACE4(( " dup" )); + FT_TRACE4(( " dup\n" )); args[1] = args[0]; args++; @@ -2011,7 +2099,7 @@ FT_Int idx = (FT_Int)( args[1] >> 16 ); - FT_TRACE4(( " put" )); + FT_TRACE4(( " put\n" )); if ( idx >= 0 && idx < decoder->len_buildchar ) decoder->buildchar[idx] = val; @@ -2024,7 +2112,7 @@ FT_Fixed val = 0; - FT_TRACE4(( " get" )); + FT_TRACE4(( " get\n" )); if ( idx >= 0 && idx < decoder->len_buildchar ) val = decoder->buildchar[idx]; @@ -2035,18 +2123,18 @@ break; case cff_op_store: - FT_TRACE4(( " store ")); + FT_TRACE4(( " store\n")); goto Unimplemented; case cff_op_load: - FT_TRACE4(( " load" )); + FT_TRACE4(( " load\n" )); goto Unimplemented; case cff_op_dotsection: /* this operator is deprecated and ignored by the parser */ - FT_TRACE4(( " dotsection" )); + FT_TRACE4(( " dotsection\n" )); break; case cff_op_closepath: @@ -2054,7 +2142,7 @@ /* exist fonts which are incorrectly converted from probably */ /* Type 1 to CFF, and some parsers seem to accept it */ - FT_TRACE4(( " closepath (invalid op)" )); + FT_TRACE4(( " closepath (invalid op)\n" )); args = stack; break; @@ -2064,7 +2152,7 @@ /* exist fonts which are incorrectly converted from probably */ /* Type 1 to CFF, and some parsers seem to accept it */ - FT_TRACE4(( " hsbw (invalid op)" )); + FT_TRACE4(( " hsbw (invalid op)\n" )); decoder->glyph_width = decoder->nominal_width + (args[1] >> 16); @@ -2073,12 +2161,33 @@ args = stack; break; + case cff_op_callothersubr: + /* this is an invalid Type 2 operator; however, there */ + /* exist fonts which are incorrectly converted from probably */ + /* Type 1 to CFF, and some parsers seem to accept it */ + + FT_TRACE4(( " callothersubr (invalid op)\n" )); + + /* don't modify stack; handle the subr as `unknown' so that */ + /* following `pop' operands use the arguments on stack */ + break; + + case cff_op_pop: + /* this is an invalid Type 2 operator; however, there */ + /* exist fonts which are incorrectly converted from probably */ + /* Type 1 to CFF, and some parsers seem to accept it */ + + FT_TRACE4(( " pop (invalid op)\n" )); + + args++; + break; + case cff_op_and: { FT_Fixed cond = args[0] && args[1]; - FT_TRACE4(( " and" )); + FT_TRACE4(( " and\n" )); args[0] = cond ? 0x10000L : 0; args++; @@ -2090,7 +2199,7 @@ FT_Fixed cond = args[0] || args[1]; - FT_TRACE4(( " or" )); + FT_TRACE4(( " or\n" )); args[0] = cond ? 0x10000L : 0; args++; @@ -2102,7 +2211,7 @@ FT_Fixed cond = !args[0]; - FT_TRACE4(( " eq" )); + FT_TRACE4(( " eq\n" )); args[0] = cond ? 0x10000L : 0; args++; @@ -2114,7 +2223,7 @@ FT_Fixed cond = ( args[2] <= args[3] ); - FT_TRACE4(( " ifelse" )); + FT_TRACE4(( " ifelse\n" )); if ( !cond ) args[0] = args[1]; @@ -2128,7 +2237,7 @@ decoder->locals_bias ); - FT_TRACE4(( " callsubr(%d)", idx )); + FT_TRACE4(( " callsubr(%d)\n", idx )); if ( idx >= decoder->num_locals ) { @@ -2170,7 +2279,7 @@ decoder->globals_bias ); - FT_TRACE4(( " callgsubr(%d)", idx )); + FT_TRACE4(( " callgsubr(%d)\n", idx )); if ( idx >= decoder->num_globals ) { @@ -2207,7 +2316,7 @@ break; case cff_op_return: - FT_TRACE4(( " return" )); + FT_TRACE4(( " return\n" )); if ( decoder->zone <= decoder->zones ) { @@ -2245,15 +2354,15 @@ return error; Syntax_Error: - FT_TRACE4(( "cff_decoder_parse_charstrings: syntax error!" )); + FT_TRACE4(( "cff_decoder_parse_charstrings: syntax error!\n" )); return CFF_Err_Invalid_File_Format; Stack_Underflow: - FT_TRACE4(( "cff_decoder_parse_charstrings: stack underflow!" )); + FT_TRACE4(( "cff_decoder_parse_charstrings: stack underflow!\n" )); return CFF_Err_Too_Few_Arguments; Stack_Overflow: - FT_TRACE4(( "cff_decoder_parse_charstrings: stack overflow!" )); + FT_TRACE4(( "cff_decoder_parse_charstrings: stack overflow!\n" )); return CFF_Err_Stack_Overflow; } @@ -2341,9 +2450,9 @@ { FT_Error error; CFF_Decoder decoder; - TT_Face face = (TT_Face)glyph->root.face; + TT_Face face = (TT_Face)glyph->root.face; FT_Bool hinting, force_scaling; - CFF_Font cff = (CFF_Font)face->extra.data; + CFF_Font cff = (CFF_Font)face->extra.data; FT_Matrix font_matrix; FT_Vector font_offset; @@ -2357,9 +2466,14 @@ if ( cff->top_font.font_dict.cid_registry != 0xFFFFU && cff->charset.cids ) { - glyph_index = cff_charset_cid_to_gindex( &cff->charset, glyph_index ); - if ( glyph_index == 0 ) - return CFF_Err_Invalid_Argument; + /* don't handle CID 0 (.notdef) which is directly mapped to GID 0 */ + if ( glyph_index != 0 ) + { + glyph_index = cff_charset_cid_to_gindex( &cff->charset, + glyph_index ); + if ( glyph_index == 0 ) + return CFF_Err_Invalid_Argument; + } } else if ( glyph_index >= cff->num_glyphs ) return CFF_Err_Invalid_Argument; @@ -2488,8 +2602,11 @@ cff_decoder_init( &decoder, face, size, glyph, hinting, FT_LOAD_TARGET_MODE( load_flags ) ); + if ( load_flags & FT_LOAD_ADVANCE_ONLY ) + decoder.width_only = TRUE; + decoder.builder.no_recurse = - (FT_Bool)( ( load_flags & FT_LOAD_NO_RECURSE ) != 0 ); + (FT_Bool)( load_flags & FT_LOAD_NO_RECURSE ); /* now load the unscaled outline */ error = cff_get_glyph_data( face, glyph_index, @@ -2596,7 +2713,7 @@ has_vertical_info = FT_BOOL( face->vertical_info && face->vertical.number_Of_VMetrics > 0 && - face->vertical.long_metrics != 0 ); + face->vertical.long_metrics ); /* get the vertical metrics from the vtmx table if we have one */ if ( has_vertical_info ) diff --git a/src/3rdparty/freetype/src/cff/cffgload.h b/src/3rdparty/freetype/src/cff/cffgload.h index d661f9e..667134e 100644 --- a/src/3rdparty/freetype/src/cff/cffgload.h +++ b/src/3rdparty/freetype/src/cff/cffgload.h @@ -139,6 +139,7 @@ FT_BEGIN_HEADER FT_Pos nominal_width; FT_Bool read_width; + FT_Bool width_only; FT_Int num_hints; FT_Fixed* buildchar; FT_Int len_buildchar; diff --git a/src/3rdparty/freetype/src/cff/cffload.c b/src/3rdparty/freetype/src/cff/cffload.c index 1e7dd14..22163fb 100644 --- a/src/3rdparty/freetype/src/cff/cffload.c +++ b/src/3rdparty/freetype/src/cff/cffload.c @@ -4,7 +4,7 @@ /* */ /* OpenType and CFF data/program tables loader (body). */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007 by */ +/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -319,7 +319,7 @@ static FT_Error cff_index_load_offsets( CFF_Index idx ) { - FT_Error error = 0; + FT_Error error = CFF_Err_Ok; FT_Stream stream = idx->stream; FT_Memory memory = stream->memory; @@ -402,6 +402,7 @@ old_offset = 1; for ( n = 0; n <= idx->count; n++ ) { + /* at this point, `idx->offsets' can't be NULL */ offset = idx->offsets[n]; if ( !offset ) offset = old_offset; @@ -1355,7 +1356,8 @@ FT_LOCAL_DEF( FT_Error ) cff_font_load( FT_Stream stream, FT_Int face_index, - CFF_Font font ) + CFF_Font font, + FT_Bool pure_cff ) { static const FT_Frame_Field cff_header_fields[] = { @@ -1519,7 +1521,7 @@ /* read the Charset and Encoding tables if available */ if ( font->num_glyphs > 0 ) { - FT_Bool invert = FT_BOOL( dict->cid_registry != 0xFFFFU ); + FT_Bool invert = FT_BOOL( dict->cid_registry != 0xFFFFU && pure_cff ); error = cff_charset_load( &font->charset, font->num_glyphs, stream, @@ -1539,9 +1541,6 @@ if ( error ) goto Exit; } - else - /* CID-keyed fonts only need CIDs */ - FT_FREE( font->charset.sids ); } /* get the font name (/CIDFontName for CID-keyed fonts, */ diff --git a/src/3rdparty/freetype/src/cff/cffload.h b/src/3rdparty/freetype/src/cff/cffload.h index 068cbb5..02498bd 100644 --- a/src/3rdparty/freetype/src/cff/cffload.h +++ b/src/3rdparty/freetype/src/cff/cffload.h @@ -4,7 +4,7 @@ /* */ /* OpenType & CFF data/program tables loader (specification). */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2007 by */ +/* Copyright 1996-2001, 2002, 2003, 2007, 2008 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -60,7 +60,8 @@ FT_BEGIN_HEADER FT_LOCAL( FT_Error ) cff_font_load( FT_Stream stream, FT_Int face_index, - CFF_Font font ); + CFF_Font font, + FT_Bool pure_cff ); FT_LOCAL( void ) cff_font_done( CFF_Font font ); diff --git a/src/3rdparty/freetype/src/cff/cffobjs.c b/src/3rdparty/freetype/src/cff/cffobjs.c index 12997a9..3525ea3 100644 --- a/src/3rdparty/freetype/src/cff/cffobjs.c +++ b/src/3rdparty/freetype/src/cff/cffobjs.c @@ -101,7 +101,7 @@ /* CFF and Type 1 private dictionaries have slightly different */ - /* structures; we need to synthetize a Type 1 dictionary on the fly */ + /* structures; we need to synthesize a Type 1 dictionary on the fly */ static void cff_make_private_dict( CFF_SubFont subfont, @@ -437,7 +437,7 @@ error = sfnt->init_face( stream, face, face_index, num_params, params ); if ( !error ) { - if ( face->format_tag != 0x4F54544FL ) /* `OTTO'; OpenType/CFF font */ + if ( face->format_tag != TTAG_OTTO ) /* `OTTO'; OpenType/CFF font */ { FT_TRACE2(( "[not a valid OpenType/CFF font]\n" )); goto Bad_Format; @@ -465,8 +465,7 @@ pure_cff = 0; /* load font directory */ - error = sfnt->load_face( stream, face, - face_index, num_params, params ); + error = sfnt->load_face( stream, face, 0, num_params, params ); if ( error ) goto Exit; } @@ -508,13 +507,15 @@ goto Exit; face->extra.data = cff; - error = cff_font_load( stream, face_index, cff ); + error = cff_font_load( stream, face_index, cff, pure_cff ); if ( error ) goto Exit; cff->pshinter = pshinter; cff->psnames = (void*)psnames; + cffface->face_index = face_index; + /* Complement the root flags with some interesting information. */ /* Note that this is only necessary for pure CFF and CEF fonts; */ /* SFNT based fonts use the `name' table instead. */ @@ -534,6 +535,111 @@ goto Bad_Format; } + if ( !dict->units_per_em ) + dict->units_per_em = pure_cff ? 1000 : face->root.units_per_EM; + + /* Normalize the font matrix so that `matrix->xx' is 1; the */ + /* scaling is done with `units_per_em' then (at this point, */ + /* it already contains the scaling factor, but without */ + /* normalization of the matrix). */ + /* */ + /* Note that the offsets must be expressed in integer font */ + /* units. */ + + { + FT_Matrix* matrix = &dict->font_matrix; + FT_Vector* offset = &dict->font_offset; + FT_ULong* upm = &dict->units_per_em; + FT_Fixed temp = FT_ABS( matrix->yy ); + + + if ( temp != 0x10000L ) + { + *upm = FT_DivFix( *upm, temp ); + + matrix->xx = FT_DivFix( matrix->xx, temp ); + matrix->yx = FT_DivFix( matrix->yx, temp ); + matrix->xy = FT_DivFix( matrix->xy, temp ); + matrix->yy = FT_DivFix( matrix->yy, temp ); + offset->x = FT_DivFix( offset->x, temp ); + offset->y = FT_DivFix( offset->y, temp ); + } + + offset->x >>= 16; + offset->y >>= 16; + } + + for ( i = cff->num_subfonts; i > 0; i-- ) + { + CFF_FontRecDict sub = &cff->subfonts[i - 1]->font_dict; + CFF_FontRecDict top = &cff->top_font.font_dict; + + FT_Matrix* matrix; + FT_Vector* offset; + FT_ULong* upm; + FT_Fixed temp; + + + if ( sub->units_per_em ) + { + FT_Int scaling; + + + if ( top->units_per_em > 1 && sub->units_per_em > 1 ) + scaling = FT_MIN( top->units_per_em, sub->units_per_em ); + else + scaling = 1; + + FT_Matrix_Multiply_Scaled( &top->font_matrix, + &sub->font_matrix, + scaling ); + FT_Vector_Transform_Scaled( &sub->font_offset, + &top->font_matrix, + scaling ); + + sub->units_per_em = FT_MulDiv( sub->units_per_em, + top->units_per_em, + scaling ); + } + else + { + sub->font_matrix = top->font_matrix; + sub->font_offset = top->font_offset; + + sub->units_per_em = top->units_per_em; + } + + matrix = &sub->font_matrix; + offset = &sub->font_offset; + upm = &sub->units_per_em; + temp = FT_ABS( matrix->yy ); + + if ( temp != 0x10000L ) + { + *upm = FT_DivFix( *upm, temp ); + + /* if *upm is larger than 100*1000 we divide by 1000 -- */ + /* this can happen if e.g. there is no top-font FontMatrix */ + /* and the subfont FontMatrix already contains the complete */ + /* scaling for the subfont (see section 5.11 of the PLRM) */ + + /* 100 is a heuristic value */ + + if ( *upm > 100L * 1000L ) + *upm = ( *upm + 500 ) / 1000; + + matrix->xx = FT_DivFix( matrix->xx, temp ); + matrix->yx = FT_DivFix( matrix->yx, temp ); + matrix->xy = FT_DivFix( matrix->xy, temp ); + matrix->yy = FT_DivFix( matrix->yy, temp ); + offset->x = FT_DivFix( offset->x, temp ); + offset->y = FT_DivFix( offset->y, temp ); + } + + offset->x >>= 16; + offset->y >>= 16; + } + if ( pure_cff ) { char* style_name = NULL; @@ -554,10 +660,7 @@ cffface->bbox.xMax = ( dict->font_bbox.xMax + 0xFFFFU ) >> 16; cffface->bbox.yMax = ( dict->font_bbox.yMax + 0xFFFFU ) >> 16; - if ( !dict->units_per_em ) - dict->units_per_em = 1000; - - cffface->units_per_EM = dict->units_per_em; + cffface->units_per_EM = (FT_UShort)( dict->units_per_em ); cffface->ascender = (FT_Short)( cffface->bbox.yMax ); cffface->descender = (FT_Short)( cffface->bbox.yMin ); @@ -711,113 +814,7 @@ cffface->style_flags = flags; } - else - { - if ( !dict->units_per_em ) - dict->units_per_em = face->root.units_per_EM; - } - - /* Normalize the font matrix so that `matrix->xx' is 1; the */ - /* scaling is done with `units_per_em' then (at this point, */ - /* it already contains the scaling factor, but without */ - /* normalization of the matrix). */ - /* */ - /* Note that the offsets must be expressed in integer font */ - /* units. */ - { - FT_Matrix* matrix = &dict->font_matrix; - FT_Vector* offset = &dict->font_offset; - FT_ULong* upm = &dict->units_per_em; - FT_Fixed temp = FT_ABS( matrix->yy ); - - - if ( temp != 0x10000L ) - { - *upm = FT_DivFix( *upm, temp ); - - matrix->xx = FT_DivFix( matrix->xx, temp ); - matrix->yx = FT_DivFix( matrix->yx, temp ); - matrix->xy = FT_DivFix( matrix->xy, temp ); - matrix->yy = FT_DivFix( matrix->yy, temp ); - offset->x = FT_DivFix( offset->x, temp ); - offset->y = FT_DivFix( offset->y, temp ); - } - - offset->x >>= 16; - offset->y >>= 16; - } - - for ( i = cff->num_subfonts; i > 0; i-- ) - { - CFF_FontRecDict sub = &cff->subfonts[i - 1]->font_dict; - CFF_FontRecDict top = &cff->top_font.font_dict; - - FT_Matrix* matrix; - FT_Vector* offset; - FT_ULong* upm; - FT_Fixed temp; - - - if ( sub->units_per_em ) - { - FT_Int scaling; - - - if ( top->units_per_em > 1 && sub->units_per_em > 1 ) - scaling = FT_MIN( top->units_per_em, sub->units_per_em ); - else - scaling = 1; - - FT_Matrix_Multiply_Scaled( &top->font_matrix, - &sub->font_matrix, - scaling ); - FT_Vector_Transform_Scaled( &sub->font_offset, - &top->font_matrix, - scaling ); - - sub->units_per_em = FT_MulDiv( sub->units_per_em, - top->units_per_em, - scaling ); - } - else - { - sub->font_matrix = top->font_matrix; - sub->font_offset = top->font_offset; - - sub->units_per_em = top->units_per_em; - } - - matrix = &sub->font_matrix; - offset = &sub->font_offset; - upm = &sub->units_per_em; - temp = FT_ABS( matrix->yy ); - - if ( temp != 0x10000L ) - { - *upm = FT_DivFix( *upm, temp ); - - /* if *upm is larger than 100*1000 we divide by 1000 -- */ - /* this can happen if e.g. there is no top-font FontMatrix */ - /* and the subfont FontMatrix already contains the complete */ - /* scaling for the subfont (see section 5.11 of the PLRM) */ - - /* 100 is a heuristic value */ - - if ( *upm > 100L * 1000L ) - *upm = ( *upm + 500 ) / 1000; - - matrix->xx = FT_DivFix( matrix->xx, temp ); - matrix->yx = FT_DivFix( matrix->yx, temp ); - matrix->xy = FT_DivFix( matrix->xy, temp ); - matrix->yy = FT_DivFix( matrix->yy, temp ); - offset->x = FT_DivFix( offset->x, temp ); - offset->y = FT_DivFix( offset->y, temp ); - } - - offset->x >>= 16; - offset->y >>= 16; - } #ifndef FT_CONFIG_OPTION_NO_GLYPH_NAMES /* CID-keyed CFF fonts don't have glyph names -- the SFNT loader */ @@ -826,7 +823,7 @@ cffface->face_flags |= FT_FACE_FLAG_GLYPH_NAMES; #endif - if ( dict->cid_registry != 0xFFFFU ) + if ( dict->cid_registry != 0xFFFFU && pure_cff ) cffface->face_flags |= FT_FACE_FLAG_CID_KEYED; @@ -835,7 +832,7 @@ /* Compute char maps. */ /* */ - /* Try to synthetize a Unicode charmap if there is none available */ + /* Try to synthesize a Unicode charmap if there is none available */ /* already. If an OpenType font contains a Unicode "cmap", we */ /* will use it, whatever be in the CFF part of the file. */ { @@ -922,10 +919,16 @@ FT_LOCAL_DEF( void ) cff_face_done( FT_Face cffface ) /* CFF_Face */ { - CFF_Face face = (CFF_Face)cffface; - FT_Memory memory = cffface->memory; - SFNT_Service sfnt = (SFNT_Service)face->sfnt; + CFF_Face face = (CFF_Face)cffface; + FT_Memory memory; + SFNT_Service sfnt; + + + if ( !face ) + return; + memory = cffface->memory; + sfnt = (SFNT_Service)face->sfnt; if ( sfnt ) sfnt->done_face( face ); diff --git a/src/3rdparty/freetype/src/cff/cffparse.c b/src/3rdparty/freetype/src/cff/cffparse.c index d6d77dd..290595f 100644 --- a/src/3rdparty/freetype/src/cff/cffparse.c +++ b/src/3rdparty/freetype/src/cff/cffparse.c @@ -4,7 +4,7 @@ /* */ /* CFF token stream parser (body) */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2007, 2008 by */ +/* Copyright 1996-2001, 2002, 2003, 2004, 2007, 2008, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -244,7 +244,7 @@ if ( !nib && !number ) exponent_add--; /* Only add digit if we don't overflow. */ - else if ( number < 0xCCCCCCCL ) + else if ( number < 0xCCCCCCCL && fraction_length < 9 ) { fraction_length++; number = number * 10 + nib; @@ -355,6 +355,12 @@ if ( FT_ABS( integer_length ) > 5 ) goto Exit; + /* Remove non-significant digits. */ + if ( integer_length < 0 ) { + number /= power_tens[-integer_length]; + fraction_length += integer_length; + } + /* Convert into 16.16 format. */ if ( fraction_length > 0 ) { @@ -406,10 +412,9 @@ cff_parse_fixed_scaled( FT_Byte** d, FT_Int scaling ) { - return **d == - 30 ? cff_parse_real( d[0], d[1], scaling, NULL ) - : (FT_Fixed)FT_MulFix( cff_parse_integer( d[0], d[1] ) << 16, - power_tens[scaling] ); + return **d == 30 ? cff_parse_real( d[0], d[1], scaling, NULL ) + : ( cff_parse_integer( d[0], d[1] ) * + power_tens[scaling] ) << 16; } diff --git a/src/3rdparty/freetype/src/cff/module.mk b/src/3rdparty/freetype/src/cff/module.mk index 0474e37..ef1391c 100644 --- a/src/3rdparty/freetype/src/cff/module.mk +++ b/src/3rdparty/freetype/src/cff/module.mk @@ -16,7 +16,7 @@ FTMODULE_H_COMMANDS += CFF_DRIVER define CFF_DRIVER -$(OPEN_DRIVER)cff_driver_class$(CLOSE_DRIVER) +$(OPEN_DRIVER) FT_Driver_ClassRec, cff_driver_class $(CLOSE_DRIVER) $(ECHO_DRIVER)cff $(ECHO_DRIVER_DESC)OpenType fonts with extension *.otf$(ECHO_DRIVER_DONE) endef diff --git a/src/3rdparty/freetype/src/cid/cidload.c b/src/3rdparty/freetype/src/cid/cidload.c index 9ed8cee..a43a00e 100644 --- a/src/3rdparty/freetype/src/cid/cidload.c +++ b/src/3rdparty/freetype/src/cid/cidload.c @@ -4,7 +4,7 @@ /* */ /* CID-keyed Type1 font loader (body). */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006 by */ +/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -97,6 +97,10 @@ object = (FT_Byte*)&cid->font_info; break; + case T1_FIELD_LOCATION_FONT_EXTRA: + object = (FT_Byte*)&face->font_extra; + break; + case T1_FIELD_LOCATION_BBOX: object = (FT_Byte*)&cid->font_bbox; break; @@ -234,14 +238,38 @@ } + /* by mistake, `expansion_factor' appears both in PS_PrivateRec */ + /* and CID_FaceDictRec (both are public header files and can't */ + /* changed); we simply copy the value */ + + FT_CALLBACK_DEF( FT_Error ) + parse_expansion_factor( CID_Face face, + CID_Parser* parser ) + { + CID_FaceDict dict; + + + if ( parser->num_dict >= 0 ) + { + dict = face->cid.font_dicts + parser->num_dict; + + dict->expansion_factor = cid_parser_to_fixed( parser, 0 ); + dict->private_dict.expansion_factor = dict->expansion_factor; + } + + return CID_Err_Ok; + } + + static const T1_FieldRec cid_field_records[] = { #include "cidtoken.h" - T1_FIELD_CALLBACK( "FDArray", parse_fd_array, 0 ) - T1_FIELD_CALLBACK( "FontMatrix", parse_font_matrix, 0 ) + T1_FIELD_CALLBACK( "FDArray", parse_fd_array, 0 ) + T1_FIELD_CALLBACK( "FontMatrix", parse_font_matrix, 0 ) + T1_FIELD_CALLBACK( "ExpansionFactor", parse_expansion_factor, 0 ) { 0, T1_FIELD_LOCATION_CID_INFO, T1_FIELD_TYPE_NONE, 0, 0, 0, 0, 0, 0 } }; diff --git a/src/3rdparty/freetype/src/cid/cidobjs.c b/src/3rdparty/freetype/src/cid/cidobjs.c index 1b3bfbf..9647d87 100644 --- a/src/3rdparty/freetype/src/cid/cidobjs.c +++ b/src/3rdparty/freetype/src/cid/cidobjs.c @@ -4,7 +4,7 @@ /* */ /* CID objects manager (body). */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006 by */ +/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2008 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -193,61 +193,61 @@ FT_LOCAL_DEF( void ) cid_face_done( FT_Face cidface ) /* CID_Face */ { - CID_Face face = (CID_Face)cidface; - FT_Memory memory; + CID_Face face = (CID_Face)cidface; + FT_Memory memory; + CID_FaceInfo cid; + PS_FontInfo info; - if ( face ) - { - CID_FaceInfo cid = &face->cid; - PS_FontInfo info = &cid->font_info; + if ( !face ) + return; + cid = &face->cid; + info = &cid->font_info; + memory = cidface->memory; - memory = cidface->memory; + /* release subrs */ + if ( face->subrs ) + { + FT_Int n; - /* release subrs */ - if ( face->subrs ) + + for ( n = 0; n < cid->num_dicts; n++ ) { - FT_Int n; + CID_Subrs subr = face->subrs + n; - for ( n = 0; n < cid->num_dicts; n++ ) + if ( subr->code ) { - CID_Subrs subr = face->subrs + n; - - - if ( subr->code ) - { - FT_FREE( subr->code[0] ); - FT_FREE( subr->code ); - } + FT_FREE( subr->code[0] ); + FT_FREE( subr->code ); } - - FT_FREE( face->subrs ); } - /* release FontInfo strings */ - FT_FREE( info->version ); - FT_FREE( info->notice ); - FT_FREE( info->full_name ); - FT_FREE( info->family_name ); - FT_FREE( info->weight ); + FT_FREE( face->subrs ); + } - /* release font dictionaries */ - FT_FREE( cid->font_dicts ); - cid->num_dicts = 0; + /* release FontInfo strings */ + FT_FREE( info->version ); + FT_FREE( info->notice ); + FT_FREE( info->full_name ); + FT_FREE( info->family_name ); + FT_FREE( info->weight ); - /* release other strings */ - FT_FREE( cid->cid_font_name ); - FT_FREE( cid->registry ); - FT_FREE( cid->ordering ); + /* release font dictionaries */ + FT_FREE( cid->font_dicts ); + cid->num_dicts = 0; - cidface->family_name = 0; - cidface->style_name = 0; + /* release other strings */ + FT_FREE( cid->cid_font_name ); + FT_FREE( cid->registry ); + FT_FREE( cid->ordering ); - FT_FREE( face->binary_data ); - FT_FREE( face->cid_stream ); - } + cidface->family_name = 0; + cidface->style_name = 0; + + FT_FREE( face->binary_data ); + FT_FREE( face->cid_stream ); } @@ -324,6 +324,7 @@ goto Exit; /* check the face index */ + /* XXX: handle CID fonts with more than a single face */ if ( face_index != 0 ) { FT_ERROR(( "cid_face_init: invalid face index\n" )); diff --git a/src/3rdparty/freetype/src/cid/cidriver.c b/src/3rdparty/freetype/src/cid/cidriver.c index 85ee6cf..b41d5d6 100644 --- a/src/3rdparty/freetype/src/cid/cidriver.c +++ b/src/3rdparty/freetype/src/cid/cidriver.c @@ -4,7 +4,7 @@ /* */ /* CID driver interface (body). */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2008 by */ +/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2008, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -74,13 +74,23 @@ PS_FontInfoRec* afont_info ) { *afont_info = ((CID_Face)face)->cid.font_info; - return 0; + + return CID_Err_Ok; } + static FT_Error + cid_ps_get_font_extra( FT_Face face, + PS_FontExtraRec* afont_extra ) + { + *afont_extra = ((CID_Face)face)->font_extra; + + return CID_Err_Ok; + } static const FT_Service_PsInfoRec cid_service_ps_info = { (PS_GetFontInfoFunc) cid_ps_get_font_info, + (PS_GetFontExtraFunc) cid_ps_get_font_extra, (PS_HasGlyphNamesFunc) NULL, /* unsupported with CID fonts */ (PS_GetFontPrivateFunc)NULL /* unsupported */ }; @@ -112,9 +122,42 @@ } + static FT_Error + cid_get_is_cid( CID_Face face, + FT_Bool *is_cid ) + { + FT_Error error = CID_Err_Ok; + FT_UNUSED( face ); + + + if ( is_cid ) + *is_cid = 1; /* cid driver is only used for CID keyed fonts */ + + return error; + } + + + static FT_Error + cid_get_cid_from_glyph_index( CID_Face face, + FT_UInt glyph_index, + FT_UInt *cid ) + { + FT_Error error = CID_Err_Ok; + FT_UNUSED( face ); + + + if ( cid ) + *cid = glyph_index; /* identity mapping */ + + return error; + } + + static const FT_Service_CIDRec cid_service_cid_info = { - (FT_CID_GetRegistryOrderingSupplementFunc)cid_get_ros + (FT_CID_GetRegistryOrderingSupplementFunc)cid_get_ros, + (FT_CID_GetIsInternallyCIDKeyedFunc) cid_get_is_cid, + (FT_CID_GetCIDFromGlyphIndexFunc) cid_get_cid_from_glyph_index }; diff --git a/src/3rdparty/freetype/src/cid/cidtoken.h b/src/3rdparty/freetype/src/cid/cidtoken.h index ad5bbb2..94a3657 100644 --- a/src/3rdparty/freetype/src/cid/cidtoken.h +++ b/src/3rdparty/freetype/src/cid/cidtoken.h @@ -4,7 +4,7 @@ /* */ /* CID token definitions (specification only). */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2006 by */ +/* Copyright 1996-2001, 2002, 2003, 2006, 2008, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -49,6 +49,13 @@ T1_FIELD_NUM ( "UnderlinePosition", underline_position, 0 ) T1_FIELD_NUM ( "UnderlineThickness", underline_thickness, 0 ) +#undef FT_STRUCTURE +#define FT_STRUCTURE PS_FontExtraRec +#undef T1CODE +#define T1CODE T1_FIELD_LOCATION_FONT_EXTRA + + T1_FIELD_NUM ( "FSType", fs_type, 0 ) + #undef FT_STRUCTURE #define FT_STRUCTURE CID_FaceDictRec @@ -62,7 +69,6 @@ T1_FIELD_NUM ( "SubrCount", num_subrs, 0 ) T1_FIELD_NUM ( "lenBuildCharArray", len_buildchar, 0 ) T1_FIELD_FIXED( "ForceBoldThreshold", forcebold_threshold, 0 ) - T1_FIELD_FIXED( "ExpansionFactor", expansion_factor, 0 ) T1_FIELD_FIXED( "StrokeWidth", stroke_width, 0 ) @@ -92,6 +98,9 @@ T1_FIELD_NUM_TABLE ( "StemSnapH", snap_widths, 12, 0 ) T1_FIELD_NUM_TABLE ( "StemSnapV", snap_heights, 12, 0 ) + T1_FIELD_BOOL ( "ForceBold", force_bold, 0 ) + + #undef FT_STRUCTURE #define FT_STRUCTURE FT_BBox #undef T1CODE diff --git a/src/3rdparty/freetype/src/cid/module.mk b/src/3rdparty/freetype/src/cid/module.mk index 41e5a68..ce30bfd 100644 --- a/src/3rdparty/freetype/src/cid/module.mk +++ b/src/3rdparty/freetype/src/cid/module.mk @@ -16,7 +16,7 @@ FTMODULE_H_COMMANDS += TYPE1CID_DRIVER define TYPE1CID_DRIVER -$(OPEN_DRIVER)t1cid_driver_class$(CLOSE_DRIVER) +$(OPEN_DRIVER) FT_Driver_ClassRec, t1cid_driver_class $(CLOSE_DRIVER) $(ECHO_DRIVER)cid $(ECHO_DRIVER_DESC)Postscript CID-keyed fonts, no known extension$(ECHO_DRIVER_DONE) endef diff --git a/src/3rdparty/freetype/src/gxvalid/gxvcommn.c b/src/3rdparty/freetype/src/gxvalid/gxvcommn.c index 82fd6b3..46fc123 100644 --- a/src/3rdparty/freetype/src/gxvalid/gxvcommn.c +++ b/src/3rdparty/freetype/src/gxvalid/gxvcommn.c @@ -50,11 +50,11 @@ FT_UShort* b ) { if ( *a < *b ) - return ( -1 ); + return -1; else if ( *a > *b ) - return ( 1 ); + return 1; else - return ( 0 ); + return 0; } @@ -115,11 +115,11 @@ FT_ULong* b ) { if ( *a < *b ) - return ( -1 ); + return -1; else if ( *a > *b ) - return ( 1 ); + return 1; else - return ( 0 ); + return 0; } diff --git a/src/3rdparty/freetype/src/gxvalid/gxvcommn.h b/src/3rdparty/freetype/src/gxvalid/gxvcommn.h index 0128eca..198d8e4 100644 --- a/src/3rdparty/freetype/src/gxvalid/gxvcommn.h +++ b/src/3rdparty/freetype/src/gxvalid/gxvcommn.h @@ -275,11 +275,11 @@ FT_BEGIN_HEADER #else /* !FT_DEBUG_LEVEL_TRACE */ -#define GXV_INIT do ; while ( 0 ) -#define GXV_NAME_ENTER( name ) do ; while ( 0 ) -#define GXV_EXIT do ; while ( 0 ) +#define GXV_INIT do { } while ( 0 ) +#define GXV_NAME_ENTER( name ) do { } while ( 0 ) +#define GXV_EXIT do { } while ( 0 ) -#define GXV_TRACE( s ) do ; while ( 0 ) +#define GXV_TRACE( s ) do { } while ( 0 ) #endif /* !FT_DEBUG_LEVEL_TRACE */ diff --git a/src/3rdparty/freetype/src/gxvalid/gxvmort.c b/src/3rdparty/freetype/src/gxvalid/gxvmort.c index 6fb71b9..f4fbd30 100644 --- a/src/3rdparty/freetype/src/gxvalid/gxvmort.c +++ b/src/3rdparty/freetype/src/gxvalid/gxvmort.c @@ -42,7 +42,7 @@ gxv_mort_feature_validate( GXV_mort_feature f, GXV_Validator valid ) { - if ( f->featureType > gxv_feat_registry_length ) + if ( f->featureType >= gxv_feat_registry_length ) { GXV_TRACE(( "featureType %d is out of registered range, " "setting %d is unchecked\n", diff --git a/src/3rdparty/freetype/src/gxvalid/gxvmorx.c b/src/3rdparty/freetype/src/gxvalid/gxvmorx.c index 849d5e9..d217940 100644 --- a/src/3rdparty/freetype/src/gxvalid/gxvmorx.c +++ b/src/3rdparty/freetype/src/gxvalid/gxvmorx.c @@ -4,7 +4,8 @@ /* */ /* TrueTypeGX/AAT morx table validation (body). */ /* */ -/* Copyright 2005 by suzuki toshiya, Masatake YAMATO, Red Hat K.K., */ +/* Copyright 2005, 2008 by */ +/* suzuki toshiya, Masatake YAMATO, Red Hat K.K., */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -129,7 +130,7 @@ gxv_mort_featurearray_validate( p, limit, nFeatureFlags, valid ); p += valid->subtable_length; - if ( nSubtables >= 0x10000 ) + if ( nSubtables >= 0x10000L ) FT_INVALID_DATA; gxv_morx_subtables_validate( p, table + chainLength, diff --git a/src/3rdparty/freetype/src/gxvalid/module.mk b/src/3rdparty/freetype/src/gxvalid/module.mk index 44ef94a..9fd098e 100644 --- a/src/3rdparty/freetype/src/gxvalid/module.mk +++ b/src/3rdparty/freetype/src/gxvalid/module.mk @@ -16,7 +16,7 @@ FTMODULE_H_COMMANDS += GXVALID_MODULE define GXVALID_MODULE -$(OPEN_DRIVER)gxv_module_class$(CLOSE_DRIVER) +$(OPEN_DRIVER) FT_Module_Class, gxv_module_class $(CLOSE_DRIVER) $(ECHO_DRIVER)gxvalid $(ECHO_DRIVER_DESC)TrueTypeGX/AAT validation module$(ECHO_DRIVER_DONE) endef diff --git a/src/3rdparty/freetype/src/gzip/ftgzip.c b/src/3rdparty/freetype/src/gzip/ftgzip.c index af2022d..0d6bd34 100644 --- a/src/3rdparty/freetype/src/gzip/ftgzip.c +++ b/src/3rdparty/freetype/src/gzip/ftgzip.c @@ -8,7 +8,7 @@ /* parse compressed PCF fonts, as found with many X11 server */ /* distributions. */ /* */ -/* Copyright 2002, 2003, 2004, 2005, 2006 by */ +/* Copyright 2002, 2003, 2004, 2005, 2006, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -25,7 +25,7 @@ #include FT_INTERNAL_STREAM_H #include FT_INTERNAL_DEBUG_H #include FT_GZIP_H -#include <string.h> +#include FT_CONFIG_STANDARD_LIBRARY_H #include FT_MODULE_ERRORS_H @@ -569,7 +569,7 @@ if ( error ) result = 0; - FT_Stream_Seek( stream, old_pos ); + (void)FT_Stream_Seek( stream, old_pos ); } return result; diff --git a/src/3rdparty/freetype/src/gzip/inftrees.c b/src/3rdparty/freetype/src/gzip/inftrees.c index 3c39aca..ef53652 100644 --- a/src/3rdparty/freetype/src/gzip/inftrees.c +++ b/src/3rdparty/freetype/src/gzip/inftrees.c @@ -366,6 +366,9 @@ z_streamp z /* for messages */ if (r == Z_DATA_ERROR) z->msg = (char*)"oversubscribed distance tree"; else if (r == Z_BUF_ERROR) { +#if 0 + { +#endif #ifdef PKZIP_BUG_WORKAROUND r = Z_OK; } diff --git a/src/3rdparty/freetype/src/lzw/ftlzw.c b/src/3rdparty/freetype/src/lzw/ftlzw.c index 45fbf7b..a00bd50 100644 --- a/src/3rdparty/freetype/src/lzw/ftlzw.c +++ b/src/3rdparty/freetype/src/lzw/ftlzw.c @@ -8,7 +8,7 @@ /* be used to parse compressed PCF fonts, as found with many X11 server */ /* distributions. */ /* */ -/* Copyright 2004, 2005, 2006 by */ +/* Copyright 2004, 2005, 2006, 2009 by */ /* Albert Chin-A-Young. */ /* */ /* Based on code in src/gzip/ftgzip.c, Copyright 2004 by */ @@ -27,8 +27,7 @@ #include FT_INTERNAL_STREAM_H #include FT_INTERNAL_DEBUG_H #include FT_LZW_H -#include <string.h> -#include <stdio.h> +#include FT_CONFIG_STANDARD_LIBRARY_H #include FT_MODULE_ERRORS_H diff --git a/src/3rdparty/freetype/src/otvalid/Jamfile b/src/3rdparty/freetype/src/otvalid/Jamfile index 35a14c6..b457143 100644 --- a/src/3rdparty/freetype/src/otvalid/Jamfile +++ b/src/3rdparty/freetype/src/otvalid/Jamfile @@ -16,7 +16,7 @@ SubDir FT2_TOP $(FT2_SRC_DIR) otvalid ; if $(FT2_MULTI) { - _sources = otvbase otvcommn otvgdef otvgpos otvgsub otvjstf otvmod ; + _sources = otvbase otvcommn otvgdef otvgpos otvgsub otvjstf otvmod otvmath ; } else { diff --git a/src/3rdparty/freetype/src/otvalid/module.mk b/src/3rdparty/freetype/src/otvalid/module.mk index aa4db04..9cadde5 100644 --- a/src/3rdparty/freetype/src/otvalid/module.mk +++ b/src/3rdparty/freetype/src/otvalid/module.mk @@ -16,7 +16,7 @@ FTMODULE_H_COMMANDS += OTVALID_MODULE define OTVALID_MODULE -$(OPEN_DRIVER)otv_module_class$(CLOSE_DRIVER) +$(OPEN_DRIVER) FT_Module_Class, otv_module_class $(CLOSE_DRIVER) $(ECHO_DRIVER)otvalid $(ECHO_DRIVER_DESC)OpenType validation module$(ECHO_DRIVER_DONE) endef diff --git a/src/3rdparty/freetype/src/otvalid/otvalid.h b/src/3rdparty/freetype/src/otvalid/otvalid.h index 90255cd..eb99b9c 100644 --- a/src/3rdparty/freetype/src/otvalid/otvalid.h +++ b/src/3rdparty/freetype/src/otvalid/otvalid.h @@ -42,6 +42,7 @@ FT_BEGIN_HEADER otv_GDEF_validate( FT_Bytes table, FT_Bytes gsub, FT_Bytes gpos, + FT_UInt glyph_count, FT_Validator valid ); FT_LOCAL( void ) diff --git a/src/3rdparty/freetype/src/otvalid/otvcommn.h b/src/3rdparty/freetype/src/otvalid/otvcommn.h index 7c06b16..71726d5 100644 --- a/src/3rdparty/freetype/src/otvalid/otvcommn.h +++ b/src/3rdparty/freetype/src/otvalid/otvcommn.h @@ -192,12 +192,12 @@ FT_BEGIN_HEADER valid->func[2] = OTV_FUNC( z ); \ FT_END_STMNT -#define OTV_INIT do ; while ( 0 ) -#define OTV_ENTER do ; while ( 0 ) -#define OTV_NAME_ENTER( name ) do ; while ( 0 ) -#define OTV_EXIT do ; while ( 0 ) +#define OTV_INIT do { } while ( 0 ) +#define OTV_ENTER do { } while ( 0 ) +#define OTV_NAME_ENTER( name ) do { } while ( 0 ) +#define OTV_EXIT do { } while ( 0 ) -#define OTV_TRACE( s ) do ; while ( 0 ) +#define OTV_TRACE( s ) do { } while ( 0 ) #endif /* !FT_DEBUG_LEVEL_TRACE */ diff --git a/src/3rdparty/freetype/src/otvalid/otvgdef.c b/src/3rdparty/freetype/src/otvalid/otvgdef.c index 77bd651..3633ad0 100644 --- a/src/3rdparty/freetype/src/otvalid/otvgdef.c +++ b/src/3rdparty/freetype/src/otvalid/otvgdef.c @@ -141,10 +141,13 @@ /*************************************************************************/ /*************************************************************************/ + /* sets valid->glyph_count */ + FT_LOCAL_DEF( void ) otv_GDEF_validate( FT_Bytes table, FT_Bytes gsub, FT_Bytes gpos, + FT_UInt glyph_count, FT_Validator ftvalid ) { OTV_ValidatorRec validrec; @@ -183,6 +186,8 @@ else table_size = 10; /* OpenType < 1.2 */ + valid->glyph_count = glyph_count; + OTV_OPTIONAL_OFFSET( GlyphClassDef ); OTV_SIZE_CHECK( GlyphClassDef ); if ( GlyphClassDef ) diff --git a/src/3rdparty/freetype/src/otvalid/otvgpos.c b/src/3rdparty/freetype/src/otvalid/otvgpos.c index 220f714..53025ec 100644 --- a/src/3rdparty/freetype/src/otvalid/otvgpos.c +++ b/src/3rdparty/freetype/src/otvalid/otvgpos.c @@ -4,7 +4,7 @@ /* */ /* OpenType GPOS table validation (body). */ /* */ -/* Copyright 2002, 2004, 2005, 2006, 2007 by */ +/* Copyright 2002, 2004, 2005, 2006, 2007, 2008 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -644,7 +644,10 @@ /*************************************************************************/ /*************************************************************************/ - /* sets valid->extra2 (0) */ + /* UNDOCUMENTED (in OpenType 1.5): */ + /* BaseRecord tables can contain NULL pointers. */ + + /* sets valid->extra2 (1) */ static void otv_MarkBasePos_validate( FT_Bytes table, @@ -664,7 +667,7 @@ switch ( PosFormat ) { case 1: - valid->extra2 = 0; + valid->extra2 = 1; OTV_NEST2( MarkBasePosFormat1, BaseArray ); OTV_RUN( table, valid ); break; diff --git a/src/3rdparty/freetype/src/otvalid/otvmath.c b/src/3rdparty/freetype/src/otvalid/otvmath.c index b777d6a..50ed10c 100644 --- a/src/3rdparty/freetype/src/otvalid/otvmath.c +++ b/src/3rdparty/freetype/src/otvalid/otvmath.c @@ -4,7 +4,7 @@ /* */ /* OpenType MATH table validation (body). */ /* */ -/* Copyright 2007 by */ +/* Copyright 2007, 2008 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* Written by George Williams. */ @@ -93,6 +93,8 @@ OTV_OPTIONAL_TABLE( Coverage ); OTV_OPTIONAL_TABLE( DeviceTableOffset ); + FT_UNUSED( isItalic ); /* only used if tracing is active */ + OTV_NAME_ENTER( isItalic ? "MathItalicsCorrectionInfo" : "MathTopAccentAttachment" ); diff --git a/src/3rdparty/freetype/src/otvalid/otvmod.c b/src/3rdparty/freetype/src/otvalid/otvmod.c index c280299..63c25f6 100644 --- a/src/3rdparty/freetype/src/otvalid/otvmod.c +++ b/src/3rdparty/freetype/src/otvalid/otvmod.c @@ -4,7 +4,7 @@ /* */ /* FreeType's OpenType validation module implementation (body). */ /* */ -/* Copyright 2004, 2005, 2006, 2007 by */ +/* Copyright 2004, 2005, 2006, 2007, 2008 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -168,7 +168,7 @@ { ft_validator_init( &valid, gdef, gdef + len_gdef, FT_VALIDATE_DEFAULT ); if ( ft_setjmp( valid.jump_buffer ) == 0 ) - otv_GDEF_validate( gdef, gsub, gpos, &valid ); + otv_GDEF_validate( gdef, gsub, gpos, face->num_glyphs, &valid ); error = valid.error; if ( error ) goto Exit; diff --git a/src/3rdparty/freetype/src/pcf/module.mk b/src/3rdparty/freetype/src/pcf/module.mk index 0c51cd6..df383ff 100644 --- a/src/3rdparty/freetype/src/pcf/module.mk +++ b/src/3rdparty/freetype/src/pcf/module.mk @@ -27,7 +27,7 @@ FTMODULE_H_COMMANDS += PCF_DRIVER define PCF_DRIVER -$(OPEN_DRIVER)pcf_driver_class$(CLOSE_DRIVER) +$(OPEN_DRIVER) FT_Driver_ClassRec, pcf_driver_class $(CLOSE_DRIVER) $(ECHO_DRIVER)pcf $(ECHO_DRIVER_DESC)pcf bitmap fonts$(ECHO_DRIVER_DONE) endef diff --git a/src/3rdparty/freetype/src/pcf/pcfdrivr.c b/src/3rdparty/freetype/src/pcf/pcfdrivr.c index 0fea30e..e2d4d3d 100644 --- a/src/3rdparty/freetype/src/pcf/pcfdrivr.c +++ b/src/3rdparty/freetype/src/pcf/pcfdrivr.c @@ -2,7 +2,7 @@ FreeType font driver for pcf files - Copyright (C) 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2008 by + Copyright (C) 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009 by Francesco Zappa Nardelli Permission is hereby granted, free of charge, to any person obtaining a copy @@ -196,10 +196,15 @@ THE SOFTWARE. FT_CALLBACK_DEF( void ) PCF_Face_Done( FT_Face pcfface ) /* PCF_Face */ { - PCF_Face face = (PCF_Face)pcfface; - FT_Memory memory = FT_FACE_MEMORY( face ); + PCF_Face face = (PCF_Face)pcfface; + FT_Memory memory; + if ( !face ) + return; + + memory = FT_FACE_MEMORY( face ); + FT_FREE( face->encodings ); FT_FREE( face->metrics ); @@ -408,7 +413,7 @@ THE SOFTWARE. switch ( req->type ) { case FT_SIZE_REQUEST_TYPE_NOMINAL: - if ( height == ( bsize->y_ppem + 32 ) >> 6 ) + if ( height == ( ( bsize->y_ppem + 32 ) >> 6 ) ) error = PCF_Err_Ok; break; @@ -437,7 +442,7 @@ THE SOFTWARE. FT_Int32 load_flags ) { PCF_Face face = (PCF_Face)FT_SIZE_FACE( size ); - FT_Stream stream = face->root.stream; + FT_Stream stream; FT_Error error = PCF_Err_Ok; FT_Bitmap* bitmap = &slot->bitmap; PCF_Metric metric; @@ -454,6 +459,8 @@ THE SOFTWARE. goto Exit; } + stream = face->root.stream; + if ( glyph_index > 0 ) glyph_index--; diff --git a/src/3rdparty/freetype/src/pcf/pcfread.c b/src/3rdparty/freetype/src/pcf/pcfread.c index b9123cf..8e04c57 100644 --- a/src/3rdparty/freetype/src/pcf/pcfread.c +++ b/src/3rdparty/freetype/src/pcf/pcfread.c @@ -2,7 +2,7 @@ FreeType font driver for pcf fonts - Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 by + Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by Francesco Zappa Nardelli Permission is hereby granted, free of charge, to any person obtaining a copy @@ -48,7 +48,7 @@ THE SOFTWARE. #define FT_COMPONENT trace_pcfread -#if defined( FT_DEBUG_LEVEL_TRACE ) +#ifdef FT_DEBUG_LEVEL_TRACE static const char* const tableNames[] = { "prop", "accl", "mtrcs", "bmps", "imtrcs", @@ -152,7 +152,7 @@ THE SOFTWARE. break; } -#if defined( FT_DEBUG_LEVEL_TRACE ) +#ifdef FT_DEBUG_LEVEL_TRACE { FT_UInt i, j; @@ -470,7 +470,11 @@ THE SOFTWARE. if ( nprops & 3 ) { i = 4 - ( nprops & 3 ); - FT_Stream_Skip( stream, i ); + if ( FT_STREAM_SKIP( i ) ) + { + error = PCF_Err_Invalid_Stream_Skip; + goto Bail; + } } if ( PCF_BYTE_ORDER( format ) == MSBFirst ) @@ -623,7 +627,7 @@ THE SOFTWARE. metrics = face->metrics; for ( i = 0; i < nmetrics; i++ ) { - pcf_get_metric( stream, format, metrics + i ); + error = pcf_get_metric( stream, format, metrics + i ); metrics[i].bits = 0; diff --git a/src/3rdparty/freetype/src/pcf/rules.mk b/src/3rdparty/freetype/src/pcf/rules.mk index 1ad4ba8..7864152 100644 --- a/src/3rdparty/freetype/src/pcf/rules.mk +++ b/src/3rdparty/freetype/src/pcf/rules.mk @@ -3,7 +3,7 @@ # -# Copyright (C) 2000, 2001, 2003 by +# Copyright (C) 2000, 2001, 2003, 2008 by # Francesco Zappa Nardelli # # Permission is hereby granted, free of charge, to any person obtaining a copy @@ -35,15 +35,14 @@ PCF_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(PCF_DIR)) # pcf driver sources (i.e., C files) # -PCF_DRV_SRC := $(PCF_DIR)/pcfread.c \ - $(PCF_DIR)/pcfdrivr.c \ +PCF_DRV_SRC := $(PCF_DIR)/pcfdrivr.c \ + $(PCF_DIR)/pcfread.c \ $(PCF_DIR)/pcfutil.c # pcf driver headers # -PCF_DRV_H := $(PCF_DIR)/pcf.h \ - $(PCF_DIR)/pcfdrivr.h \ - $(PCF_DIR)/pcfutil.h \ +PCF_DRV_H := $(PCF_DRV_SRC:%.c=%.h) \ + $(PCF_DIR)/pcf.h \ $(PCF_DIR)/pcferror.h # pcf driver object(s) diff --git a/src/3rdparty/freetype/src/pfr/module.mk b/src/3rdparty/freetype/src/pfr/module.mk index 53ab34a..8d1d28a 100644 --- a/src/3rdparty/freetype/src/pfr/module.mk +++ b/src/3rdparty/freetype/src/pfr/module.mk @@ -16,7 +16,7 @@ FTMODULE_H_COMMANDS += PFR_DRIVER define PFR_DRIVER -$(OPEN_DRIVER)pfr_driver_class$(CLOSE_DRIVER) +$(OPEN_DRIVER) FT_Driver_ClassRec, pfr_driver_class $(CLOSE_DRIVER) $(ECHO_DRIVER)pfr $(ECHO_DRIVER_DESC)PFR/TrueDoc font files with extension *.pfr$(ECHO_DRIVER_DONE) endef diff --git a/src/3rdparty/freetype/src/pfr/pfrdrivr.c b/src/3rdparty/freetype/src/pfr/pfrdrivr.c index 4020672..15cca98 100644 --- a/src/3rdparty/freetype/src/pfr/pfrdrivr.c +++ b/src/3rdparty/freetype/src/pfr/pfrdrivr.c @@ -4,7 +4,7 @@ /* */ /* FreeType PFR driver interface (body). */ /* */ -/* Copyright 2002, 2003, 2004, 2006 by */ +/* Copyright 2002, 2003, 2004, 2006, 2008 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -66,10 +66,16 @@ FT_Pos *anadvance ) { PFR_Face face = (PFR_Face)pfrface; - FT_Error error = PFR_Err_Bad_Argument; + FT_Error error = PFR_Err_Invalid_Argument; *anadvance = 0; + + if ( !gindex ) + goto Exit; + + gindex--; + if ( face ) { PFR_PhyFont phys = &face->phy_font; @@ -82,6 +88,7 @@ } } + Exit: return error; } diff --git a/src/3rdparty/freetype/src/pfr/pfrobjs.c b/src/3rdparty/freetype/src/pfr/pfrobjs.c index 180446d..56d617d 100644 --- a/src/3rdparty/freetype/src/pfr/pfrobjs.c +++ b/src/3rdparty/freetype/src/pfr/pfrobjs.c @@ -4,7 +4,7 @@ /* */ /* FreeType PFR object methods (body). */ /* */ -/* Copyright 2002, 2003, 2004, 2005, 2006, 2007 by */ +/* Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -41,10 +41,15 @@ FT_LOCAL_DEF( void ) pfr_face_done( FT_Face pfrface ) /* PFR_Face */ { - PFR_Face face = (PFR_Face)pfrface; - FT_Memory memory = pfrface->driver->root.memory; + PFR_Face face = (PFR_Face)pfrface; + FT_Memory memory; + if ( !face ) + return; + + memory = pfrface->driver->root.memory; + /* we don't want dangling pointers */ pfrface->family_name = NULL; pfrface->style_name = NULL; diff --git a/src/3rdparty/freetype/src/psaux/afmparse.c b/src/3rdparty/freetype/src/psaux/afmparse.c index 0528fe6..63a786e 100644 --- a/src/3rdparty/freetype/src/psaux/afmparse.c +++ b/src/3rdparty/freetype/src/psaux/afmparse.c @@ -4,7 +4,7 @@ /* */ /* AFM parser (body). */ /* */ -/* Copyright 2006, 2007 by */ +/* Copyright 2006, 2007, 2008 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -672,7 +672,12 @@ FT_ULong index2 = KERN_INDEX( kp2->index1, kp2->index2 ); - return (int)( index1 - index2 ); + if ( index1 > index2 ) + return 1; + else if ( index1 < index2 ) + return -1; + else + return 0; } diff --git a/src/3rdparty/freetype/src/psaux/module.mk b/src/3rdparty/freetype/src/psaux/module.mk index 5431522..42bf6f5 100644 --- a/src/3rdparty/freetype/src/psaux/module.mk +++ b/src/3rdparty/freetype/src/psaux/module.mk @@ -16,7 +16,7 @@ FTMODULE_H_COMMANDS += PSAUX_MODULE define PSAUX_MODULE -$(OPEN_DRIVER)psaux_module_class$(CLOSE_DRIVER) +$(OPEN_DRIVER) FT_Module_Class, psaux_module_class $(CLOSE_DRIVER) $(ECHO_DRIVER)psaux $(ECHO_DRIVER_DESC)Postscript Type 1 & Type 2 helper module$(ECHO_DRIVER_DONE) endef diff --git a/src/3rdparty/freetype/src/psaux/psobjs.c b/src/3rdparty/freetype/src/psaux/psobjs.c index b7b84ac..52e30a4 100644 --- a/src/3rdparty/freetype/src/psaux/psobjs.c +++ b/src/3rdparty/freetype/src/psaux/psobjs.c @@ -4,7 +4,7 @@ /* */ /* Auxiliary functions for PostScript fonts (body). */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */ +/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -175,11 +175,17 @@ return PSaux_Err_Invalid_Argument; } + if ( length < 0 ) + { + FT_ERROR(( "ps_table_add: invalid length\n" )); + return PSaux_Err_Invalid_Argument; + } + /* grow the base block if needed */ if ( table->cursor + length > table->capacity ) { FT_Error error; - FT_Offset new_size = table->capacity; + FT_Offset new_size = table->capacity; FT_Long in_offset; @@ -376,7 +382,7 @@ /* skip octal escape or ignore backslash */ for ( i = 0; i < 3 && cur < limit; ++i ) { - if ( ! IS_OCTAL_DIGIT( *cur ) ) + if ( !IS_OCTAL_DIGIT( *cur ) ) break; ++cur; @@ -1259,8 +1265,9 @@ old_cursor = parser->cursor; old_limit = parser->limit; - /* we store the elements count if necessary */ - if ( field->type != T1_FIELD_TYPE_BBOX ) + /* we store the elements count if necessary; */ + /* we further assume that `count_offset' can't be zero */ + if ( field->type != T1_FIELD_TYPE_BBOX && field->count_offset != 0 ) *(FT_Byte*)( (FT_Byte*)objects[0] + field->count_offset ) = (FT_Byte)num_elements; @@ -1634,27 +1641,24 @@ t1_builder_close_contour( T1_Builder builder ) { FT_Outline* outline = builder->current; + FT_Int first; if ( !outline ) return; - /* XXXX: We must not include the last point in the path if it */ - /* is located on the first point. */ + first = outline->n_contours <= 1 + ? 0 : outline->contours[outline->n_contours - 2] + 1; + + /* We must not include the last point in the path if it */ + /* is located on the first point. */ if ( outline->n_points > 1 ) { - FT_Int first = 0; FT_Vector* p1 = outline->points + first; FT_Vector* p2 = outline->points + outline->n_points - 1; FT_Byte* control = (FT_Byte*)outline->tags + outline->n_points - 1; - if ( outline->n_contours > 1 ) - { - first = outline->contours[outline->n_contours - 2] + 1; - p1 = outline->points + first; - } - /* `delete' last point only if it coincides with the first */ /* point and it is not a control point (which can happen). */ if ( p1->x == p2->x && p1->y == p2->y ) @@ -1663,8 +1667,18 @@ } if ( outline->n_contours > 0 ) - outline->contours[outline->n_contours - 1] = - (short)( outline->n_points - 1 ); + { + /* Don't add contours only consisting of one point, i.e., */ + /* check whether begin point and last point are the same. */ + if ( first == outline->n_points - 1 ) + { + outline->n_contours--; + outline->n_points--; + } + else + outline->contours[outline->n_contours - 1] = + (short)( outline->n_points - 1 ); + } } diff --git a/src/3rdparty/freetype/src/psaux/t1decode.c b/src/3rdparty/freetype/src/psaux/t1decode.c index 550ba64..bda2324 100644 --- a/src/3rdparty/freetype/src/psaux/t1decode.c +++ b/src/3rdparty/freetype/src/psaux/t1decode.c @@ -4,7 +4,7 @@ /* */ /* PostScript Type 1 decoding routines (body). */ /* */ -/* Copyright 2000-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */ +/* Copyright 2000-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -354,10 +354,9 @@ ( decoder->buildchar == NULL ) ); if ( decoder->len_buildchar > 0 ) - memset( &decoder->buildchar[0], - 0, - sizeof( decoder->buildchar[0] ) * - decoder->len_buildchar ); + ft_memset( &decoder->buildchar[0], + 0, + sizeof( decoder->buildchar[0] ) * decoder->len_buildchar ); FT_TRACE4(( "\nStart charstring\n" )); @@ -777,10 +776,10 @@ idx + blend->num_designs > decoder->face->len_buildchar ) goto Unexpected_OtherSubr; - memcpy( &decoder->buildchar[idx], - blend->weight_vector, - blend->num_designs * - sizeof( blend->weight_vector[ 0 ] ) ); + ft_memcpy( &decoder->buildchar[idx], + blend->weight_vector, + blend->num_designs * + sizeof( blend->weight_vector[0] ) ); } break; diff --git a/src/3rdparty/freetype/src/pshinter/module.mk b/src/3rdparty/freetype/src/pshinter/module.mk index cd171d0..ed24eb7 100644 --- a/src/3rdparty/freetype/src/pshinter/module.mk +++ b/src/3rdparty/freetype/src/pshinter/module.mk @@ -16,7 +16,7 @@ FTMODULE_H_COMMANDS += PSHINTER_MODULE define PSHINTER_MODULE -$(OPEN_DRIVER)pshinter_module_class$(CLOSE_DRIVER) +$(OPEN_DRIVER) FT_Module_Class, pshinter_module_class $(CLOSE_DRIVER) $(ECHO_DRIVER)pshinter $(ECHO_DRIVER_DESC)Postscript hinter module$(ECHO_DRIVER_DONE) endef diff --git a/src/3rdparty/freetype/src/pshinter/pshalgo.c b/src/3rdparty/freetype/src/pshinter/pshalgo.c index 5d7e2f4..f9ab3da 100644 --- a/src/3rdparty/freetype/src/pshinter/pshalgo.c +++ b/src/3rdparty/freetype/src/pshinter/pshalgo.c @@ -4,7 +4,7 @@ /* */ /* PostScript hinting algorithm (body). */ /* */ -/* Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */ +/* Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used */ @@ -898,7 +898,7 @@ #ifdef DEBUG_ZONES -#include <stdio.h> +#include FT_CONFIG_STANDARD_LIBRARY_H static void psh_print_zone( PSH_Zone zone ) diff --git a/src/3rdparty/freetype/src/psnames/module.mk b/src/3rdparty/freetype/src/psnames/module.mk index a93063b..a6e9082 100644 --- a/src/3rdparty/freetype/src/psnames/module.mk +++ b/src/3rdparty/freetype/src/psnames/module.mk @@ -16,7 +16,7 @@ FTMODULE_H_COMMANDS += PSNAMES_MODULE define PSNAMES_MODULE -$(OPEN_DRIVER)psnames_module_class$(CLOSE_DRIVER) +$(OPEN_DRIVER) FT_Module_Class, psnames_module_class $(CLOSE_DRIVER) $(ECHO_DRIVER)psnames $(ECHO_DRIVER_DESC)Postscript & Unicode Glyph name handling$(ECHO_DRIVER_DONE) endef diff --git a/src/3rdparty/freetype/src/psnames/psmodule.c b/src/3rdparty/freetype/src/psnames/psmodule.c index dbcfe44..41942a9 100644 --- a/src/3rdparty/freetype/src/psnames/psmodule.c +++ b/src/3rdparty/freetype/src/psnames/psmodule.c @@ -174,18 +174,34 @@ /* sort base glyphs before glyph variants */ if ( unicode1 == unicode2 ) - return map1->unicode - map2->unicode; + { + if ( map1->unicode > map2->unicode ) + return 1; + else if ( map1->unicode < map2->unicode ) + return -1; + else + return 0; + } else - return unicode1 - unicode2; + { + if ( unicode1 > unicode2 ) + return 1; + else if ( unicode1 < unicode2 ) + return -1; + else + return 0; + } } - /* support for old WGL4 fonts */ + /* support for extra glyphs not handled (well) in AGL; */ + /* we add extra mappings for them if necessary */ -#define WGL_EXTRA_LIST_SIZE 8 +#define EXTRA_GLYPH_LIST_SIZE 10 - static const FT_UInt32 ft_wgl_extra_unicodes[WGL_EXTRA_LIST_SIZE] = + static const FT_UInt32 ft_extra_glyph_unicodes[EXTRA_GLYPH_LIST_SIZE] = { + /* WGL 4 */ 0x0394, 0x03A9, 0x2215, @@ -193,10 +209,13 @@ 0x02C9, 0x03BC, 0x2219, - 0x00A0 + 0x00A0, + /* Romanian */ + 0x021A, + 0x021B }; - static const char ft_wgl_extra_glyph_names[] = + static const char ft_extra_glyph_names[] = { 'D','e','l','t','a',0, 'O','m','e','g','a',0, @@ -205,11 +224,13 @@ 'm','a','c','r','o','n',0, 'm','u',0, 'p','e','r','i','o','d','c','e','n','t','e','r','e','d',0, - 's','p','a','c','e',0 + 's','p','a','c','e',0, + 'T','c','o','m','m','a','a','c','c','e','n','t',0, + 't','c','o','m','m','a','a','c','c','e','n','t',0 }; static const FT_Int - ft_wgl_extra_glyph_name_offsets[WGL_EXTRA_LIST_SIZE] = + ft_extra_glyph_name_offsets[EXTRA_GLYPH_LIST_SIZE] = { 0, 6, @@ -218,29 +239,31 @@ 28, 35, 38, - 53 + 53, + 59, + 72 }; static void - ps_check_wgl_name( const char* gname, - FT_UInt glyph, - FT_UInt* wgl_glyphs, - FT_UInt *states ) + ps_check_extra_glyph_name( const char* gname, + FT_UInt glyph, + FT_UInt* extra_glyphs, + FT_UInt *states ) { FT_UInt n; - for ( n = 0; n < WGL_EXTRA_LIST_SIZE; n++ ) + for ( n = 0; n < EXTRA_GLYPH_LIST_SIZE; n++ ) { - if ( ft_strcmp( ft_wgl_extra_glyph_names + - ft_wgl_extra_glyph_name_offsets[n], gname ) == 0 ) + if ( ft_strcmp( ft_extra_glyph_names + + ft_extra_glyph_name_offsets[n], gname ) == 0 ) { if ( states[n] == 0 ) { - /* mark this WGL extra glyph as a candidate for the cmap */ + /* mark this extra glyph as a candidate for the cmap */ states[n] = 1; - wgl_glyphs[n] = glyph; + extra_glyphs[n] = glyph; } return; @@ -250,17 +273,17 @@ static void - ps_check_wgl_unicode( FT_UInt32 uni_char, - FT_UInt *states ) + ps_check_extra_glyph_unicode( FT_UInt32 uni_char, + FT_UInt *states ) { FT_UInt n; - for ( n = 0; n < WGL_EXTRA_LIST_SIZE; n++ ) + for ( n = 0; n < EXTRA_GLYPH_LIST_SIZE; n++ ) { - if ( uni_char == ft_wgl_extra_unicodes[n] ) + if ( uni_char == ft_extra_glyph_unicodes[n] ) { - /* disable this WGL extra glyph from being added to the cmap */ + /* disable this extra glyph from being added to the cmap */ states[n] = 2; return; @@ -280,15 +303,15 @@ { FT_Error error; - FT_UInt wgl_list_states[] = { 0, 0, 0, 0, 0, 0, 0, 0 }; - FT_UInt wgl_glyphs[WGL_EXTRA_LIST_SIZE]; + FT_UInt extra_glyph_list_states[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; + FT_UInt extra_glyphs[EXTRA_GLYPH_LIST_SIZE]; /* we first allocate the table */ table->num_maps = 0; table->maps = 0; - if ( !FT_NEW_ARRAY( table->maps, num_glyphs + WGL_EXTRA_LIST_SIZE ) ) + if ( !FT_NEW_ARRAY( table->maps, num_glyphs + EXTRA_GLYPH_LIST_SIZE ) ) { FT_UInt n; FT_UInt count; @@ -305,12 +328,14 @@ if ( gname ) { - ps_check_wgl_name( gname, n, wgl_glyphs, wgl_list_states ); + ps_check_extra_glyph_name( gname, n, + extra_glyphs, extra_glyph_list_states ); uni_char = ps_unicode_value( gname ); if ( BASE_GLYPH( uni_char ) != 0 ) { - ps_check_wgl_unicode( uni_char, wgl_list_states ); + ps_check_extra_glyph_unicode( uni_char, + extra_glyph_list_states ); map->unicode = uni_char; map->glyph_index = n; map++; @@ -321,15 +346,15 @@ } } - for ( n = 0; n < WGL_EXTRA_LIST_SIZE; n++ ) + for ( n = 0; n < EXTRA_GLYPH_LIST_SIZE; n++ ) { - if ( wgl_list_states[n] == 1 ) + if ( extra_glyph_list_states[n] == 1 ) { - /* This glyph name has an additional WGL4 representation. */ - /* Add it to the cmap. */ + /* This glyph name has an additional representation. */ + /* Add it to the cmap. */ - map->unicode = ft_wgl_extra_unicodes[n]; - map->glyph_index = wgl_glyphs[n]; + map->unicode = ft_extra_glyph_unicodes[n]; + map->glyph_index = extra_glyphs[n]; map++; } } diff --git a/src/3rdparty/freetype/src/psnames/pstables.h b/src/3rdparty/freetype/src/psnames/pstables.h index cc40ef7..1521e9c 100644 --- a/src/3rdparty/freetype/src/psnames/pstables.h +++ b/src/3rdparty/freetype/src/psnames/pstables.h @@ -4,7 +4,7 @@ /* */ /* PostScript glyph names. */ /* */ -/* Copyright 2005 by */ +/* Copyright 2005, 2008 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -561,7 +561,10 @@ * The lookup function to get the Unicode value for a given string * is defined below the table. */ - static const unsigned char ft_adobe_glyph_list[54791] = + +#ifdef FT_CONFIG_OPTION_ADOBE_GLYPH_LIST + + static const unsigned char ft_adobe_glyph_list[54791L] = { 0, 52, 0,106, 2,167, 3, 63, 4,220, 6,125, 9,143, 10, 23, 11,137, 12,199, 14,246, 15, 87, 16,233, 17,219, 18,104, 19, 88, @@ -4086,5 +4089,7 @@ return 0; } +#endif /* FT_CONFIG_OPTION_ADOBE_GLYPH_LIST */ + /* END */ diff --git a/src/3rdparty/freetype/src/raster/ftmisc.h b/src/3rdparty/freetype/src/raster/ftmisc.h index c5dbd50..d9d73e3 100644 --- a/src/3rdparty/freetype/src/raster/ftmisc.h +++ b/src/3rdparty/freetype/src/raster/ftmisc.h @@ -5,7 +5,7 @@ /* Miscellaneous macros for stand-alone rasterizer (specification */ /* only). */ /* */ -/* Copyright 2005 by */ +/* Copyright 2005, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used */ @@ -27,7 +27,8 @@ #ifndef __FTMISC_H__ #define __FTMISC_H__ -#include <string.h> /* memset */ + /* memset */ +#include FT_CONFIG_STANDARD_LIBRARY_H #define FT_BEGIN_HEADER #define FT_END_HEADER diff --git a/src/3rdparty/freetype/src/raster/ftraster.c b/src/3rdparty/freetype/src/raster/ftraster.c index 86d77d4..eb9c4a4 100644 --- a/src/3rdparty/freetype/src/raster/ftraster.c +++ b/src/3rdparty/freetype/src/raster/ftraster.c @@ -4,7 +4,7 @@ /* */ /* The FreeType glyph rasterizer (body). */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2005, 2007, 2008 by */ +/* Copyright 1996-2001, 2002, 2003, 2005, 2007, 2008, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -181,13 +181,13 @@ /* Disable the tracing mechanism for simplicity -- developers can */ /* activate it easily by redefining these two macros. */ #ifndef FT_ERROR -#define FT_ERROR( x ) do ; while ( 0 ) /* nothing */ +#define FT_ERROR( x ) do { } while ( 0 ) /* nothing */ #endif #ifndef FT_TRACE -#define FT_TRACE( x ) do ; while ( 0 ) /* nothing */ -#define FT_TRACE1( x ) do ; while ( 0 ) /* nothing */ -#define FT_TRACE6( x ) do ; while ( 0 ) /* nothing */ +#define FT_TRACE( x ) do { } while ( 0 ) /* nothing */ +#define FT_TRACE1( x ) do { } while ( 0 ) /* nothing */ +#define FT_TRACE6( x ) do { } while ( 0 ) /* nothing */ #endif #define Raster_Err_None 0 @@ -370,7 +370,7 @@ #define RAS_VARS /* void */ #define RAS_VAR /* void */ -#define FT_UNUSED_RASTER do ; while ( 0 ) +#define FT_UNUSED_RASTER do { } while ( 0 ) #else /* FT_STATIC_RASTER */ @@ -388,7 +388,7 @@ #endif /* FT_STATIC_RASTER */ - typedef struct TWorker_ TWorker, *PWorker; + typedef struct TWorker_ TWorker, *PWorker; /* prototypes used for sweep function dispatch */ @@ -518,7 +518,7 @@ }; - typedef struct TRaster_ + typedef struct TRaster_ { char* buffer; long buffer_size; @@ -531,7 +531,7 @@ #ifdef FT_STATIC_RASTER - static TWorker cur_ras; + static TWorker cur_ras; #define ras cur_ras #else @@ -543,24 +543,25 @@ #ifdef FT_RASTER_OPTION_ANTI_ALIASING -static const char count_table[256] = -{ - 0 , 1 , 1 , 2 , 1 , 2 , 2 , 3 , 1 , 2 , 2 , 3 , 2 , 3 , 3 , 4, - 1 , 2 , 2 , 3 , 2 , 3 , 3 , 4 , 2 , 3 , 3 , 4 , 3 , 4 , 4 , 5, - 1 , 2 , 2 , 3 , 2 , 3 , 3 , 4 , 2 , 3 , 3 , 4 , 3 , 4 , 4 , 5, - 2 , 3 , 3 , 4 , 3 , 4 , 4 , 5 , 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6, - 1 , 2 , 2 , 3 , 2 , 3 , 3 , 4 , 2 , 3 , 3 , 4 , 3 , 4 , 4 , 5, - 2 , 3 , 3 , 4 , 3 , 4 , 4 , 5 , 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6, - 2 , 3 , 3 , 4 , 3 , 4 , 4 , 5 , 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6, - 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6 , 4 , 5 , 5 , 6 , 5 , 6 , 6 , 7, - 1 , 2 , 2 , 3 , 2 , 3 , 3 , 4 , 2 , 3 , 3 , 4 , 3 , 4 , 4 , 5, - 2 , 3 , 3 , 4 , 3 , 4 , 4 , 5 , 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6, - 2 , 3 , 3 , 4 , 3 , 4 , 4 , 5 , 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6, - 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6 , 4 , 5 , 5 , 6 , 5 , 6 , 6 , 7, - 2 , 3 , 3 , 4 , 3 , 4 , 4 , 5 , 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6, - 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6 , 4 , 5 , 5 , 6 , 5 , 6 , 6 , 7, - 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6 , 4 , 5 , 5 , 6 , 5 , 6 , 6 , 7, - 4 , 5 , 5 , 6 , 5 , 6 , 6 , 7 , 5 , 6 , 6 , 7 , 6 , 7 , 7 , 8 }; + static const char count_table[256] = + { + 0 , 1 , 1 , 2 , 1 , 2 , 2 , 3 , 1 , 2 , 2 , 3 , 2 , 3 , 3 , 4, + 1 , 2 , 2 , 3 , 2 , 3 , 3 , 4 , 2 , 3 , 3 , 4 , 3 , 4 , 4 , 5, + 1 , 2 , 2 , 3 , 2 , 3 , 3 , 4 , 2 , 3 , 3 , 4 , 3 , 4 , 4 , 5, + 2 , 3 , 3 , 4 , 3 , 4 , 4 , 5 , 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6, + 1 , 2 , 2 , 3 , 2 , 3 , 3 , 4 , 2 , 3 , 3 , 4 , 3 , 4 , 4 , 5, + 2 , 3 , 3 , 4 , 3 , 4 , 4 , 5 , 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6, + 2 , 3 , 3 , 4 , 3 , 4 , 4 , 5 , 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6, + 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6 , 4 , 5 , 5 , 6 , 5 , 6 , 6 , 7, + 1 , 2 , 2 , 3 , 2 , 3 , 3 , 4 , 2 , 3 , 3 , 4 , 3 , 4 , 4 , 5, + 2 , 3 , 3 , 4 , 3 , 4 , 4 , 5 , 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6, + 2 , 3 , 3 , 4 , 3 , 4 , 4 , 5 , 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6, + 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6 , 4 , 5 , 5 , 6 , 5 , 6 , 6 , 7, + 2 , 3 , 3 , 4 , 3 , 4 , 4 , 5 , 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6, + 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6 , 4 , 5 , 5 , 6 , 5 , 6 , 6 , 7, + 3 , 4 , 4 , 5 , 4 , 5 , 5 , 6 , 4 , 5 , 5 , 6 , 5 , 6 , 6 , 7, + 4 , 5 , 5 , 6 , 5 , 6 , 6 , 7 , 5 , 6 , 6 , 7 , 6 , 7 , 7 , 8 +a }; #endif /* FT_RASTER_OPTION_ANTI_ALIASING */ @@ -581,7 +582,7 @@ static const char count_table[256] = /* Set_High_Precision */ /* */ /* <Description> */ - /* Sets precision variables according to param flag. */ + /* Set precision variables according to param flag. */ /* */ /* <Input> */ /* High :: Set to True for high precision (typically for ppem < 18), */ @@ -618,7 +619,7 @@ static const char count_table[256] = /* New_Profile */ /* */ /* <Description> */ - /* Creates a new profile in the render pool. */ + /* Create a new profile in the render pool. */ /* */ /* <Input> */ /* aState :: The state/orientation of the new profile. */ @@ -684,7 +685,7 @@ static const char count_table[256] = /* End_Profile */ /* */ /* <Description> */ - /* Finalizes the current profile. */ + /* Finalize the current profile. */ /* */ /* <Return> */ /* SUCCESS on success. FAILURE in case of overflow or incoherency. */ @@ -741,7 +742,7 @@ static const char count_table[256] = /* Insert_Y_Turn */ /* */ /* <Description> */ - /* Inserts a salient into the sorted list placed on top of the render */ + /* Insert a salient into the sorted list placed on top of the render */ /* pool. */ /* */ /* <Input> */ @@ -796,7 +797,7 @@ static const char count_table[256] = /* Finalize_Profile_Table */ /* */ /* <Description> */ - /* Adjusts all links in the profiles list. */ + /* Adjust all links in the profiles list. */ /* */ /* <Return> */ /* SUCCESS on success. FAILURE in case of overflow. */ @@ -810,10 +811,10 @@ static const char count_table[256] = n = ras.num_Profs; + p = ras.fProfile; - if ( n > 1 ) + if ( n > 1 && p ) { - p = ras.fProfile; while ( n > 0 ) { if ( n > 1 ) @@ -857,7 +858,7 @@ static const char count_table[256] = /* Split_Conic */ /* */ /* <Description> */ - /* Subdivides one conic Bezier into two joint sub-arcs in the Bezier */ + /* Subdivide one conic Bezier into two joint sub-arcs in the Bezier */ /* stack. */ /* */ /* <Input> */ @@ -896,7 +897,7 @@ static const char count_table[256] = /* Split_Cubic */ /* */ /* <Description> */ - /* Subdivides a third-order Bezier arc into two joint sub-arcs in the */ + /* Subdivide a third-order Bezier arc into two joint sub-arcs in the */ /* Bezier stack. */ /* */ /* <Note> */ @@ -938,7 +939,7 @@ static const char count_table[256] = /* Line_Up */ /* */ /* <Description> */ - /* Computes the x-coordinates of an ascending line segment and stores */ + /* Compute the x-coordinates of an ascending line segment and store */ /* them in the render pool. */ /* */ /* <Input> */ @@ -1077,8 +1078,8 @@ static const char count_table[256] = /* Line_Down */ /* */ /* <Description> */ - /* Computes the x-coordinates of an descending line segment and */ - /* stores them in the render pool. */ + /* Compute the x-coordinates of an descending line segment and store */ + /* them in the render pool. */ /* */ /* <Input> */ /* x1 :: The x-coordinate of the segment's start point. */ @@ -1128,7 +1129,7 @@ static const char count_table[256] = /* Bezier_Up */ /* */ /* <Description> */ - /* Computes the x-coordinates of an ascending Bezier arc and stores */ + /* Compute the x-coordinates of an ascending Bezier arc and store */ /* them in the render pool. */ /* */ /* <Input> */ @@ -1261,7 +1262,7 @@ static const char count_table[256] = /* Bezier_Down */ /* */ /* <Description> */ - /* Computes the x-coordinates of an descending Bezier arc and stores */ + /* Compute the x-coordinates of an descending Bezier arc and store */ /* them in the render pool. */ /* */ /* <Input> */ @@ -1310,7 +1311,7 @@ static const char count_table[256] = /* Line_To */ /* */ /* <Description> */ - /* Injects a new line segment and adjusts Profiles list. */ + /* Inject a new line segment and adjust the Profiles list. */ /* */ /* <Input> */ /* x :: The x-coordinate of the segment's end point (its start point */ @@ -1400,7 +1401,7 @@ static const char count_table[256] = /* Conic_To */ /* */ /* <Description> */ - /* Injects a new conic arc and adjusts the profile list. */ + /* Inject a new conic arc and adjust the profile list. */ /* */ /* <Input> */ /* cx :: The x-coordinate of the arc's new control point. */ @@ -1510,7 +1511,7 @@ static const char count_table[256] = /* Cubic_To */ /* */ /* <Description> */ - /* Injects a new cubic arc and adjusts the profile list. */ + /* Inject a new cubic arc and adjust the profile list. */ /* */ /* <Input> */ /* cx1 :: The x-coordinate of the arc's first new control point. */ @@ -1648,7 +1649,7 @@ static const char count_table[256] = /* Decompose_Curve */ /* */ /* <Description> */ - /* Scans the outline arrays in order to emit individual segments and */ + /* Scan the outline arrays in order to emit individual segments and */ /* Beziers by calling Line_To() and Bezier_To(). It handles all */ /* weird cases, like when the first point is off the curve, or when */ /* there are simply no `on' points in the contour! */ @@ -1869,7 +1870,7 @@ static const char count_table[256] = /* Convert_Glyph */ /* */ /* <Description> */ - /* Converts a glyph into a series of segments and arcs and makes a */ + /* Convert a glyph into a series of segments and arcs and make a */ /* profiles list with them. */ /* */ /* <Input> */ @@ -2150,8 +2151,10 @@ static const char count_table[256] = f1 = (Byte) ( 0xFF >> ( e1 & 7 ) ); f2 = (Byte) ~( 0x7F >> ( e2 & 7 ) ); - if ( ras.gray_min_x > c1 ) ras.gray_min_x = (short)c1; - if ( ras.gray_max_x < c2 ) ras.gray_max_x = (short)c2; + if ( ras.gray_min_x > c1 ) + ras.gray_min_x = (short)c1; + if ( ras.gray_max_x < c2 ) + ras.gray_max_x = (short)c2; target = ras.bTarget + ras.traceOfs + c1; c2 -= c1; @@ -2184,14 +2187,36 @@ static const char count_table[256] = PProfile left, PProfile right ) { - Long e1, e2; + Long e1, e2, pxl; Short c1, f1; /* Drop-out control */ - e1 = CEILING( x1 ); - e2 = FLOOR ( x2 ); + /* e2 x2 x1 e1 */ + /* */ + /* ^ | */ + /* | | */ + /* +-------------+---------------------+------------+ */ + /* | | */ + /* | v */ + /* */ + /* pixel contour contour pixel */ + /* center center */ + + /* drop-out mode scan conversion rules (as defined in OpenType) */ + /* --------------------------------------------------------------- */ + /* 0 1, 2, 3 */ + /* 1 1, 2, 4 */ + /* 2 1, 2 */ + /* 3 same as mode 2 */ + /* 4 1, 2, 5 */ + /* 5 1, 2, 6 */ + /* 6, 7 same as mode 2 */ + + e1 = CEILING( x1 ); + e2 = FLOOR ( x2 ); + pxl = e1; if ( e1 > e2 ) { @@ -2199,19 +2224,20 @@ static const char count_table[256] = { switch ( ras.dropOutControl ) { - case 1: - e1 = e2; + case 0: /* simple drop-outs including stubs */ + pxl = e2; break; - case 4: - e1 = CEILING( (x1 + x2 + 1) / 2 ); + case 4: /* smart drop-outs including stubs */ + pxl = FLOOR( ( x1 + x2 + 1 ) / 2 + ras.precision_half ); break; - case 2: - case 5: - /* Drop-out Control Rule #4 */ + case 1: /* simple drop-outs excluding stubs */ + case 5: /* smart drop-outs excluding stubs */ + + /* Drop-out Control Rules #4 and #6 */ - /* The spec is not very clear regarding rule #4. It */ + /* The spec is not very clear regarding those rules. It */ /* presents a method that is way too costly to implement */ /* while the general idea seems to get rid of `stubs'. */ /* */ @@ -2233,7 +2259,6 @@ static const char count_table[256] = /* FIXXXME: uncommenting this line solves the disappearing */ /* bit problem in the `7' of verdana 10pts, but */ /* makes a new one in the `C' of arial 14pts */ - #if 0 if ( x2 - x1 < ras.precision_half ) #endif @@ -2247,41 +2272,43 @@ static const char count_table[256] = return; } - /* check that the rightmost pixel isn't set */ - - e1 = TRUNC( e1 ); + if ( ras.dropOutControl == 1 ) + pxl = e2; + else + pxl = FLOOR( ( x1 + x2 + 1 ) / 2 + ras.precision_half ); + break; - c1 = (Short)( e1 >> 3 ); - f1 = (Short)( e1 & 7 ); + default: /* modes 2, 3, 6, 7 */ + return; /* no drop-out control */ + } - if ( e1 >= 0 && e1 < ras.bWidth && - ras.bTarget[ras.traceOfs + c1] & ( 0x80 >> f1 ) ) - return; + /* check that the other pixel isn't set */ + e1 = pxl == e1 ? e2 : e1; - if ( ras.dropOutControl == 2 ) - e1 = e2; - else - e1 = CEILING( ( x1 + x2 + 1 ) / 2 ); + e1 = TRUNC( e1 ); - break; + c1 = (Short)( e1 >> 3 ); + f1 = (Short)( e1 & 7 ); - default: - return; /* unsupported mode */ - } + if ( e1 >= 0 && e1 < ras.bWidth && + ras.bTarget[ras.traceOfs + c1] & ( 0x80 >> f1 ) ) + return; } else return; } - e1 = TRUNC( e1 ); + e1 = TRUNC( pxl ); if ( e1 >= 0 && e1 < ras.bWidth ) { c1 = (Short)( e1 >> 3 ); f1 = (Short)( e1 & 7 ); - if ( ras.gray_min_x > c1 ) ras.gray_min_x = c1; - if ( ras.gray_max_x < c1 ) ras.gray_max_x = c1; + if ( ras.gray_min_x > c1 ) + ras.gray_min_x = c1; + if ( ras.gray_max_x < c1 ) + ras.gray_max_x = c1; ras.bTarget[ras.traceOfs + c1] |= (char)( 0x80 >> f1 ); } @@ -2365,15 +2392,26 @@ static const char count_table[256] = PProfile left, PProfile right ) { - Long e1, e2; + Long e1, e2, pxl; PByte bits; Byte f1; /* During the horizontal sweep, we only take care of drop-outs */ - e1 = CEILING( x1 ); - e2 = FLOOR ( x2 ); + /* e1 + <-- pixel center */ + /* | */ + /* x1 ---+--> <-- contour */ + /* | */ + /* | */ + /* x2 <--+--- <-- contour */ + /* | */ + /* | */ + /* e2 + <-- pixel center */ + + e1 = CEILING( x1 ); + e2 = FLOOR ( x2 ); + pxl = e1; if ( e1 > e2 ) { @@ -2381,23 +2419,17 @@ static const char count_table[256] = { switch ( ras.dropOutControl ) { - case 1: - e1 = e2; + case 0: /* simple drop-outs including stubs */ + pxl = e2; break; - case 4: - e1 = CEILING( ( x1 + x2 + 1 ) / 2 ); + case 4: /* smart drop-outs including stubs */ + pxl = FLOOR( ( x1 + x2 + 1 ) / 2 + ras.precision_half ); break; - case 2: - case 5: - - /* Drop-out Control Rule #4 */ - - /* The spec is not very clear regarding rule #4. It */ - /* presents a method that is way too costly to implement */ - /* while the general idea seems to get rid of `stubs'. */ - /* */ + case 1: /* simple drop-outs excluding stubs */ + case 5: /* smart drop-outs excluding stubs */ + /* see Vertical_Sweep_Drop for details */ /* rightmost stub test */ if ( left->next == right && left->height <= 0 ) @@ -2407,32 +2439,32 @@ static const char count_table[256] = if ( right->next == left && left->start == y ) return; - /* check that the rightmost pixel isn't set */ - - e1 = TRUNC( e1 ); + if ( ras.dropOutControl == 1 ) + pxl = e2; + else + pxl = FLOOR( ( x1 + x2 + 1 ) / 2 + ras.precision_half ); + break; - bits = ras.bTarget + ( y >> 3 ); - f1 = (Byte)( 0x80 >> ( y & 7 ) ); + default: /* modes 2, 3, 6, 7 */ + return; /* no drop-out control */ + } - bits -= e1 * ras.target.pitch; - if ( ras.target.pitch > 0 ) - bits += ( ras.target.rows - 1 ) * ras.target.pitch; + /* check that the other pixel isn't set */ + e1 = pxl == e1 ? e2 : e1; - if ( e1 >= 0 && - e1 < ras.target.rows && - *bits & f1 ) - return; + e1 = TRUNC( e1 ); - if ( ras.dropOutControl == 2 ) - e1 = e2; - else - e1 = CEILING( ( x1 + x2 + 1 ) / 2 ); + bits = ras.bTarget + ( y >> 3 ); + f1 = (Byte)( 0x80 >> ( y & 7 ) ); - break; + bits -= e1 * ras.target.pitch; + if ( ras.target.pitch > 0 ) + bits += ( ras.target.rows - 1 ) * ras.target.pitch; - default: - return; /* unsupported mode */ - } + if ( e1 >= 0 && + e1 < ras.target.rows && + *bits & f1 ) + return; } else return; @@ -2441,7 +2473,7 @@ static const char count_table[256] = bits = ras.bTarget + ( y >> 3 ); f1 = (Byte)( 0x80 >> ( y & 7 ) ); - e1 = TRUNC( e1 ); + e1 = TRUNC( pxl ); if ( e1 >= 0 && e1 < ras.target.rows ) { @@ -2526,10 +2558,10 @@ static const char count_table[256] = if ( ras.gray_max_x >= 0 ) { - Long last_pixel = ras.target.width - 1; - Int last_cell = last_pixel >> 2; - Int last_bit = last_pixel & 3; - Bool over = 0; + Long last_pixel = ras.target.width - 1; + Int last_cell = last_pixel >> 2; + Int last_bit = last_pixel & 3; + Bool over = 0; if ( ras.gray_max_x >= last_cell && last_bit != 3 ) @@ -2541,8 +2573,8 @@ static const char count_table[256] = if ( ras.gray_min_x < 0 ) ras.gray_min_x = 0; - bit = ras.bTarget + ras.gray_min_x; - bit2 = bit + ras.gray_width; + bit = ras.bTarget + ras.gray_min_x; + bit2 = bit + ras.gray_width; c1 = ras.gray_max_x - ras.gray_min_x; @@ -2627,6 +2659,7 @@ static const char count_table[256] = /* During the horizontal sweep, we only take care of drop-outs */ + e1 = CEILING( x1 ); e2 = FLOOR ( x2 ); @@ -2636,23 +2669,17 @@ static const char count_table[256] = { switch ( ras.dropOutControl ) { - case 1: + case 0: /* simple drop-outs including stubs */ e1 = e2; break; - case 4: - e1 = CEILING( ( x1 + x2 + 1 ) / 2 ); + case 4: /* smart drop-outs including stubs */ + e1 = FLOOR( ( x1 + x2 + 1 ) / 2 + ras.precision_half ); break; - case 2: - case 5: - - /* Drop-out Control Rule #4 */ - - /* The spec is not very clear regarding rule #4. It */ - /* presents a method that is way too costly to implement */ - /* while the general idea seems to get rid of `stubs'. */ - /* */ + case 1: /* simple drop-outs excluding stubs */ + case 5: /* smart drop-outs excluding stubs */ + /* see Vertical_Sweep_Drop for details */ /* rightmost stub test */ if ( left->next == right && left->height <= 0 ) @@ -2662,15 +2689,15 @@ static const char count_table[256] = if ( right->next == left && left->start == y ) return; - if ( ras.dropOutControl == 2 ) + if ( ras.dropOutControl == 1 ) e1 = e2; else - e1 = CEILING( ( x1 + x2 + 1 ) / 2 ); + e1 = FLOOR( ( x1 + x2 + 1 ) / 2 + ras.precision_half ); break; - default: - return; /* unsupported mode */ + default: /* modes 2, 3, 6, 7 */ + return; /* no drop-out control */ } } else @@ -2722,7 +2749,7 @@ static const char count_table[256] = TProfileList draw_left, draw_right; - /* Init empty linked lists */ + /* initialize empty linked lists */ Init_Linked( &waiting ); @@ -2742,8 +2769,10 @@ static const char count_table[256] = bottom = (Short)P->start; top = (Short)( P->start + P->height - 1 ); - if ( min_Y > bottom ) min_Y = bottom; - if ( max_Y < top ) max_Y = top; + if ( min_Y > bottom ) + min_Y = bottom; + if ( max_Y < top ) + max_Y = top; P->X = 0; InsNew( &waiting, P ); @@ -2751,18 +2780,18 @@ static const char count_table[256] = P = Q; } - /* Check the Y-turns */ + /* check the Y-turns */ if ( ras.numTurns == 0 ) { ras.error = Raster_Err_Invalid; return FAILURE; } - /* Now inits the sweep */ + /* now initialize the sweep */ ras.Proc_Sweep_Init( RAS_VARS &min_Y, &max_Y ); - /* Then compute the distance of each profile from min_Y */ + /* then compute the distance of each profile from min_Y */ P = waiting; @@ -2772,7 +2801,7 @@ static const char count_table[256] = P = P->link; } - /* Let's go */ + /* let's go */ y = min_Y; y_height = 0; @@ -2783,7 +2812,7 @@ static const char count_table[256] = while ( ras.numTurns > 0 ) { - /* look in the waiting list for new activations */ + /* check waiting list for new activations */ P = waiting; @@ -2810,7 +2839,7 @@ static const char count_table[256] = P = Q; } - /* Sort the drawing lists */ + /* sort the drawing lists */ Sort( &draw_left ); Sort( &draw_right ); @@ -2820,7 +2849,7 @@ static const char count_table[256] = while ( y < y_change ) { - /* Let's trace */ + /* let's trace */ dropouts = 0; @@ -2839,22 +2868,25 @@ static const char count_table[256] = x2 = xs; } - if ( x2 - x1 <= ras.precision ) - { - e1 = FLOOR( x1 ); - e2 = CEILING( x2 ); + e1 = FLOOR( x1 ); + e2 = CEILING( x2 ); - if ( ras.dropOutControl != 0 && - ( e1 > e2 || e2 == e1 + ras.precision ) ) + if ( x2 - x1 <= ras.precision && + e1 != x1 && e2 != x2 ) + { + if ( e1 > e2 || e2 == e1 + ras.precision ) { - /* a drop out was detected */ + if ( ras.dropOutControl != 2 ) + { + /* a drop-out was detected */ - P_Left ->X = x1; - P_Right->X = x2; + P_Left ->X = x1; + P_Right->X = x2; - /* mark profile for drop-out processing */ - P_Left->countL = 1; - dropouts++; + /* mark profile for drop-out processing */ + P_Left->countL = 1; + dropouts++; + } goto Skip_To_Next; } @@ -2868,9 +2900,9 @@ static const char count_table[256] = P_Right = P_Right->link; } - /* now perform the dropouts _after_ the span drawing -- */ - /* drop-outs processing has been moved out of the loop */ - /* for performance tuning */ + /* handle drop-outs _after_ the span drawing -- */ + /* drop-out processing has been moved out of the loop */ + /* for performance tuning */ if ( dropouts > 0 ) goto Scan_DropOuts; @@ -2887,7 +2919,7 @@ static const char count_table[256] = } } - /* Now finalize the profiles that needs it */ + /* now finalize the profiles that need it */ P = draw_left; while ( P ) @@ -2908,7 +2940,7 @@ static const char count_table[256] = } } - /* for gray-scaling, flushes the bitmap scanline cache */ + /* for gray-scaling, flush the bitmap scanline cache */ while ( y <= max_Y ) { ras.Proc_Sweep_Step( RAS_VAR ); @@ -2951,7 +2983,7 @@ static const char count_table[256] = /* Render_Single_Pass */ /* */ /* <Description> */ - /* Performs one sweep with sub-banding. */ + /* Perform one sweep with sub-banding. */ /* */ /* <Input> */ /* flipped :: If set, flip the direction of the outline. */ @@ -3026,7 +3058,7 @@ static const char count_table[256] = /* Render_Glyph */ /* */ /* <Description> */ - /* Renders a glyph in a bitmap. Sub-banding if needed. */ + /* Render a glyph in a bitmap. Sub-banding if needed. */ /* */ /* <Return> */ /* FreeType error code. 0 means success. */ @@ -3039,13 +3071,23 @@ static const char count_table[256] = Set_High_Precision( RAS_VARS ras.outline.flags & FT_OUTLINE_HIGH_PRECISION ); - ras.scale_shift = ras.precision_shift; - /* Drop-out mode 2 is hard-coded since this is the only mode used */ - /* on Windows platforms. Using other modes, as specified by the */ - /* font, results in misplaced pixels. */ - ras.dropOutControl = 2; - ras.second_pass = (FT_Byte)( !( ras.outline.flags & - FT_OUTLINE_SINGLE_PASS ) ); + ras.scale_shift = ras.precision_shift; + + if ( ras.outline.flags & FT_OUTLINE_IGNORE_DROPOUTS ) + ras.dropOutControl = 2; + else + { + if ( ras.outline.flags & FT_OUTLINE_SMART_DROPOUTS ) + ras.dropOutControl = 4; + else + ras.dropOutControl = 0; + + if ( !( ras.outline.flags & FT_OUTLINE_INCLUDE_STUBS ) ) + ras.dropOutControl += 1; + } + + ras.second_pass = (FT_Byte)( !( ras.outline.flags & + FT_OUTLINE_SINGLE_PASS ) ); /* Vertical Sweep */ ras.Proc_Sweep_Init = Vertical_Sweep_Init; @@ -3064,7 +3106,7 @@ static const char count_table[256] = return error; /* Horizontal Sweep */ - if ( ras.second_pass && ras.dropOutControl != 0 ) + if ( ras.second_pass && ras.dropOutControl != 2 ) { ras.Proc_Sweep_Init = Horizontal_Sweep_Init; ras.Proc_Sweep_Span = Horizontal_Sweep_Span; @@ -3085,14 +3127,13 @@ static const char count_table[256] = #ifdef FT_RASTER_OPTION_ANTI_ALIASING - /*************************************************************************/ /* */ /* <Function> */ /* Render_Gray_Glyph */ /* */ /* <Description> */ - /* Renders a glyph with grayscaling. Sub-banding if needed. */ + /* Render a glyph with grayscaling. Sub-banding if needed. */ /* */ /* <Return> */ /* FreeType error code. 0 means success. */ @@ -3106,12 +3147,22 @@ static const char count_table[256] = Set_High_Precision( RAS_VARS ras.outline.flags & FT_OUTLINE_HIGH_PRECISION ); - ras.scale_shift = ras.precision_shift + 1; - /* Drop-out mode 2 is hard-coded since this is the only mode used */ - /* on Windows platforms. Using other modes, as specified by the */ - /* font, results in misplaced pixels. */ - ras.dropOutControl = 2; - ras.second_pass = !( ras.outline.flags & FT_OUTLINE_SINGLE_PASS ); + ras.scale_shift = ras.precision_shift + 1; + + if ( ras.outline.flags & FT_OUTLINE_IGNORE_DROPOUTS ) + ras.dropOutControl = 2; + else + { + if ( ras.outline.flags & FT_OUTLINE_SMART_DROPOUTS ) + ras.dropOutControl = 4; + else + ras.dropOutControl = 0; + + if ( !( ras.outline.flags & FT_OUTLINE_INCLUDE_STUBS ) ) + ras.dropOutControl += 1; + } + + ras.second_pass = !( ras.outline.flags & FT_OUTLINE_SINGLE_PASS ); /* Vertical Sweep */ @@ -3139,7 +3190,7 @@ static const char count_table[256] = return error; /* Horizontal Sweep */ - if ( ras.second_pass && ras.dropOutControl != 0 ) + if ( ras.second_pass && ras.dropOutControl != 2 ) { ras.Proc_Sweep_Init = Horizontal_Sweep_Init; ras.Proc_Sweep_Span = Horizontal_Gray_Sweep_Span; @@ -3198,7 +3249,7 @@ static const char count_table[256] = static int - ft_black_new( void* memory, + ft_black_new( void* memory, FT_Raster *araster ) { static TRaster the_raster; @@ -3256,9 +3307,9 @@ static const char count_table[256] = static void - ft_black_reset( PRaster raster, - char* pool_base, - long pool_size ) + ft_black_reset( PRaster raster, + char* pool_base, + long pool_size ) { if ( raster ) { @@ -3283,9 +3334,9 @@ static const char count_table[256] = static void - ft_black_set_mode( PRaster raster, - unsigned long mode, - const char* palette ) + ft_black_set_mode( PRaster raster, + unsigned long mode, + const char* palette ) { #ifdef FT_RASTER_OPTION_ANTI_ALIASING @@ -3351,15 +3402,15 @@ static const char count_table[256] = if ( !target_map->buffer ) return Raster_Err_Invalid; - ras.outline = *outline; - ras.target = *target_map; + ras.outline = *outline; + ras.target = *target_map; - worker->buff = (PLong) raster->buffer; - worker->sizeBuff = worker->buff + - raster->buffer_size / sizeof ( Long ); + worker->buff = (PLong) raster->buffer; + worker->sizeBuff = worker->buff + + raster->buffer_size / sizeof ( Long ); #ifdef FT_RASTER_OPTION_ANTI_ALIASING - worker->grays = raster->grays; - worker->gray_width = raster->gray_width; + worker->grays = raster->grays; + worker->gray_width = raster->gray_width; #endif return ( ( params->flags & FT_RASTER_FLAG_AA ) diff --git a/src/3rdparty/freetype/src/raster/module.mk b/src/3rdparty/freetype/src/raster/module.mk index 59c737b..cbff5df 100644 --- a/src/3rdparty/freetype/src/raster/module.mk +++ b/src/3rdparty/freetype/src/raster/module.mk @@ -16,7 +16,7 @@ FTMODULE_H_COMMANDS += RASTER_MODULE define RASTER_MODULE -$(OPEN_DRIVER)ft_raster1_renderer_class$(CLOSE_DRIVER) +$(OPEN_DRIVER) FT_Renderer_Class, ft_raster1_renderer_class $(CLOSE_DRIVER) $(ECHO_DRIVER)raster $(ECHO_DRIVER_DESC)monochrome bitmap renderer$(ECHO_DRIVER_DONE) endef diff --git a/src/3rdparty/freetype/src/raster/rules.mk b/src/3rdparty/freetype/src/raster/rules.mk index 0dc8782..43a9af2 100644 --- a/src/3rdparty/freetype/src/raster/rules.mk +++ b/src/3rdparty/freetype/src/raster/rules.mk @@ -3,7 +3,7 @@ # -# Copyright 1996-2000, 2001, 2003 by +# Copyright 1996-2000, 2001, 2003, 2008 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, @@ -31,6 +31,7 @@ RASTER_DRV_SRC := $(RASTER_DIR)/ftraster.c \ # raster driver headers # RASTER_DRV_H := $(RASTER_DRV_SRC:%.c=%.h) \ + $(RASTER_DIR)/ftmisc.h \ $(RASTER_DIR)/rasterrs.h diff --git a/src/3rdparty/freetype/src/sfnt/Jamfile b/src/3rdparty/freetype/src/sfnt/Jamfile index 6b8a401..ad467be 100644 --- a/src/3rdparty/freetype/src/sfnt/Jamfile +++ b/src/3rdparty/freetype/src/sfnt/Jamfile @@ -16,7 +16,7 @@ SubDir FT2_TOP $(FT2_SRC_DIR) sfnt ; if $(FT2_MULTI) { - _sources = sfobjs sfdriver ttcmap ttpost ttload ttsbit ttkern ttbdf ; + _sources = sfobjs sfdriver ttcmap ttmtx ttpost ttload ttsbit ttkern ttbdf ; } else { diff --git a/src/3rdparty/freetype/src/sfnt/module.mk b/src/3rdparty/freetype/src/sfnt/module.mk index d339138..95fd6a3 100644 --- a/src/3rdparty/freetype/src/sfnt/module.mk +++ b/src/3rdparty/freetype/src/sfnt/module.mk @@ -16,7 +16,7 @@ FTMODULE_H_COMMANDS += SFNT_MODULE define SFNT_MODULE -$(OPEN_DRIVER)sfnt_module_class$(CLOSE_DRIVER) +$(OPEN_DRIVER) FT_Module_Class, sfnt_module_class $(CLOSE_DRIVER) $(ECHO_DRIVER)sfnt $(ECHO_DRIVER_DESC)helper module for TrueType & OpenType formats$(ECHO_DRIVER_DONE) endef diff --git a/src/3rdparty/freetype/src/sfnt/rules.mk b/src/3rdparty/freetype/src/sfnt/rules.mk index ff7840e..abda74f 100644 --- a/src/3rdparty/freetype/src/sfnt/rules.mk +++ b/src/3rdparty/freetype/src/sfnt/rules.mk @@ -3,7 +3,7 @@ # -# Copyright 1996-2000, 2002, 2003, 2004, 2005, 2006, 2007 by +# Copyright 1996-2000, 2002, 2003, 2004, 2005, 2006, 2007, 2009 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, @@ -37,8 +37,11 @@ SFNT_DRV_SRC := $(SFNT_DIR)/ttload.c \ # SFNT driver headers # -SFNT_DRV_H := $(SFNT_DRV_SRC:%c=%h) \ - $(SFNT_DIR)/sferrors.h +# Note that ttsbit0.c gets #included by ttsbit.c. +# +SFNT_DRV_H := $(SFNT_DRV_SRC:%c=%h) \ + $(SFNT_DIR)/sferrors.h \ + $(SFNT_DIR)/ttsbit0.c # SFNT driver object(s) diff --git a/src/3rdparty/freetype/src/sfnt/sfdriver.c b/src/3rdparty/freetype/src/sfnt/sfdriver.c index 5ba22a6..142ef76 100644 --- a/src/3rdparty/freetype/src/sfnt/sfdriver.c +++ b/src/3rdparty/freetype/src/sfnt/sfdriver.c @@ -4,7 +4,7 @@ /* */ /* High-level SFNT driver interface (body). */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007 by */ +/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -151,10 +151,35 @@ } + static FT_UInt + sfnt_get_name_index( TT_Face face, + FT_String* glyph_name ) + { + FT_Face root = &face->root; + FT_Long i; + + + for ( i = 0; i < root->num_glyphs; i++ ) + { + FT_String* gname; + FT_Error error = tt_face_get_ps_name( face, i, &gname ); + + + if ( error ) + continue; + + if ( !ft_strcmp( glyph_name, gname ) ) + return (FT_UInt)i; + } + + return 0; + } + + static const FT_Service_GlyphDictRec sfnt_service_glyph_dict = { (FT_GlyphDict_GetNameFunc) sfnt_get_glyph_name, - (FT_GlyphDict_NameIndexFunc)NULL + (FT_GlyphDict_NameIndexFunc)sfnt_get_name_index }; #endif /* TT_CONFIG_OPTION_POSTSCRIPT_NAMES */ diff --git a/src/3rdparty/freetype/src/sfnt/sfobjs.c b/src/3rdparty/freetype/src/sfnt/sfobjs.c index c25b87d..c826b92 100644 --- a/src/3rdparty/freetype/src/sfnt/sfobjs.c +++ b/src/3rdparty/freetype/src/sfnt/sfobjs.c @@ -123,14 +123,20 @@ /* */ /* nameid :: The name id of the name record to return. */ /* */ + /* <InOut> */ + /* name :: The address of a string pointer. NULL if no name is */ + /* present. */ + /* */ /* <Return> */ - /* Character string. NULL if no name is present. */ + /* FreeType error code. 0 means success. */ /* */ - static FT_String* - tt_face_get_name( TT_Face face, - FT_UShort nameid ) + static FT_Error + tt_face_get_name( TT_Face face, + FT_UShort nameid, + FT_String** name ) { FT_Memory memory = face->root.memory; + FT_Error error = SFNT_Err_Ok; FT_String* result = NULL; FT_UShort n; TT_NameEntryRec* rec; @@ -145,6 +151,8 @@ TT_NameEntry_ConvertFunc convert; + FT_ASSERT( name ); + rec = face->name_table.names; for ( n = 0; n < face->num_names; n++, rec++ ) { @@ -256,11 +264,8 @@ { if ( rec->string == NULL ) { - FT_Error error = SFNT_Err_Ok; FT_Stream stream = face->name_table.stream; - FT_UNUSED( error ); - if ( FT_QNEW_ARRAY ( rec->string, rec->stringLength ) || FT_STREAM_SEEK( rec->stringOffset ) || @@ -277,7 +282,8 @@ } Exit: - return result; + *name = result; + return error; } @@ -363,11 +369,12 @@ if ( FT_READ_ULONG( tag ) ) return error; - if ( tag != 0x00010000UL && - tag != TTAG_ttcf && - tag != FT_MAKE_TAG( 'O', 'T', 'T', 'O' ) && - tag != TTAG_true && - tag != 0x00020000UL ) + if ( tag != 0x00010000UL && + tag != TTAG_ttcf && + tag != TTAG_OTTO && + tag != TTAG_true && + tag != TTAG_typ1 && + tag != 0x00020000UL ) return SFNT_Err_Unknown_File_Format; face->ttc_header.tag = TTAG_ttcf; @@ -401,7 +408,7 @@ face->ttc_header.version = 1 << 16; face->ttc_header.count = 1; - if ( FT_NEW( face->ttc_header.offsets) ) + if ( FT_NEW( face->ttc_header.offsets ) ) return error; face->ttc_header.offsets[0] = offset; @@ -451,7 +458,7 @@ face_index = 0; if ( face_index >= face->ttc_header.count ) - return SFNT_Err_Bad_Argument; + return SFNT_Err_Invalid_Argument; if ( FT_STREAM_SEEK( face->ttc_header.offsets[face_index] ) ) return error; @@ -461,7 +468,8 @@ if ( error ) return error; - face->root.num_faces = face->ttc_header.count; + face->root.num_faces = face->ttc_header.count; + face->root.face_index = face_index; return error; } @@ -498,6 +506,13 @@ FT_TRACE3(( "\n" )); \ } while ( 0 ) +#define GET_NAME( id, field ) \ + do { \ + error = tt_face_get_name( face, TT_NAME_ID_##id, field ); \ + if ( error ) \ + goto Exit; \ + } while ( 0 ) + FT_LOCAL_DEF( FT_Error ) sfnt_load_face( FT_Stream stream, @@ -506,7 +521,10 @@ FT_Int num_params, FT_Parameter* params ) { - FT_Error error, psnames_error; + FT_Error error; +#ifdef TT_CONFIG_OPTION_POSTSCRIPT_NAMES + FT_Error psnames_error; +#endif FT_Bool has_outline; FT_Bool is_apple_sbit; @@ -581,7 +599,10 @@ /* don't check for errors */ LOAD_( name ); LOAD_( post ); + +#ifdef TT_CONFIG_OPTION_POSTSCRIPT_NAMES psnames_error = error; +#endif /* do not load the metrics headers and tables if this is an Apple */ /* sbit font file */ @@ -660,19 +681,20 @@ face->os2.version = 0xFFFFU; } - } /* the optional tables */ - /* embedded bitmap support. */ + /* embedded bitmap support */ if ( sfnt->load_eblc ) { LOAD_( eblc ); if ( error ) { - /* return an error if this font file has no outlines */ - if ( error == SFNT_Err_Table_Missing && has_outline ) + /* a font which contains neither bitmaps nor outlines is */ + /* still valid (although rather useless in most cases); */ + /* however, you can find such stripped fonts in PDFs */ + if ( error == SFNT_Err_Table_Missing ) error = SFNT_Err_Ok; else goto Exit; @@ -692,59 +714,38 @@ LOAD_( gasp ); LOAD_( kern ); - error = SFNT_Err_Ok; - face->root.num_glyphs = face->max_profile.numGlyphs; -#if 0 /* Bit 8 of the `fsSelection' field in the `OS/2' table denotes */ /* a WWS-only font face. `WWS' stands for `weight', width', and */ /* `slope', a term used by Microsoft's Windows Presentation */ - /* Foundation (WPF). This flag will be introduced in version */ - /* 1.5 of the OpenType specification (but is already in use). */ + /* Foundation (WPF). This flag has been introduced in version */ + /* 1.5 of the OpenType specification (May 2008). */ if ( face->os2.version != 0xFFFFU && face->os2.fsSelection & 256 ) -#endif { - face->root.family_name = - tt_face_get_name( face, TT_NAME_ID_PREFERRED_FAMILY ); + GET_NAME( PREFERRED_FAMILY, &face->root.family_name ); if ( !face->root.family_name ) - face->root.family_name = - tt_face_get_name( face, TT_NAME_ID_FONT_FAMILY ); + GET_NAME( FONT_FAMILY, &face->root.family_name ); - face->root.style_name = - tt_face_get_name( face, TT_NAME_ID_PREFERRED_SUBFAMILY ); + GET_NAME( PREFERRED_SUBFAMILY, &face->root.style_name ); if ( !face->root.style_name ) - face->root.style_name = - tt_face_get_name( face, TT_NAME_ID_FONT_SUBFAMILY ); + GET_NAME( FONT_SUBFAMILY, &face->root.style_name ); } -#if 0 else { - /* Support for `name' table ID 21 (WWS family) and 22 (WWS */ - /* subfamily) is still under consideration by Microsoft and */ - /* not implemented in the current version of WPF. */ - - face->root.family_name = - tt_face_get_name( face, TT_NAME_ID_WWS_FAMILY ); + GET_NAME( WWS_FAMILY, &face->root.family_name ); if ( !face->root.family_name ) - face->root.family_name = - tt_face_get_name( face, TT_NAME_ID_PREFERRED_FAMILY ); + GET_NAME( PREFERRED_FAMILY, &face->root.family_name ); if ( !face->root.family_name ) - face->root.family_name = - tt_face_get_name( face, TT_NAME_ID_FONT_FAMILY ); + GET_NAME( FONT_FAMILY, &face->root.family_name ); - face->root.style_name = - tt_face_get_name( face, TT_NAME_ID_WWS_SUBFAMILY ); + GET_NAME( WWS_SUBFAMILY, &face->root.style_name ); if ( !face->root.style_name ) - face->root.style_name = - tt_face_get_name( face, TT_NAME_ID_PREFERRED_SUBFAMILY ); + GET_NAME( PREFERRED_SUBFAMILY, &face->root.style_name ); if ( !face->root.style_name ) - face->root.style_name = - tt_face_get_name( face, TT_NAME_ID_FONT_SUBFAMILY ); + GET_NAME( FONT_SUBFAMILY, &face->root.style_name ); } -#endif - /* now set up root fields */ { @@ -801,10 +802,9 @@ flags = 0; if ( has_outline == TRUE && face->os2.version != 0xFFFFU ) { - /* We have an OS/2 table; use the `fsSelection' field. Bit 9 */ - /* indicates an oblique font face. This flag will be */ - /* introduced in version 1.5 of the OpenType specification (but */ - /* is already in use). */ + /* We have an OS/2 table; use the `fsSelection' field. Bit 9 */ + /* indicates an oblique font face. This flag has been */ + /* introduced in version 1.5 of the OpenType specification. */ if ( face->os2.fsSelection & 512 ) /* bit 9 */ flags |= FT_STYLE_FLAG_ITALIC; @@ -817,6 +817,7 @@ else { /* this is an old Mac font, use the header field */ + if ( face->header.Mac_Style & 1 ) flags |= FT_STYLE_FLAG_BOLD; @@ -861,12 +862,78 @@ } } +#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS + + /* + * Now allocate the root array of FT_Bitmap_Size records and + * populate them. Unfortunately, it isn't possible to indicate bit + * depths in the FT_Bitmap_Size record. This is a design error. + */ + { + FT_UInt i, count; + + +#ifndef FT_CONFIG_OPTION_OLD_INTERNALS + count = face->sbit_num_strikes; +#else + count = (FT_UInt)face->num_sbit_strikes; +#endif + + if ( count > 0 ) + { + FT_Memory memory = face->root.stream->memory; + FT_UShort em_size = face->header.Units_Per_EM; + FT_Short avgwidth = face->os2.xAvgCharWidth; + FT_Size_Metrics metrics; + + + if ( em_size == 0 || face->os2.version == 0xFFFFU ) + { + avgwidth = 0; + em_size = 1; + } + + if ( FT_NEW_ARRAY( root->available_sizes, count ) ) + goto Exit; + + for ( i = 0; i < count; i++ ) + { + FT_Bitmap_Size* bsize = root->available_sizes + i; + + + error = sfnt->load_strike_metrics( face, i, &metrics ); + if ( error ) + goto Exit; + + bsize->height = (FT_Short)( metrics.height >> 6 ); + bsize->width = (FT_Short)( + ( avgwidth * metrics.x_ppem + em_size / 2 ) / em_size ); + + bsize->x_ppem = metrics.x_ppem << 6; + bsize->y_ppem = metrics.y_ppem << 6; + + /* assume 72dpi */ + bsize->size = metrics.y_ppem << 6; + } + + root->face_flags |= FT_FACE_FLAG_FIXED_SIZES; + root->num_fixed_sizes = (FT_Int)count; + } + } + +#endif /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */ + + /* a font with no bitmaps and no outlines is scalable; */ + /* it has only empty glyphs then */ + if ( !FT_HAS_FIXED_SIZES( root ) && !FT_IS_SCALABLE( root ) ) + root->face_flags |= FT_FACE_FLAG_SCALABLE; + /*********************************************************************/ /* */ /* Set up metrics. */ /* */ - if ( has_outline == TRUE ) + if ( FT_IS_SCALABLE( root ) ) { /* XXX What about if outline header is missing */ /* (e.g. sfnt wrapped bitmap)? */ @@ -919,10 +986,9 @@ /* this computation is based on various versions of Times New Roman */ if ( face->horizontal.Line_Gap == 0 ) root->height = (FT_Short)( ( root->height * 115 + 50 ) / 100 ); -#endif +#endif /* 0 */ #if 0 - /* some fonts have the OS/2 "sTypoAscender", "sTypoDescender" & */ /* "sTypoLineGap" fields set to 0, like ARIALNB.TTF */ if ( face->os2.version != 0xFFFFU && root->ascender ) @@ -937,80 +1003,21 @@ if ( height > root->height ) root->height = height; } - #endif /* 0 */ - root->max_advance_width = face->horizontal.advance_Width_Max; + root->max_advance_width = face->horizontal.advance_Width_Max; + root->max_advance_height = (FT_Short)( face->vertical_info + ? face->vertical.advance_Height_Max + : root->height ); - root->max_advance_height = (FT_Short)( face->vertical_info - ? face->vertical.advance_Height_Max - : root->height ); - - root->underline_position = face->postscript.underlinePosition; + /* See http://www.microsoft.com/OpenType/OTSpec/post.htm -- */ + /* Adjust underline position from top edge to centre of */ + /* stroke to convert TrueType meaning to FreeType meaning. */ + root->underline_position = face->postscript.underlinePosition - + face->postscript.underlineThickness / 2; root->underline_thickness = face->postscript.underlineThickness; } -#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS - - /* - * Now allocate the root array of FT_Bitmap_Size records and - * populate them. Unfortunately, it isn't possible to indicate bit - * depths in the FT_Bitmap_Size record. This is a design error. - */ - { - FT_UInt i, count; - - -#if !defined FT_CONFIG_OPTION_OLD_INTERNALS - count = face->sbit_num_strikes; -#else - count = (FT_UInt)face->num_sbit_strikes; -#endif - - if ( count > 0 ) - { - FT_Memory memory = face->root.stream->memory; - FT_UShort em_size = face->header.Units_Per_EM; - FT_Short avgwidth = face->os2.xAvgCharWidth; - FT_Size_Metrics metrics; - - - if ( em_size == 0 || face->os2.version == 0xFFFFU ) - { - avgwidth = 0; - em_size = 1; - } - - if ( FT_NEW_ARRAY( root->available_sizes, count ) ) - goto Exit; - - for ( i = 0; i < count; i++ ) - { - FT_Bitmap_Size* bsize = root->available_sizes + i; - - - error = sfnt->load_strike_metrics( face, i, &metrics ); - if ( error ) - goto Exit; - - bsize->height = (FT_Short)( metrics.height >> 6 ); - bsize->width = (FT_Short)( - ( avgwidth * metrics.x_ppem + em_size / 2 ) / em_size ); - - bsize->x_ppem = metrics.x_ppem << 6; - bsize->y_ppem = metrics.y_ppem << 6; - - /* assume 72dpi */ - bsize->size = metrics.y_ppem << 6; - } - - root->face_flags |= FT_FACE_FLAG_FIXED_SIZES; - root->num_fixed_sizes = (FT_Int)count; - } - } - -#endif /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */ - } Exit: @@ -1022,14 +1029,21 @@ #undef LOAD_ #undef LOADM_ +#undef GET_NAME FT_LOCAL_DEF( void ) sfnt_done_face( TT_Face face ) { - FT_Memory memory = face->root.memory; - SFNT_Service sfnt = (SFNT_Service)face->sfnt; + FT_Memory memory; + SFNT_Service sfnt; + + + if ( !face ) + return; + memory = face->root.memory; + sfnt = (SFNT_Service)face->sfnt; if ( sfnt ) { @@ -1068,7 +1082,7 @@ } /* freeing the horizontal metrics */ -#if !defined FT_CONFIG_OPTION_OLD_INTERNALS +#ifndef FT_CONFIG_OPTION_OLD_INTERNALS { FT_Stream stream = FT_FACE_STREAM( face ); diff --git a/src/3rdparty/freetype/src/sfnt/ttcmap.c b/src/3rdparty/freetype/src/sfnt/ttcmap.c index b70b64c..6830391 100644 --- a/src/3rdparty/freetype/src/sfnt/ttcmap.c +++ b/src/3rdparty/freetype/src/sfnt/ttcmap.c @@ -4,7 +4,7 @@ /* */ /* TrueType character mapping table (cmap) support (body). */ /* */ -/* Copyright 2002, 2003, 2004, 2005, 2006, 2007 by */ +/* Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -134,7 +134,7 @@ FT_UInt gindex = 0; - table += 6; /* go to glyph ids */ + table += 6; /* go to glyph IDs */ while ( ++charcode < 256 ) { gindex = table[charcode]; @@ -231,7 +231,7 @@ /* language 4 USHORT Mac language code */ /* keys 6 USHORT[256] sub-header keys */ /* subs 518 SUBHEAD[NSUBS] sub-headers array */ - /* glyph_ids 518+NSUB*8 USHORT[] glyph id array */ + /* glyph_ids 518+NSUB*8 USHORT[] glyph ID array */ /* */ /* The `keys' table is used to map charcode high-bytes to sub-headers. */ /* The value of `NSUBS' is the number of sub-headers defined in the */ @@ -260,14 +260,14 @@ /* */ /* * The value of `offset' is read. This is a _byte_ distance from the */ /* location of the `offset' field itself into a slice of the */ - /* `glyph_ids' table. Let's call it `slice' (it's a USHORT[] too). */ + /* `glyph_ids' table. Let's call it `slice' (it is a USHORT[] too). */ /* */ /* * The value `slice[char.lo - first]' is read. If it is 0, there is */ /* no glyph for the charcode. Otherwise, the value of `delta' is */ /* added to it (modulo 65536) to form a new glyph index. */ /* */ /* It is up to the validation routine to check that all offsets fall */ - /* within the glyph ids table (and not within the `subs' table itself or */ + /* within the glyph IDs table (and not within the `subs' table itself or */ /* outside of the CMap). */ /* */ @@ -282,7 +282,7 @@ FT_UInt n, max_subs; FT_Byte* keys; /* keys table */ FT_Byte* subs; /* sub-headers */ - FT_Byte* glyph_ids; /* glyph id array */ + FT_Byte* glyph_ids; /* glyph ID array */ if ( table + length > valid->limit || length < 6 + 512 ) @@ -328,6 +328,10 @@ delta = TT_NEXT_SHORT( p ); offset = TT_NEXT_USHORT( p ); + /* many Dynalab fonts have empty sub-headers */ + if ( code_count == 0 ) + continue; + /* check range within 0..255 */ if ( valid->level >= FT_VALIDATE_PARANOID ) { @@ -342,7 +346,7 @@ if ( ids < glyph_ids || ids + code_count*2 > table + length ) FT_INVALID_OFFSET; - /* check glyph ids */ + /* check glyph IDs */ if ( valid->level >= FT_VALIDATE_TIGHT ) { FT_Byte* limit = p + code_count * 2; @@ -393,7 +397,7 @@ sub = subs; /* jump to first sub-header */ /* check that the sub-header for this byte is 0, which */ - /* indicates that it's really a valid one-byte value */ + /* indicates that it is really a valid one-byte value */ /* Otherwise, return 0 */ /* */ p += char_lo * 2; @@ -601,14 +605,14 @@ /* each segment; can be */ /* zero */ /* */ - /* glyphIds 16+NUM_SEGS*8 USHORT[] array of glyph id */ + /* glyphIds 16+NUM_SEGS*8 USHORT[] array of glyph ID */ /* ranges */ /* */ /* Character codes are modelled by a series of ordered (increasing) */ /* intervals called segments. Each segment has start and end codes, */ /* provided by the `startCount' and `endCount' arrays. Segments must */ - /* not be overlapping and the last segment should always contain the */ - /* `0xFFFF' endCount. */ + /* not overlap, and the last segment should always contain the value */ + /* 0xFFFF for `endCount'. */ /* */ /* The fields `searchRange', `entrySelector' and `rangeShift' are better */ /* ignored (they are traces of over-engineering in the TrueType */ @@ -621,14 +625,14 @@ /* charcode within the segment is obtained by adding the value of */ /* `idDelta' directly to the charcode, modulo 65536. */ /* */ - /* Otherwise, a glyph index is taken from the glyph ids sub-array for */ + /* Otherwise, a glyph index is taken from the glyph IDs sub-array for */ /* the segment, and the value of `idDelta' is added to it. */ /* */ /* */ - /* Finally, note that certain fonts contain invalid charmaps that */ - /* contain end=0xFFFF, start=0xFFFF, delta=0x0001, offset=0xFFFF at the */ - /* of their charmaps (e.g. opens___.ttf which comes with OpenOffice.org) */ - /* we need special code to deal with them correctly... */ + /* Finally, note that a lot of fonts contain an invalid last segment, */ + /* where `start' and `end' are correctly set to 0xFFFF but both `delta' */ + /* and `offset' are incorrect (e.g., `opens___.ttf' which comes with */ + /* OpenOffice.org). We need special code to deal with them correctly. */ /* */ #ifdef TT_CONFIG_CMAP_FORMAT_4 @@ -693,6 +697,23 @@ p += num_ranges * 2; offset = FT_PEEK_USHORT( p ); + /* some fonts have an incorrect last segment; */ + /* we have to catch it */ + if ( range_index >= num_ranges - 1 && + cmap->cur_start == 0xFFFFU && + cmap->cur_end == 0xFFFFU ) + { + TT_Face face = (TT_Face)cmap->cmap.cmap.charmap.face; + FT_Byte* limit = face->cmap_table + face->cmap_size; + + + if ( offset && p + offset + 2 > limit ) + { + cmap->cur_delta = 1; + offset = 0; + } + } + if ( offset != 0xFFFFU ) { cmap->cur_values = offset ? p + offset : NULL; @@ -831,7 +852,7 @@ /* */ if ( valid->level >= FT_VALIDATE_PARANOID ) { - /* check the values of 'searchRange', 'entrySelector', 'rangeShift' */ + /* check the values of `searchRange', `entrySelector', `rangeShift' */ FT_UInt search_range = TT_NEXT_USHORT( p ); FT_UInt entry_selector = TT_NEXT_USHORT( p ); FT_UInt range_shift = TT_NEXT_USHORT( p ); @@ -858,7 +879,7 @@ offsets = deltas + num_segs * 2; glyph_ids = offsets + num_segs * 2; - /* check last segment, its end count must be FFFF */ + /* check last segment; its end count value must be 0xFFFF */ if ( valid->level >= FT_VALIDATE_PARANOID ) { p = ends + ( num_segs - 1 ) * 2; @@ -867,9 +888,9 @@ } { - FT_UInt start, end, offset, n; - FT_UInt last_start = 0, last_end = 0; - FT_Int delta; + FT_UInt start, end, offset, n; + FT_UInt last_start = 0, last_end = 0; + FT_Int delta; FT_Byte* p_start = starts; FT_Byte* p_end = ends; FT_Byte* p_delta = deltas; @@ -887,10 +908,10 @@ if ( start > end ) FT_INVALID_DATA; - /* this test should be performed at default validation level; */ - /* unfortunately, some popular Asian fonts present overlapping */ - /* ranges in their charmaps */ - /* */ + /* this test should be performed at default validation level; */ + /* unfortunately, some popular Asian fonts have overlapping */ + /* ranges in their charmaps */ + /* */ if ( start <= last_end && n > 0 ) { if ( valid->level >= FT_VALIDATE_TIGHT ) @@ -898,7 +919,7 @@ else { /* allow overlapping segments, provided their start points */ - /* and end points, respectively, are in ascending order. */ + /* and end points, respectively, are in ascending order */ /* */ if ( last_start > start || last_end > end ) error |= TT_CMAP_FLAG_UNSORTED; @@ -909,16 +930,27 @@ if ( offset && offset != 0xFFFFU ) { - p += offset; /* start of glyph id array */ + p += offset; /* start of glyph ID array */ - /* check that we point within the glyph ids table only */ + /* check that we point within the glyph IDs table only */ if ( valid->level >= FT_VALIDATE_TIGHT ) { if ( p < glyph_ids || p + ( end - start + 1 ) * 2 > table + length ) FT_INVALID_DATA; } - else + /* Some fonts handle the last segment incorrectly. In */ + /* theory, 0xFFFF might point to an ordinary glyph -- */ + /* a cmap 4 is versatile and could be used for any */ + /* encoding, not only Unicode. However, reality shows */ + /* that far too many fonts are sloppy and incorrectly */ + /* set all fields but `start' and `end' for the last */ + /* segment if it contains only a single character. */ + /* */ + /* We thus omit the test here, delaying it to the */ + /* routines which actually access the cmap. */ + else if ( n != num_segs - 1 || + !( start == 0xFFFFU && end == 0xFFFFU ) ) { if ( p < glyph_ids || p + ( end - start + 1 ) * 2 > valid->limit ) @@ -946,12 +978,12 @@ } else if ( offset == 0xFFFFU ) { - /* Some fonts (erroneously?) use a range offset of 0xFFFF */ + /* some fonts (erroneously?) use a range offset of 0xFFFF */ /* to mean missing glyph in cmap table */ /* */ - if ( valid->level >= FT_VALIDATE_PARANOID || - n != num_segs - 1 || - !( start == 0xFFFFU && end == 0xFFFFU && delta == 0x1U ) ) + if ( valid->level >= FT_VALIDATE_PARANOID || + n != num_segs - 1 || + !( start == 0xFFFFU && end == 0xFFFFU ) ) FT_INVALID_DATA; } @@ -965,9 +997,9 @@ static FT_UInt - tt_cmap4_char_map_linear( TT_CMap cmap, - FT_UInt* pcharcode, - FT_Bool next ) + tt_cmap4_char_map_linear( TT_CMap cmap, + FT_UInt32* pcharcode, + FT_Bool next ) { FT_UInt num_segs2, start, end, offset; FT_Int delta; @@ -1009,6 +1041,22 @@ p += num_segs2; offset = TT_PEEK_USHORT( p ); + /* some fonts have an incorrect last segment; */ + /* we have to catch it */ + if ( i >= num_segs - 1 && + start == 0xFFFFU && end == 0xFFFFU ) + { + TT_Face face = (TT_Face)cmap->cmap.charmap.face; + FT_Byte* limit = face->cmap_table + face->cmap_size; + + + if ( offset && p + offset + 2 > limit ) + { + delta = 1; + offset = 0; + } + } + if ( offset == 0xFFFFU ) continue; @@ -1038,9 +1086,9 @@ static FT_UInt - tt_cmap4_char_map_binary( TT_CMap cmap, - FT_UInt* pcharcode, - FT_Bool next ) + tt_cmap4_char_map_binary( TT_CMap cmap, + FT_UInt32* pcharcode, + FT_Bool next ) { FT_UInt num_segs2, start, end, offset; FT_Int delta; @@ -1088,6 +1136,22 @@ p += num_segs2; offset = TT_PEEK_USHORT( p ); + /* some fonts have an incorrect last segment; */ + /* we have to catch it */ + if ( mid >= num_segs - 1 && + start == 0xFFFFU && end == 0xFFFFU ) + { + TT_Face face = (TT_Face)cmap->cmap.charmap.face; + FT_Byte* limit = face->cmap_table + face->cmap_size; + + + if ( offset && p + offset + 2 > limit ) + { + delta = 1; + offset = 0; + } + } + /* search the first segment containing `charcode' */ if ( cmap->flags & TT_CMAP_FLAG_OVERLAPPING ) { @@ -1359,7 +1423,7 @@ /* */ /* first 6 USHORT first segment code */ /* count 8 USHORT segment size in chars */ - /* glyphIds 10 USHORT[count] glyph ids */ + /* glyphIds 10 USHORT[count] glyph IDs */ /* */ /* A very simplified segment mapping. */ /* */ @@ -1506,7 +1570,7 @@ /***** *****/ /***** FORMAT 8 *****/ /***** *****/ - /***** It's hard to completely understand what the OpenType spec *****/ + /***** It is hard to completely understand what the OpenType spec *****/ /***** says about this format, but here is my conclusion. *****/ /***** *****/ /***** The purpose of this format is to easily map UTF-16 text to *****/ @@ -1521,7 +1585,7 @@ /***** `char_hi' and `char_lo' must be in the Surrogates Area. *****/ /***** Area. *****/ /***** *****/ - /***** The 'is32' table embedded in the charmap indicates whether a *****/ + /***** The `is32' table embedded in the charmap indicates whether a *****/ /***** given 16-bit value is in the surrogates area or not. *****/ /***** *****/ /***** So, for any given `char_code', we can assert the following: *****/ @@ -1548,11 +1612,11 @@ /* is32 12 BYTE[8192] 32-bitness bitmap */ /* count 8204 ULONG number of groups */ /* */ - /* This header is followed by 'count' groups of the following format: */ + /* This header is followed by `count' groups of the following format: */ /* */ /* start 0 ULONG first charcode */ /* end 4 ULONG last charcode */ - /* startId 8 ULONG start glyph id for the group */ + /* startId 8 ULONG start glyph ID for the group */ /* */ #ifdef TT_CONFIG_CMAP_FORMAT_8 @@ -1934,7 +1998,7 @@ /* */ /* start 0 ULONG first charcode */ /* end 4 ULONG last charcode */ - /* startId 8 ULONG start glyph id for the group */ + /* startId 8 ULONG start glyph ID for the group */ /* */ #ifdef TT_CONFIG_CMAP_FORMAT_12 @@ -2727,7 +2791,7 @@ FT_UInt tot = 0; - p += 3; /* point to the first 'cnt' field */ + p += 3; /* point to the first `cnt' field */ for ( ; numRanges > 0; numRanges-- ) { tot += 1 + p[0]; @@ -2774,7 +2838,7 @@ } - static FT_UInt* + static FT_UInt32* tt_cmap14_get_nondef_chars( TT_CMap cmap, FT_Byte *p, FT_Memory memory ) @@ -2962,7 +3026,7 @@ (TT_CMap_Info_GetFunc)tt_cmap14_get_info }; -#endif /* TT_CONFIG_CMAP_FORMAT_0 */ +#endif /* TT_CONFIG_CMAP_FORMAT_14 */ static const TT_CMap_Class tt_cmap_classes[] = diff --git a/src/3rdparty/freetype/src/sfnt/ttkern.c b/src/3rdparty/freetype/src/sfnt/ttkern.c index 28e52c3..67d5115 100644 --- a/src/3rdparty/freetype/src/sfnt/ttkern.c +++ b/src/3rdparty/freetype/src/sfnt/ttkern.c @@ -5,7 +5,7 @@ /* Load the basic TrueType kerning table. This doesn't handle */ /* kerning data within the GPOS table at the moment. */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007 by */ +/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -103,6 +103,9 @@ p_next += length; + if ( p_next > p_limit ) /* handle broken table */ + p_next = p_limit; + /* only use horizontal kerning tables */ if ( ( coverage & ~8 ) != 0x0001 || p + 8 > p_limit ) @@ -111,8 +114,8 @@ num_pairs = FT_NEXT_USHORT( p ); p += 6; - if ( p + 6 * num_pairs > p_limit ) - goto NextTable; + if ( ( p_next - p ) / 6 < (int)num_pairs ) /* handle broken count */ + num_pairs = (FT_UInt)( ( p_next - p ) / 6 ); avail |= mask; @@ -181,18 +184,22 @@ FT_Int result = 0; FT_UInt count, mask = 1; FT_Byte* p = face->kern_table; + FT_Byte* p_limit = p + face->kern_table_size; p += 4; mask = 0x0001; - for ( count = face->num_kern_tables; count > 0; count--, mask <<= 1 ) + for ( count = face->num_kern_tables; + count > 0 && p + 6 <= p_limit; + count--, mask <<= 1 ) { FT_Byte* base = p; FT_Byte* next = base; FT_UInt version = FT_NEXT_USHORT( p ); FT_UInt length = FT_NEXT_USHORT( p ); FT_UInt coverage = FT_NEXT_USHORT( p ); + FT_UInt num_pairs; FT_Int value = 0; FT_UNUSED( version ); @@ -200,21 +207,27 @@ next = base + length; + if ( next > p_limit ) /* handle broken table */ + next = p_limit; + if ( ( face->kern_avail_bits & mask ) == 0 ) goto NextTable; if ( p + 8 > next ) goto NextTable; + num_pairs = FT_NEXT_USHORT( p ); + p += 6; + + if ( ( next - p ) / 6 < (int)num_pairs ) /* handle broken count */ + num_pairs = (FT_UInt)( ( next - p ) / 6 ); + switch ( coverage >> 8 ) { case 0: { - FT_UInt num_pairs = FT_NEXT_USHORT( p ); - FT_ULong key0 = TT_KERN_INDEX( left_glyph, right_glyph ); - + FT_ULong key0 = TT_KERN_INDEX( left_glyph, right_glyph ); - p += 6; if ( face->kern_order_bits & mask ) /* binary search */ { diff --git a/src/3rdparty/freetype/src/sfnt/ttload.c b/src/3rdparty/freetype/src/sfnt/ttload.c index 6b7c342..c45a1ed 100644 --- a/src/3rdparty/freetype/src/sfnt/ttload.c +++ b/src/3rdparty/freetype/src/sfnt/ttload.c @@ -58,6 +58,9 @@ { TT_Table entry; TT_Table limit; +#ifdef FT_DEBUG_LEVEL_TRACE + FT_Bool zero_length = FALSE; +#endif FT_TRACE4(( "tt_face_lookup_table: %08p, `%c%c%c%c' -- ", @@ -72,17 +75,28 @@ for ( ; entry < limit; entry++ ) { - /* For compatibility with Windows, we consider 0-length */ - /* tables the same as missing tables. */ - if ( entry->Tag == tag && entry->Length != 0 ) - { - FT_TRACE4(( "found table.\n" )); - return entry; + /* For compatibility with Windows, we consider */ + /* zero-length tables the same as missing tables. */ + if ( entry->Tag == tag ) { + if ( entry->Length != 0 ) + { + FT_TRACE4(( "found table.\n" )); + return entry; + } +#ifdef FT_DEBUG_LEVEL_TRACE + zero_length = TRUE; +#endif } } - FT_TRACE4(( "could not find table!\n" )); - return 0; +#ifdef FT_DEBUG_LEVEL_TRACE + if ( zero_length ) + FT_TRACE4(( "ignoring empty table!\n" )); + else + FT_TRACE4(( "could not find table!\n" )); +#endif + + return NULL; } @@ -124,7 +138,7 @@ *length = table->Length; if ( FT_STREAM_SEEK( table->Offset ) ) - goto Exit; + goto Exit; } else error = SFNT_Err_Table_Missing; @@ -134,27 +148,30 @@ } - /* Here, we */ - /* */ - /* - check that `num_tables' is valid */ - /* - look for a `head' table, check its size, and parse it to check */ - /* whether its `magic' field is correctly set */ - /* */ - /* When checking directory entries, ignore the tables `glyx' and `locx' */ - /* which are hacked-out versions of `glyf' and `loca' in some PostScript */ - /* Type 42 fonts, and which are generally invalid. */ - /* */ + /* Here, we */ + /* */ + /* - check that `num_tables' is valid (and adjust it if necessary) */ + /* */ + /* - look for a `head' table, check its size, and parse it to check */ + /* whether its `magic' field is correctly set */ + /* */ + /* - errors (except errors returned by stream handling) */ + /* */ + /* SFNT_Err_Unknown_File_Format: */ + /* no table is defined in directory, it is not sfnt-wrapped */ + /* data */ + /* SFNT_Err_Table_Missing: */ + /* table directory is valid, but essential tables */ + /* (head/bhed/SING) are missing */ + /* */ static FT_Error check_table_dir( SFNT_Header sfnt, FT_Stream stream ) { - FT_Error error; - FT_UInt nn; - FT_UInt has_head = 0, has_sing = 0, has_meta = 0; - FT_ULong offset = sfnt->offset + 12; - - const FT_ULong glyx_tag = FT_MAKE_TAG( 'g', 'l', 'y', 'x' ); - const FT_ULong locx_tag = FT_MAKE_TAG( 'l', 'o', 'c', 'x' ); + FT_Error error; + FT_UInt nn, valid_entries = 0; + FT_UInt has_head = 0, has_sing = 0, has_meta = 0; + FT_ULong offset = sfnt->offset + 12; static const FT_Frame_Field table_dir_entry_fields[] = { @@ -170,12 +187,8 @@ }; - if ( sfnt->num_tables == 0 || - offset + sfnt->num_tables * 16 > stream->size ) - return SFNT_Err_Unknown_File_Format; - if ( FT_STREAM_SEEK( offset ) ) - return error; + goto Exit; for ( nn = 0; nn < sfnt->num_tables; nn++ ) { @@ -183,12 +196,23 @@ if ( FT_STREAM_READ_FIELDS( table_dir_entry_fields, &table ) ) - return error; + { + nn--; + FT_TRACE2(( "check_table_dir:" + " can read only %d table%s in font (instead of %d)\n", + nn, nn == 1 ? "" : "s", sfnt->num_tables )); + sfnt->num_tables = nn; + break; + } - if ( table.Offset + table.Length > stream->size && - table.Tag != glyx_tag && - table.Tag != locx_tag ) - return SFNT_Err_Unknown_File_Format; + /* we ignore invalid tables */ + if ( table.Offset + table.Length > stream->size ) + { + FT_TRACE2(( "check_table_dir: table entry %d invalid\n", nn )); + continue; + } + else + valid_entries++; if ( table.Tag == TTAG_head || table.Tag == TTAG_bhed ) { @@ -210,17 +234,26 @@ * */ if ( table.Length < 0x36 ) - return SFNT_Err_Unknown_File_Format; + { + FT_TRACE2(( "check_table_dir: `head' table too small\n" )); + error = SFNT_Err_Table_Missing; + goto Exit; + } if ( FT_STREAM_SEEK( table.Offset + 12 ) || FT_READ_ULONG( magic ) ) - return error; + goto Exit; if ( magic != 0x5F0F3CF5UL ) - return SFNT_Err_Unknown_File_Format; + { + FT_TRACE2(( "check_table_dir:" + " no magic number found in `head' table\n")); + error = SFNT_Err_Table_Missing; + goto Exit; + } if ( FT_STREAM_SEEK( offset + ( nn + 1 ) * 16 ) ) - return error; + goto Exit; } else if ( table.Tag == TTAG_SING ) has_sing = 1; @@ -228,11 +261,34 @@ has_meta = 1; } + sfnt->num_tables = valid_entries; + + if ( sfnt->num_tables == 0 ) + { + FT_TRACE2(( "check_table_dir: no tables found\n" )); + error = SFNT_Err_Unknown_File_Format; + goto Exit; + } + /* if `sing' and `meta' tables are present, there is no `head' table */ if ( has_head || ( has_sing && has_meta ) ) - return SFNT_Err_Ok; + { + error = SFNT_Err_Ok; + goto Exit; + } else - return SFNT_Err_Unknown_File_Format; + { + FT_TRACE2(( "check_table_dir:" )); +#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS + FT_TRACE2(( " neither `head', `bhed', nor `sing' table found\n" )); +#else + FT_TRACE2(( " neither `head' nor `sing' table found\n" )); +#endif + error = SFNT_Err_Table_Missing; + } + + Exit: + return error; } @@ -266,7 +322,7 @@ FT_Error error; FT_Memory memory = stream->memory; TT_TableRec* entry; - TT_TableRec* limit; + FT_Int nn; static const FT_Frame_Field offset_table_fields[] = { @@ -290,7 +346,7 @@ if ( FT_READ_ULONG( sfnt.format_tag ) || FT_STREAM_READ_FIELDS( offset_table_fields, &sfnt ) ) - return error; + goto Exit; /* many fonts don't have these fields set correctly */ #if 0 @@ -301,51 +357,58 @@ /* load the table directory */ - FT_TRACE2(( "-- Tables count: %12u\n", sfnt.num_tables )); - FT_TRACE2(( "-- Format version: %08lx\n", sfnt.format_tag )); + FT_TRACE2(( "-- Number of tables: %10u\n", sfnt.num_tables )); + FT_TRACE2(( "-- Format version: 0x%08lx\n", sfnt.format_tag )); /* check first */ error = check_table_dir( &sfnt, stream ); if ( error ) { - FT_TRACE2(( "tt_face_load_font_dir: invalid table directory!\n" )); + FT_TRACE2(( "tt_face_load_font_dir: invalid table directory for TrueType!\n" )); - return error; + goto Exit; } face->num_tables = sfnt.num_tables; face->format_tag = sfnt.format_tag; if ( FT_QNEW_ARRAY( face->dir_tables, face->num_tables ) ) - return error; + goto Exit; if ( FT_STREAM_SEEK( sfnt.offset + 12 ) || FT_FRAME_ENTER( face->num_tables * 16L ) ) - return error; + goto Exit; entry = face->dir_tables; - limit = entry + face->num_tables; - for ( ; entry < limit; entry++ ) + for ( nn = 0; nn < sfnt.num_tables; nn++ ) { entry->Tag = FT_GET_TAG4(); entry->CheckSum = FT_GET_ULONG(); entry->Offset = FT_GET_LONG(); entry->Length = FT_GET_LONG(); - FT_TRACE2(( " %c%c%c%c - %08lx - %08lx\n", - (FT_Char)( entry->Tag >> 24 ), - (FT_Char)( entry->Tag >> 16 ), - (FT_Char)( entry->Tag >> 8 ), - (FT_Char)( entry->Tag ), - entry->Offset, - entry->Length )); + /* ignore invalid tables */ + if ( entry->Offset + entry->Length > stream->size ) + continue; + else + { + FT_TRACE2(( " %c%c%c%c - %08lx - %08lx\n", + (FT_Char)( entry->Tag >> 24 ), + (FT_Char)( entry->Tag >> 16 ), + (FT_Char)( entry->Tag >> 8 ), + (FT_Char)( entry->Tag ), + entry->Offset, + entry->Length )); + entry++; + } } FT_FRAME_EXIT(); FT_TRACE2(( "table directory loaded\n\n" )); + Exit: return error; } diff --git a/src/3rdparty/freetype/src/sfnt/ttmtx.c b/src/3rdparty/freetype/src/sfnt/ttmtx.c index 55f681a..2a7d22c 100644 --- a/src/3rdparty/freetype/src/sfnt/ttmtx.c +++ b/src/3rdparty/freetype/src/sfnt/ttmtx.c @@ -4,7 +4,7 @@ /* */ /* Load the metrics tables common to TTF and OTF fonts (body). */ /* */ -/* Copyright 2006, 2007 by */ +/* Copyright 2006, 2007, 2008 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -60,7 +60,7 @@ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ -#if !defined FT_CONFIG_OPTION_OLD_INTERNALS +#ifndef FT_CONFIG_OPTION_OLD_INTERNALS FT_LOCAL_DEF( FT_Error ) tt_face_load_hmtx( TT_Face face, @@ -97,7 +97,7 @@ return error; } -#else /* !OPTIMIZE_MEMORY || OLD_INTERNALS */ +#else /* !FT_CONFIG_OPTION_OLD_INTERNALS */ FT_LOCAL_DEF( FT_Error ) tt_face_load_hmtx( TT_Face face, @@ -229,7 +229,7 @@ return error; } -#endif /* !OPTIMIZE_MEMORY || OLD_INTERNALS */ +#endif /* !FT_CONFIG_OPTION_OLD_INTERNALS */ /*************************************************************************/ @@ -341,7 +341,7 @@ /* */ /* advance :: The advance width resp. advance height. */ /* */ -#if !defined FT_CONFIG_OPTION_OLD_INTERNALS +#ifndef FT_CONFIG_OPTION_OLD_INTERNALS FT_LOCAL_DEF( FT_Error ) tt_face_get_metrics( TT_Face face, @@ -420,7 +420,7 @@ return SFNT_Err_Ok; } -#else /* OLD_INTERNALS */ +#else /* !FT_CONFIG_OPTION_OLD_INTERNALS */ FT_LOCAL_DEF( FT_Error ) tt_face_get_metrics( TT_Face face, @@ -460,7 +460,7 @@ return SFNT_Err_Ok; } -#endif /* !OPTIMIZE_MEMORY || OLD_INTERNALS */ +#endif /* !FT_CONFIG_OPTION_OLD_INTERNALS */ /* END */ diff --git a/src/3rdparty/freetype/src/sfnt/ttpost.c b/src/3rdparty/freetype/src/sfnt/ttpost.c index 1e61636..ce628e2 100644 --- a/src/3rdparty/freetype/src/sfnt/ttpost.c +++ b/src/3rdparty/freetype/src/sfnt/ttpost.c @@ -5,7 +5,7 @@ /* Postcript name table processing for TrueType and OpenType fonts */ /* (body). */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2006, 2007 by */ +/* Copyright 1996-2001, 2002, 2003, 2006, 2007, 2008 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -62,11 +62,11 @@ /* table of Mac names. Thus, it is possible to build a version of */ /* FreeType without the Type 1 driver & PSNames module. */ -#define MAC_NAME( x ) tt_post_default_names[x] +#define MAC_NAME( x ) ( (FT_String*)tt_post_default_names[x] ) /* the 258 default Mac PS glyph names */ - static const FT_String* tt_post_default_names[258] = + static const FT_String* const tt_post_default_names[258] = { /* 0 */ ".notdef", ".null", "CR", "space", "exclam", @@ -416,13 +416,14 @@ /* tt_face_get_ps_name */ /* */ /* <Description> */ - /* Gets the PostScript glyph name of a glyph. */ + /* Get the PostScript glyph name of a glyph. */ /* */ /* <Input> */ /* face :: A handle to the parent face. */ /* */ /* idx :: The glyph index. */ /* */ + /* <InOut> */ /* PSname :: The address of a string pointer. Will be NULL in case */ /* of error, otherwise it is a pointer to the glyph name. */ /* */ @@ -436,9 +437,9 @@ FT_UInt idx, FT_String** PSname ) { - FT_Error error; - TT_Post_Names names; - FT_Fixed format; + FT_Error error; + TT_Post_Names names; + FT_Fixed format; #ifdef FT_CONFIG_OPTION_POSTSCRIPT_NAMES FT_Service_PsCMaps psnames; diff --git a/src/3rdparty/freetype/src/sfnt/ttsbit.c b/src/3rdparty/freetype/src/sfnt/ttsbit.c index 8261ba5..eadaade 100644 --- a/src/3rdparty/freetype/src/sfnt/ttsbit.c +++ b/src/3rdparty/freetype/src/sfnt/ttsbit.c @@ -4,7 +4,7 @@ /* */ /* TrueType and OpenType embedded bitmap support (body). */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007 by */ +/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -24,11 +24,11 @@ * Alas, the memory-optimized sbit loader can't be used when implementing * the `old internals' hack */ -#if !defined FT_CONFIG_OPTION_OLD_INTERNALS +#ifndef FT_CONFIG_OPTION_OLD_INTERNALS #include "ttsbit0.c" -#else /* !FT_CONFIG_OPTION_OLD_INTERNALS */ +#else /* FT_CONFIG_OPTION_OLD_INTERNALS */ #include <ft2build.h> #include FT_INTERNAL_DEBUG_H @@ -83,7 +83,8 @@ FT_Int line_bits, FT_Bool byte_padded, FT_Int x_offset, - FT_Int y_offset ) + FT_Int y_offset, + FT_Int source_height ) { FT_Byte* line_buff; FT_Int line_incr; @@ -116,7 +117,7 @@ acc = 0; /* clear accumulator */ loaded = 0; /* no bits were loaded */ - for ( height = target->rows; height > 0; height-- ) + for ( height = source_height; height > 0; height-- ) { FT_Byte* cur = line_buff; /* current write cursor */ FT_Int count = line_bits; /* # of bits to extract per line */ @@ -772,7 +773,7 @@ Found: /* return successfully! */ *arange = range; - return 0; + return SFNT_Err_Ok; } } @@ -1230,7 +1231,7 @@ /* the sbit blitter doesn't make a difference between pixmap */ /* depths. */ blit_sbit( map, (FT_Byte*)stream->cursor, line_bits, pad_bytes, - x_offset * pix_bits, y_offset ); + x_offset * pix_bits, y_offset, metrics->height ); FT_FRAME_EXIT(); } @@ -1324,7 +1325,11 @@ range->image_format, metrics, stream ); case 8: /* compound format */ - FT_Stream_Skip( stream, 1L ); + if ( FT_STREAM_SKIP( 1L ) ) + { + error = SFNT_Err_Invalid_Stream_Skip; + goto Exit; + } /* fallthrough */ case 9: @@ -1496,7 +1501,7 @@ return error; } -#endif /* !FT_CONFIG_OPTION_OLD_INTERNALS */ +#endif /* FT_CONFIG_OPTION_OLD_INTERNALS */ /* END */ diff --git a/src/3rdparty/freetype/src/sfnt/ttsbit.h b/src/3rdparty/freetype/src/sfnt/ttsbit.h index c6067c0..7ea2af1 100644 --- a/src/3rdparty/freetype/src/sfnt/ttsbit.h +++ b/src/3rdparty/freetype/src/sfnt/ttsbit.h @@ -4,7 +4,7 @@ /* */ /* TrueType and OpenType embedded bitmap support (specification). */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007 by */ +/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -45,7 +45,7 @@ FT_BEGIN_HEADER FT_ULong strike_index, FT_Size_Metrics* metrics ); -#if defined FT_CONFIG_OPTION_OLD_INTERNALS +#ifdef FT_CONFIG_OPTION_OLD_INTERNALS FT_LOCAL( FT_Error ) tt_find_sbit_image( TT_Face face, FT_UInt glyph_index, diff --git a/src/3rdparty/freetype/src/sfnt/ttsbit0.c b/src/3rdparty/freetype/src/sfnt/ttsbit0.c index 37c7a9b..3ebcbbd 100644 --- a/src/3rdparty/freetype/src/sfnt/ttsbit0.c +++ b/src/3rdparty/freetype/src/sfnt/ttsbit0.c @@ -5,7 +5,7 @@ /* TrueType and OpenType embedded bitmap support (body). */ /* This is a heap-optimized version. */ /* */ -/* Copyright 2005, 2006, 2007, 2008 by */ +/* Copyright 2005, 2006, 2007, 2008, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -39,65 +39,16 @@ #define FT_COMPONENT trace_ttsbit - static const FT_Frame_Field tt_sbit_line_metrics_fields[] = - { -#undef FT_STRUCTURE -#define FT_STRUCTURE TT_SBit_LineMetricsRec - - /* no FT_FRAME_START */ - FT_FRAME_CHAR( ascender ), - FT_FRAME_CHAR( descender ), - FT_FRAME_BYTE( max_width ), - - FT_FRAME_CHAR( caret_slope_numerator ), - FT_FRAME_CHAR( caret_slope_denominator ), - FT_FRAME_CHAR( caret_offset ), - - FT_FRAME_CHAR( min_origin_SB ), - FT_FRAME_CHAR( min_advance_SB ), - FT_FRAME_CHAR( max_before_BL ), - FT_FRAME_CHAR( min_after_BL ), - FT_FRAME_CHAR( pads[0] ), - FT_FRAME_CHAR( pads[1] ), - FT_FRAME_END - }; - - static const FT_Frame_Field tt_strike_start_fields[] = - { -#undef FT_STRUCTURE -#define FT_STRUCTURE TT_SBit_StrikeRec - - /* no FT_FRAME_START */ - FT_FRAME_ULONG( ranges_offset ), - FT_FRAME_SKIP_LONG, - FT_FRAME_ULONG( num_ranges ), - FT_FRAME_ULONG( color_ref ), - FT_FRAME_END - }; - - static const FT_Frame_Field tt_strike_end_fields[] = - { - /* no FT_FRAME_START */ - FT_FRAME_USHORT( start_glyph ), - FT_FRAME_USHORT( end_glyph ), - FT_FRAME_BYTE ( x_ppem ), - FT_FRAME_BYTE ( y_ppem ), - FT_FRAME_BYTE ( bit_depth ), - FT_FRAME_CHAR ( flags ), - FT_FRAME_END - }; - - FT_LOCAL_DEF( FT_Error ) tt_face_load_eblc( TT_Face face, FT_Stream stream ) { - FT_Error error = SFNT_Err_Ok; - FT_Fixed version; - FT_ULong num_strikes, table_size; - FT_Byte* p; - FT_Byte* p_limit; - FT_UInt count; + FT_Error error = SFNT_Err_Ok; + FT_Fixed version; + FT_ULong num_strikes, table_size; + FT_Byte* p; + FT_Byte* p_limit; + FT_UInt count; face->sbit_num_strikes = 0; @@ -111,7 +62,7 @@ if ( table_size < 8 ) { - FT_ERROR(( "%s: table too short!\n", "tt_face_load_sbit_strikes" )); + FT_ERROR(( "tt_face_load_sbit_strikes: table too short!\n" )); error = SFNT_Err_Invalid_File_Format; goto Exit; } @@ -129,8 +80,7 @@ if ( version != 0x00020000UL || num_strikes >= 0x10000UL ) { - FT_ERROR(( "%s: invalid table version!\n", - "tt_face_load_sbit_strikes" )); + FT_ERROR(( "tt_face_load_sbit_strikes: invalid table version!\n" )); error = SFNT_Err_Invalid_File_Format; goto Fail; } @@ -182,7 +132,7 @@ FT_ULong strike_index, FT_Size_Metrics* metrics ) { - FT_Byte* strike; + FT_Byte* strike; if ( strike_index >= (FT_ULong)face->sbit_num_strikes ) @@ -374,14 +324,11 @@ if ( p + 5 > limit ) goto Fail; - if ( !decoder->metrics_loaded ) - { - metrics->height = p[0]; - metrics->width = p[1]; - metrics->horiBearingX = (FT_Char)p[2]; - metrics->horiBearingY = (FT_Char)p[3]; - metrics->horiAdvance = p[4]; - } + metrics->height = p[0]; + metrics->width = p[1]; + metrics->horiBearingX = (FT_Char)p[2]; + metrics->horiBearingY = (FT_Char)p[3]; + metrics->horiAdvance = p[4]; p += 5; if ( big ) @@ -389,19 +336,16 @@ if ( p + 3 > limit ) goto Fail; - if ( !decoder->metrics_loaded ) - { - metrics->vertBearingX = (FT_Char)p[0]; - metrics->vertBearingY = (FT_Char)p[1]; - metrics->vertAdvance = p[2]; - } + metrics->vertBearingX = (FT_Char)p[0]; + metrics->vertBearingY = (FT_Char)p[1]; + metrics->vertAdvance = p[2]; p += 3; } decoder->metrics_loaded = 1; *pp = p; - return 0; + return SFNT_Err_Ok; Fail: return SFNT_Err_Invalid_Argument; @@ -507,7 +451,7 @@ if ( w > 0 ) wval = (FT_UInt)( wval | ( *p++ & ( 0xFF00U >> w ) ) ); - /* all bits read and there are ( x_pos + w ) bits to be written */ + /* all bits read and there are `x_pos + w' bits to be written */ write[0] = (FT_Byte)( write[0] | ( wval >> x_pos ) ); @@ -587,7 +531,12 @@ { w = ( width < 8 - x_pos ) ? width : 8 - x_pos; - if ( nbits < w ) + if ( h == height ) + { + rval |= *p++; + nbits += x_pos; + } + else if ( nbits < w ) { rval |= *p++; nbits += 8 - w; @@ -598,7 +547,8 @@ nbits -= w; } - *write++ |= ( ( rval >> nbits ) & 0xFF ) & ~( 0xFF << w ); + *write++ |= ( ( rval >> nbits ) & 0xFF ) & + ( ~( 0xFF << w ) << ( 8 - w - x_pos ) ); rval <<= 8; w = width - w; @@ -645,6 +595,13 @@ FT_Error error = SFNT_Err_Ok; FT_UInt num_components, nn; + FT_Char horiBearingX = decoder->metrics->horiBearingX; + FT_Char horiBearingY = decoder->metrics->horiBearingY; + FT_Byte horiAdvance = decoder->metrics->horiAdvance; + FT_Char vertBearingX = decoder->metrics->vertBearingX; + FT_Char vertBearingY = decoder->metrics->vertBearingY; + FT_Byte vertAdvance = decoder->metrics->vertAdvance; + if ( p + 2 > limit ) goto Fail; @@ -653,6 +610,13 @@ if ( p + 4 * num_components > limit ) goto Fail; + if ( !decoder->bitmap_allocated ) + { + error = tt_sbit_decoder_alloc_bitmap( decoder ); + if ( error ) + goto Exit; + } + for ( nn = 0; nn < num_components; nn++ ) { FT_UInt gindex = FT_NEXT_USHORT( p ); @@ -667,6 +631,15 @@ break; } + decoder->metrics->horiBearingX = horiBearingX; + decoder->metrics->horiBearingY = horiBearingY; + decoder->metrics->horiAdvance = horiAdvance; + decoder->metrics->vertBearingX = vertBearingX; + decoder->metrics->vertBearingY = vertBearingY; + decoder->metrics->vertAdvance = vertAdvance; + decoder->metrics->width = (FT_UInt)decoder->bitmap->width; + decoder->metrics->height = (FT_UInt)decoder->bitmap->rows; + Exit: return error; diff --git a/src/3rdparty/freetype/src/smooth/ftgrays.c b/src/3rdparty/freetype/src/smooth/ftgrays.c index add1dd2..10fa2ae 100644 --- a/src/3rdparty/freetype/src/smooth/ftgrays.c +++ b/src/3rdparty/freetype/src/smooth/ftgrays.c @@ -4,7 +4,7 @@ /* */ /* A new `perfect' anti-aliasing renderer (body). */ /* */ -/* Copyright 2000-2001, 2002, 2003, 2005, 2006, 2007 by */ +/* Copyright 2000-2001, 2002, 2003, 2005, 2006, 2007, 2008 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -91,11 +91,19 @@ #define FT_COMPONENT trace_smooth +#ifdef _STANDALONE_ -#ifdef _STANDALONE_ + /* define this to dump debugging information */ +/* #define FT_DEBUG_LEVEL_TRACE */ + + +#ifdef FT_DEBUG_LEVEL_TRACE +#include <stdio.h> +#include <stdarg.h> +#endif -#include <string.h> /* for ft_memcpy() */ +#include <string.h> #include <setjmp.h> #include <limits.h> #define FT_UINT_MAX UINT_MAX @@ -118,24 +126,53 @@ #include "ftimage.h" #include "ftgrays.h" + /* This macro is used to indicate that a function parameter is unused. */ /* Its purpose is simply to reduce compiler warnings. Note also that */ /* simply defining it as `(void)x' doesn't avoid warnings with certain */ /* ANSI compilers (e.g. LCC). */ #define FT_UNUSED( x ) (x) = (x) - /* Disable the tracing mechanism for simplicity -- developers can */ - /* activate it easily by redefining these two macros. */ + + /* we only use level 5 & 7 tracing messages; cf. ftdebug.h */ + +#ifdef FT_DEBUG_LEVEL_TRACE + + void + FT_Message( const char* fmt, + ... ) + { + va_list ap; + + + va_start( ap, fmt ); + vfprintf( stderr, fmt, ap ); + va_end( ap ); + } + + /* we don't handle tracing levels in stand-alone mode; */ +#ifndef FT_TRACE5 +#define FT_TRACE5( varformat ) FT_Message varformat +#endif +#ifndef FT_TRACE7 +#define FT_TRACE7( varformat ) FT_Message varformat +#endif #ifndef FT_ERROR -#define FT_ERROR( x ) do ; while ( 0 ) /* nothing */ +#define FT_ERROR( varformat ) FT_Message varformat #endif -#ifndef FT_TRACE -#define FT_TRACE( x ) do ; while ( 0 ) /* nothing */ -#endif +#else /* !FT_DEBUG_LEVEL_TRACE */ + +#define FT_TRACE5( x ) do { } while ( 0 ) /* nothing */ +#define FT_TRACE7( x ) do { } while ( 0 ) /* nothing */ +#define FT_ERROR( x ) do { } while ( 0 ) /* nothing */ + +#endif /* !FT_DEBUG_LEVEL_TRACE */ + #else /* !_STANDALONE_ */ + #include <ft2build.h> #include "ftgrays.h" #include FT_INTERNAL_OBJECTS_H @@ -147,7 +184,7 @@ #define ErrRaster_Invalid_Mode Smooth_Err_Cannot_Render_Glyph #define ErrRaster_Invalid_Outline Smooth_Err_Invalid_Outline #define ErrRaster_Memory_Overflow Smooth_Err_Out_Of_Memory -#define ErrRaster_Invalid_Argument Smooth_Err_Bad_Argument +#define ErrRaster_Invalid_Argument Smooth_Err_Invalid_Argument #endif /* !_STANDALONE_ */ @@ -160,10 +197,6 @@ #define FT_MEM_ZERO( dest, count ) FT_MEM_SET( dest, 0, count ) #endif - /* define this to dump debugging information */ -#define xxxDEBUG_GRAYS - - /* as usual, for the speed hungry :-) */ #ifndef FT_STATIC_RASTER @@ -398,8 +431,8 @@ int x = ras.ex; - if ( x > ras.max_ex ) - x = ras.max_ex; + if ( x > ras.count_ex ) + x = ras.count_ex; pcell = &ras.ycells[ras.ey]; for (;;) @@ -1207,7 +1240,7 @@ x += (TCoord)ras.min_ex; /* FT_Span.x is a 16-bit short, so limit our coordinates appropriately */ - if ( x >= 32768 ) + if ( x >= 32767 ) x = 32767; if ( coverage ) @@ -1229,24 +1262,23 @@ if ( ras.render_span && count > 0 ) ras.render_span( ras.span_y, count, ras.gray_spans, ras.render_span_data ); - /* ras.render_span( span->y, ras.gray_spans, count ); */ -#ifdef DEBUG_GRAYS +#ifdef FT_DEBUG_LEVEL_TRACE - if ( ras.span_y >= 0 ) + if ( count > 0 ) { int n; - fprintf( stderr, "y=%3d ", ras.span_y ); + FT_TRACE7(( "y = %3d ", ras.span_y )); span = ras.gray_spans; for ( n = 0; n < count; n++, span++ ) - fprintf( stderr, "[%d..%d]:%02x ", - span->x, span->x + span->len - 1, span->coverage ); - fprintf( stderr, "\n" ); + FT_TRACE7(( "[%d..%d]:%02x ", + span->x, span->x + span->len - 1, span->coverage )); + FT_TRACE7(( "\n" )); } -#endif /* DEBUG_GRAYS */ +#endif /* FT_DEBUG_LEVEL_TRACE */ ras.num_gray_spans = 0; ras.span_y = y; @@ -1267,9 +1299,11 @@ } -#ifdef DEBUG_GRAYS +#ifdef FT_DEBUG_LEVEL_TRACE - /* to be called while in the debugger */ + /* to be called while in the debugger -- */ + /* this function causes a compiler warning since it is unused otherwise */ + static void gray_dump_cells( RAS_ARG ) { int yindex; @@ -1288,7 +1322,7 @@ } } -#endif /* DEBUG_GRAYS */ +#endif /* FT_DEBUG_LEVEL_TRACE */ static void @@ -1304,6 +1338,8 @@ ras.num_gray_spans = 0; + FT_TRACE7(( "gray_sweep: start\n" )); + for ( yindex = 0; yindex < ras.ycount; yindex++ ) { PCell cell = ras.ycells[yindex]; @@ -1337,6 +1373,8 @@ if ( ras.render_span && ras.num_gray_spans > 0 ) ras.render_span( ras.span_y, ras.num_gray_spans, ras.gray_spans, ras.render_span_data ); + + FT_TRACE7(( "gray_sweep: end\n" )); } @@ -1344,7 +1382,7 @@ /*************************************************************************/ /* */ - /* The following function should only compile in stand_alone mode, */ + /* The following function should only compile in stand-alone mode, */ /* i.e., when building this component without the rest of FreeType. */ /* */ /*************************************************************************/ @@ -1355,18 +1393,19 @@ /* FT_Outline_Decompose */ /* */ /* <Description> */ - /* Walks over an outline's structure to decompose it into individual */ - /* segments and Bezier arcs. This function is also able to emit */ + /* Walk over an outline's structure to decompose it into individual */ + /* segments and Bézier arcs. This function is also able to emit */ /* `move to' and `close to' operations to indicate the start and end */ /* of new contours in the outline. */ /* */ /* <Input> */ /* outline :: A pointer to the source target. */ /* */ - /* func_interface :: A table of `emitters', i.e,. function pointers */ + /* func_interface :: A table of `emitters', i.e., function pointers */ /* called during decomposition to indicate path */ /* operations. */ /* */ + /* <InOut> */ /* user :: A typeless pointer which is passed to each */ /* emitter during the decomposition. It can be */ /* used to store the state during the */ @@ -1375,17 +1414,13 @@ /* <Return> */ /* Error code. 0 means success. */ /* */ - static - int FT_Outline_Decompose( const FT_Outline* outline, - const FT_Outline_Funcs* func_interface, - void* user ) + static int + FT_Outline_Decompose( const FT_Outline* outline, + const FT_Outline_Funcs* func_interface, + void* user ) { #undef SCALED -#if 0 #define SCALED( x ) ( ( (x) << shift ) - delta ) -#else -#define SCALED( x ) (x) -#endif FT_Vector v_last; FT_Vector v_control; @@ -1395,17 +1430,21 @@ FT_Vector* limit; char* tags; + int error; + int n; /* index of contour in outline */ int first; /* index of first point in contour */ - int error; char tag; /* current point's state */ -#if 0 - int shift = func_interface->shift; - TPos delta = func_interface->delta; -#endif + int shift; + TPos delta; + if ( !outline || !func_interface ) + return ErrRaster_Invalid_Argument; + + shift = func_interface->shift; + delta = func_interface->delta; first = 0; for ( n = 0; n < outline->n_contours; n++ ) @@ -1413,22 +1452,25 @@ int last; /* index of last point in contour */ + FT_TRACE5(( "FT_Outline_Decompose: Outline %d\n", n )); + last = outline->contours[n]; + if ( last < 0 ) + goto Invalid_Outline; limit = outline->points + last; - v_start = outline->points[first]; - v_last = outline->points[last]; - + v_start = outline->points[first]; v_start.x = SCALED( v_start.x ); v_start.y = SCALED( v_start.y ); - v_last.x = SCALED( v_last.x ); - v_last.y = SCALED( v_last.y ); + v_last = outline->points[last]; + v_last.x = SCALED( v_last.x ); + v_last.y = SCALED( v_last.y ); v_control = v_start; point = outline->points + first; - tags = outline->tags + first; + tags = outline->tags + first; tag = FT_CURVE_TAG( tags[0] ); /* A contour cannot start with a cubic control point! */ @@ -1459,6 +1501,8 @@ tags--; } + FT_TRACE5(( " move to (%.2f, %.2f)\n", + v_start.x / 64.0, v_start.y / 64.0 )); error = func_interface->move_to( &v_start, user ); if ( error ) goto Exit; @@ -1479,6 +1523,8 @@ vec.x = SCALED( point->x ); vec.y = SCALED( point->y ); + FT_TRACE5(( " line to (%.2f, %.2f)\n", + vec.x / 64.0, vec.y / 64.0 )); error = func_interface->line_to( &vec, user ); if ( error ) goto Exit; @@ -1486,53 +1532,60 @@ } case FT_CURVE_TAG_CONIC: /* consume conic arcs */ - { - v_control.x = SCALED( point->x ); - v_control.y = SCALED( point->y ); - - Do_Conic: - if ( point < limit ) - { - FT_Vector vec; - FT_Vector v_middle; + v_control.x = SCALED( point->x ); + v_control.y = SCALED( point->y ); + Do_Conic: + if ( point < limit ) + { + FT_Vector vec; + FT_Vector v_middle; - point++; - tags++; - tag = FT_CURVE_TAG( tags[0] ); - - vec.x = SCALED( point->x ); - vec.y = SCALED( point->y ); - - if ( tag == FT_CURVE_TAG_ON ) - { - error = func_interface->conic_to( &v_control, &vec, - user ); - if ( error ) - goto Exit; - continue; - } - if ( tag != FT_CURVE_TAG_CONIC ) - goto Invalid_Outline; + point++; + tags++; + tag = FT_CURVE_TAG( tags[0] ); - v_middle.x = ( v_control.x + vec.x ) / 2; - v_middle.y = ( v_control.y + vec.y ) / 2; + vec.x = SCALED( point->x ); + vec.y = SCALED( point->y ); - error = func_interface->conic_to( &v_control, &v_middle, - user ); + if ( tag == FT_CURVE_TAG_ON ) + { + FT_TRACE5(( " conic to (%.2f, %.2f)" + " with control (%.2f, %.2f)\n", + vec.x / 64.0, vec.y / 64.0, + v_control.x / 64.0, v_control.y / 64.0 )); + error = func_interface->conic_to( &v_control, &vec, user ); if ( error ) goto Exit; - - v_control = vec; - goto Do_Conic; + continue; } - error = func_interface->conic_to( &v_control, &v_start, - user ); - goto Close; + if ( tag != FT_CURVE_TAG_CONIC ) + goto Invalid_Outline; + + v_middle.x = ( v_control.x + vec.x ) / 2; + v_middle.y = ( v_control.y + vec.y ) / 2; + + FT_TRACE5(( " conic to (%.2f, %.2f)" + " with control (%.2f, %.2f)\n", + v_middle.x / 64.0, v_middle.y / 64.0, + v_control.x / 64.0, v_control.y / 64.0 )); + error = func_interface->conic_to( &v_control, &v_middle, user ); + if ( error ) + goto Exit; + + v_control = vec; + goto Do_Conic; } + FT_TRACE5(( " conic to (%.2f, %.2f)" + " with control (%.2f, %.2f)\n", + v_start.x / 64.0, v_start.y / 64.0, + v_control.x / 64.0, v_control.y / 64.0 )); + error = func_interface->conic_to( &v_control, &v_start, user ); + goto Close; + default: /* FT_CURVE_TAG_CUBIC */ { FT_Vector vec1, vec2; @@ -1559,12 +1612,22 @@ vec.x = SCALED( point->x ); vec.y = SCALED( point->y ); + FT_TRACE5(( " cubic to (%.2f, %.2f)" + " with controls (%.2f, %.2f) and (%.2f, %.2f)\n", + vec.x / 64.0, vec.y / 64.0, + vec1.x / 64.0, vec1.y / 64.0, + vec2.x / 64.0, vec2.y / 64.0 )); error = func_interface->cubic_to( &vec1, &vec2, &vec, user ); if ( error ) goto Exit; continue; } + FT_TRACE5(( " cubic to (%.2f, %.2f)" + " with controls (%.2f, %.2f) and (%.2f, %.2f)\n", + v_start.x / 64.0, v_start.y / 64.0, + vec1.x / 64.0, vec1.y / 64.0, + vec2.x / 64.0, vec2.y / 64.0 )); error = func_interface->cubic_to( &vec1, &vec2, &v_start, user ); goto Close; } @@ -1572,6 +1635,8 @@ } /* close the contour with a line segment */ + FT_TRACE5(( " line to (%.2f, %.2f)\n", + v_start.x / 64.0, v_start.y / 64.0 )); error = func_interface->line_to( &v_start, user ); Close: @@ -1581,9 +1646,11 @@ first = last + 1; } + FT_TRACE5(( "FT_Outline_Decompose: Done\n", n )); return 0; Exit: + FT_TRACE5(( "FT_Outline_Decompose: Error %d\n", error )); return error; Invalid_Outline: @@ -1616,15 +1683,14 @@ volatile int error = 0; + if ( ft_setjmp( ras.jump_buffer ) == 0 ) { error = FT_Outline_Decompose( &ras.outline, &func_interface, &ras ); gray_record_cell( RAS_VAR ); } else - { error = ErrRaster_Memory_Overflow; - } return error; } @@ -1666,7 +1732,7 @@ ras.cubic_level = 16; { - int level = 0; + int level = 0; if ( ras.count_ex > 24 || ras.count_ey > 24 ) @@ -1678,10 +1744,12 @@ ras.cubic_level <<= level; } - /* setup vertical bands */ + /* set up vertical bands */ num_bands = (int)( ( ras.max_ey - ras.min_ey ) / ras.band_size ); - if ( num_bands == 0 ) num_bands = 1; - if ( num_bands >= 39 ) num_bands = 39; + if ( num_bands == 0 ) + num_bands = 1; + if ( num_bands >= 39 ) + num_bands = 39; ras.band_shoot = 0; @@ -1760,8 +1828,8 @@ /* be some problems. */ if ( middle == bottom ) { -#ifdef DEBUG_GRAYS - fprintf( stderr, "Rotten glyph!\n" ); +#ifdef FT_DEBUG_LEVEL_TRACE + FT_TRACE7(( "gray_convert_glyph: Rotten glyph!\n" )); #endif return 1; } @@ -1813,7 +1881,7 @@ worker = raster->worker; /* if direct mode is not set, we must have a target bitmap */ - if ( ( params->flags & FT_RASTER_FLAG_DIRECT ) == 0 ) + if ( !( params->flags & FT_RASTER_FLAG_DIRECT ) ) { if ( !target_map ) return ErrRaster_Invalid_Argument; @@ -1831,7 +1899,7 @@ return ErrRaster_Invalid_Mode; /* compute clipping box */ - if ( ( params->flags & FT_RASTER_FLAG_DIRECT ) == 0 ) + if ( !( params->flags & FT_RASTER_FLAG_DIRECT ) ) { /* compute clip box from target pixmap */ ras.clip_box.xMin = 0; @@ -1840,9 +1908,7 @@ ras.clip_box.yMax = target_map->rows; } else if ( params->flags & FT_RASTER_FLAG_CLIP ) - { ras.clip_box = params->clip_box; - } else { ras.clip_box.xMin = -32768L; @@ -1859,24 +1925,24 @@ ras.band_size = raster->band_size; ras.num_gray_spans = 0; - if ( target_map ) - ras.target = *target_map; - - ras.render_span = (FT_Raster_Span_Func)gray_render_span; - ras.render_span_data = &ras; - if ( params->flags & FT_RASTER_FLAG_DIRECT ) { ras.render_span = (FT_Raster_Span_Func)params->gray_spans; ras.render_span_data = params->user; } + else + { + ras.target = *target_map; + ras.render_span = (FT_Raster_Span_Func)gray_render_span; + ras.render_span_data = &ras; + } return gray_convert_glyph( worker ); } - /**** RASTER OBJECT CREATION: In standalone mode, we simply use *****/ - /**** a static object. *****/ + /**** RASTER OBJECT CREATION: In stand-alone mode, we simply use *****/ + /**** a static object. *****/ #ifdef _STANDALONE_ @@ -1984,3 +2050,8 @@ /* END */ + + +/* Local Variables: */ +/* coding: utf-8 */ +/* End: */ diff --git a/src/3rdparty/freetype/src/smooth/ftsmooth.c b/src/3rdparty/freetype/src/smooth/ftsmooth.c index 85d04eb..a6db504 100644 --- a/src/3rdparty/freetype/src/smooth/ftsmooth.c +++ b/src/3rdparty/freetype/src/smooth/ftsmooth.c @@ -4,7 +4,7 @@ /* */ /* Anti-aliasing renderer interface (body). */ /* */ -/* Copyright 2000-2001, 2002, 2003, 2004, 2005, 2006 by */ +/* Copyright 2000-2001, 2002, 2003, 2004, 2005, 2006, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -294,13 +294,13 @@ for ( hh = height_org; hh > 0; hh-- ) { - memcpy( write, read, pitch ); + ft_memcpy( write, read, pitch ); write += pitch; - memcpy( write, read, pitch ); + ft_memcpy( write, read, pitch ); write += pitch; - memcpy( write, read, pitch ); + ft_memcpy( write, read, pitch ); write += pitch; read += pitch; } diff --git a/src/3rdparty/freetype/src/smooth/module.mk b/src/3rdparty/freetype/src/smooth/module.mk index 05ad4ba..47f6c04 100644 --- a/src/3rdparty/freetype/src/smooth/module.mk +++ b/src/3rdparty/freetype/src/smooth/module.mk @@ -16,11 +16,11 @@ FTMODULE_H_COMMANDS += SMOOTH_RENDERER define SMOOTH_RENDERER -$(OPEN_DRIVER)ft_smooth_renderer_class$(CLOSE_DRIVER) +$(OPEN_DRIVER) FT_Renderer_Class, ft_smooth_renderer_class $(CLOSE_DRIVER) $(ECHO_DRIVER)smooth $(ECHO_DRIVER_DESC)anti-aliased bitmap renderer$(ECHO_DRIVER_DONE) -$(OPEN_DRIVER)ft_smooth_lcd_renderer_class$(CLOSE_DRIVER) +$(OPEN_DRIVER) FT_Renderer_Class, ft_smooth_lcd_renderer_class $(CLOSE_DRIVER) $(ECHO_DRIVER)smooth $(ECHO_DRIVER_DESC)anti-aliased bitmap renderer for LCDs$(ECHO_DRIVER_DONE) -$(OPEN_DRIVER)ft_smooth_lcdv_renderer_class$(CLOSE_DRIVER) +$(OPEN_DRIVER) FT_Renderer_Class, ft_smooth_lcdv_renderer_class $(CLOSE_DRIVER) $(ECHO_DRIVER)smooth $(ECHO_DRIVER_DESC)anti-aliased bitmap renderer for vertical LCDs$(ECHO_DRIVER_DONE) endef diff --git a/src/3rdparty/freetype/src/tools/docmaker/content.py b/src/3rdparty/freetype/src/tools/docmaker/content.py index c10a4ed..0d76d19 100644 --- a/src/3rdparty/freetype/src/tools/docmaker/content.py +++ b/src/3rdparty/freetype/src/tools/docmaker/content.py @@ -1,4 +1,5 @@ -# Content (c) 2002, 2004, 2006, 2007, 2008 David Turner <david@freetype.org> +# Content (c) 2002, 2004, 2006, 2007, 2008, 2009 +# David Turner <david@freetype.org> # # This file contains routines used to parse the content of documentation # comment blocks and build more structured objects out of them. @@ -153,7 +154,7 @@ class DocField: if mode == mode_code: m = re_code_end.match( l ) if m and len( m.group( 1 ) ) <= margin: - # that's it, we finised the code sequence + # that's it, we finished the code sequence code = DocCode( 0, cur_lines ) self.items.append( code ) margin = -1 @@ -321,7 +322,7 @@ class DocSection: self.blocks[block.name] = block def process( self ): - # lookup one block that contains a valid section description + # look up one block that contains a valid section description for block in self.defs: title = block.get_markup_text( "title" ) if title: @@ -539,9 +540,10 @@ class DocBlock: while start < end and not string.strip( source[end] ): end = end - 1 - source = source[start:end + 1] - - self.code = source + if start == end: + self.code = [] + else: + self.code = source[start:end + 1] def location( self ): return self.source.location() diff --git a/src/3rdparty/freetype/src/tools/docmaker/sources.py b/src/3rdparty/freetype/src/tools/docmaker/sources.py index dcfbf7d..7b68c07 100644 --- a/src/3rdparty/freetype/src/tools/docmaker/sources.py +++ b/src/3rdparty/freetype/src/tools/docmaker/sources.py @@ -1,4 +1,4 @@ -# Sources (c) 2002, 2003, 2004, 2006, 2007, 2008 +# Sources (c) 2002, 2003, 2004, 2006, 2007, 2008, 2009 # David Turner <david@freetype.org> # # @@ -179,14 +179,14 @@ re_source_keywords = re.compile( '''\\b ( typedef | ## ## SOURCE BLOCK CLASS ## -## A SourceProcessor is in charge or reading a C source file +## A SourceProcessor is in charge of reading a C source file ## and decomposing it into a series of different "SourceBlocks". ## each one of these blocks can be made of the following data: ## ## - A documentation comment block that starts with "/**" and ## whose exact format will be discussed later ## -## - normal sources lines, include comments +## - normal sources lines, including comments ## ## the important fields in a text block are the following ones: ## @@ -255,7 +255,7 @@ class SourceBlock: ## ## SOURCE PROCESSOR CLASS ## -## The SourceProcessor is in charge or reading a C source file +## The SourceProcessor is in charge of reading a C source file ## and decomposing it into a series of different "SourceBlock" ## objects. ## @@ -301,7 +301,7 @@ class SourceProcessor: self.process_normal_line( line ) else: if self.format.end.match( line ): - # that's a normal block end, add it to lines and + # that's a normal block end, add it to 'lines' and # create a new block self.lines.append( line ) self.add_block_lines() diff --git a/src/3rdparty/freetype/src/tools/docmaker/tohtml.py b/src/3rdparty/freetype/src/tools/docmaker/tohtml.py index 7e5c608..fffa120 100644 --- a/src/3rdparty/freetype/src/tools/docmaker/tohtml.py +++ b/src/3rdparty/freetype/src/tools/docmaker/tohtml.py @@ -15,9 +15,11 @@ html_header_1 = """\ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>""" +<title>\ +""" -html_header_2= """ API Reference</title> +html_header_2 = """\ + API Reference</title> <style type="text/css"> body { font-family: Verdana, Geneva, Arial, Helvetica, serif; color: #000000; @@ -45,16 +47,44 @@ html_header_2= """ API Reference</title> </style> </head> <body> -<center><h1>""" +""" + +html_header_3 = """ +<table align=center><tr><td><font size=-1>[<a href="\ +""" + +html_header_3i = """ +<table align=center><tr><td width="100%"></td> +<td><font size=-1>[<a href="\ +""" + +html_header_4 = """\ +">Index</a>]</font></td> +<td width="100%"></td> +<td><font size=-1>[<a href="\ +""" + +html_header_5 = """\ +">TOC</a>]</font></td></tr></table> +<center><h1>\ +""" + +html_header_5t = """\ +">Index</a>]</font></td> +<td width="100%"></td></tr></table> +<center><h1>\ +""" -html_header_3=""" API Reference</h1></center> +html_header_6 = """\ + API Reference</h1></center> """ # The HTML footer used by all generated pages. html_footer = """\ </body> -</html>""" +</html>\ +""" # The header and footer used for each section. section_title_header = "<center><h1>" @@ -110,12 +140,23 @@ chapter_footer = '</li></ul></td></tr></table>' index_footer_start = """\ <hr> <table><tr><td width="100%"></td> -<td><font size=-2>[<a href=" +<td><font size=-2>[<a href="\ """ index_footer_end = """\ ">TOC</a>]</font></td></tr></table> """ +# TOC footer. +toc_footer_start = """\ +<hr> +<table><tr><td><font size=-2>[<a href="\ +""" +toc_footer_end = """\ +">Index</a>]</font></td> +<td width="100%"></td> +</tr></table> +""" + # source language keyword coloration/styling keyword_prefix = '<span class="keyword">' @@ -159,22 +200,39 @@ class HtmlFormatter( Formatter ): def __init__( self, processor, project_title, file_prefix ): Formatter.__init__( self, processor ) - global html_header_1, html_header_2, html_header_3, html_footer + global html_header_1, html_header_2, html_header_3 + global html_header_4, html_header_5, html_footer if file_prefix: file_prefix = file_prefix + "-" else: file_prefix = "" - self.headers = processor.headers - self.project_title = project_title - self.file_prefix = file_prefix - self.html_header = html_header_1 + project_title + html_header_2 + \ - project_title + html_header_3 - - self.html_footer = "<center><font size=""-2"">generated on " + \ - time.asctime( time.localtime( time.time() ) ) + \ - "</font></center>" + html_footer + self.headers = processor.headers + self.project_title = project_title + self.file_prefix = file_prefix + self.html_header = html_header_1 + project_title + \ + html_header_2 + \ + html_header_3 + file_prefix + "index.html" + \ + html_header_4 + file_prefix + "toc.html" + \ + html_header_5 + project_title + \ + html_header_6 + + self.html_index_header = html_header_1 + project_title + \ + html_header_2 + \ + html_header_3i + file_prefix + "toc.html" + \ + html_header_5 + project_title + \ + html_header_6 + + self.html_toc_header = html_header_1 + project_title + \ + html_header_2 + \ + html_header_3 + file_prefix + "index.html" + \ + html_header_5t + project_title + \ + html_header_6 + + self.html_footer = "<center><font size=""-2"">generated on " + \ + time.asctime( time.localtime( time.time() ) ) + \ + "</font></center>" + html_footer self.columns = 3 @@ -227,7 +285,7 @@ class HtmlFormatter( Formatter ): return html_quote( word ) def make_html_para( self, words ): - """ convert a paragraph's words into tagged HTML text, handle xrefs """ + """ convert words of a paragraph into tagged HTML text, handle xrefs """ line = "" if words: line = self.make_html_word( words[0] ) @@ -237,6 +295,8 @@ class HtmlFormatter( Formatter ): line = re.sub( r"(^|\W)`(.*?)'(\W|$)", \ r'\1‘\2’\3', \ line ) + # convert tilde into non-breakable space + line = string.replace( line, "~", " " ) return para_header + line + para_footer @@ -338,7 +398,7 @@ class HtmlFormatter( Formatter ): # Formatting the index # def index_enter( self ): - print self.html_header + print self.html_index_header self.index_items = {} def index_name_enter( self, name ): @@ -371,6 +431,8 @@ class HtmlFormatter( Formatter ): self.file_prefix + "toc.html" + \ index_footer_end + print self.html_footer + self.index_items = {} def index_dump( self, index_filename = None ): @@ -383,7 +445,7 @@ class HtmlFormatter( Formatter ): # Formatting the table of content # def toc_enter( self ): - print self.html_header + print self.html_toc_header print "<center><h1>Table of Contents</h1></center>" def toc_chapter_enter( self, chapter ): @@ -402,7 +464,7 @@ class HtmlFormatter( Formatter ): def toc_chapter_exit( self, chapter ): print "</table>" - print chapter_footer + print chapter_footer def toc_index( self, index_filename ): print chapter_header + \ @@ -410,6 +472,10 @@ class HtmlFormatter( Formatter ): chapter_inter + chapter_footer def toc_exit( self ): + print toc_footer_start + \ + self.file_prefix + "index.html" + \ + toc_footer_end + print self.html_footer def toc_dump( self, toc_filename = None, index_filename = None ): diff --git a/src/3rdparty/freetype/src/tools/ftrandom/ftrandom.c b/src/3rdparty/freetype/src/tools/ftrandom/ftrandom.c index fcff27b..4daac0d 100644 --- a/src/3rdparty/freetype/src/tools/ftrandom/ftrandom.c +++ b/src/3rdparty/freetype/src/tools/ftrandom/ftrandom.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2005 by George Williams */ +/* Copyright (C) 2005, 2007, 2008 by George Williams */ /* * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -151,8 +151,8 @@ int load_flags = FT_LOAD_DEFAULT; - if ( check_outlines && - ( face->face_flags & FT_FACE_FLAG_SCALABLE ) ) + if ( check_outlines && + FT_IS_SCALABLE( face ) ) load_flags = FT_LOAD_NO_BITMAP; if ( nohints ) @@ -162,8 +162,8 @@ for ( gid = 0; gid < face->num_glyphs; ++gid ) { - if ( check_outlines && - ( face->face_flags & FT_FACE_FLAG_SCALABLE ) ) + if ( check_outlines && + FT_IS_SCALABLE( face ) ) { if ( !FT_Load_Glyph( face, gid, load_flags ) ) FT_Outline_Decompose( &face->glyph->outline, &outlinefuncs, NULL ); diff --git a/src/3rdparty/freetype/src/tools/glnames.py b/src/3rdparty/freetype/src/tools/glnames.py index 9a6da38..55573b2 100644 --- a/src/3rdparty/freetype/src/tools/glnames.py +++ b/src/3rdparty/freetype/src/tools/glnames.py @@ -6,7 +6,7 @@ # -# Copyright 1996-2000, 2003, 2005, 2007 by +# Copyright 1996-2000, 2003, 2005, 2007, 2008 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, @@ -21,7 +21,7 @@ usage: %s <output-file> This python script generates the glyph names tables defined in the - PSNames module. + `psnames' module. Its single argument is the name of the header file to be created. """ @@ -5011,7 +5011,7 @@ def dump_array( the_array, write, array_name ): """dumps a given encoding""" write( " static const unsigned char " + array_name + - "[" + repr( len( the_array ) ) + "] =\n" ) + "[" + repr( len( the_array ) ) + "L] =\n" ) write( " {\n" ) line = "" @@ -5067,7 +5067,7 @@ def main(): write( "/* */\n" ) write( "/* PostScript glyph names. */\n" ) write( "/* */\n" ) - write( "/* Copyright 2005 by */\n" ) + write( "/* Copyright 2005, 2008 by */\n" ) write( "/* David Turner, Robert Wilhelm, and Werner Lemberg. */\n" ) write( "/* */\n" ) write( "/* This file is part of the FreeType project, and may only be used, */\n" ) @@ -5117,6 +5117,9 @@ def main(): * The lookup function to get the Unicode value for a given string * is defined below the table. */ + +#ifdef FT_CONFIG_OPTION_ADOBE_GLYPH_LIST + """ ) dump_array( dict_array, write, "ft_adobe_glyph_list" ) @@ -5219,6 +5222,8 @@ def main(): return 0; } +#endif /* FT_CONFIG_OPTION_ADOBE_GLYPH_LIST */ + """ ) if 0: # generate unit test, or don't diff --git a/src/3rdparty/freetype/src/truetype/module.mk b/src/3rdparty/freetype/src/truetype/module.mk index 3b05afc..baee81a 100644 --- a/src/3rdparty/freetype/src/truetype/module.mk +++ b/src/3rdparty/freetype/src/truetype/module.mk @@ -16,7 +16,7 @@ FTMODULE_H_COMMANDS += TRUETYPE_DRIVER define TRUETYPE_DRIVER -$(OPEN_DRIVER)tt_driver_class$(CLOSE_DRIVER) +$(OPEN_DRIVER) FT_Driver_ClassRec, tt_driver_class $(CLOSE_DRIVER) $(ECHO_DRIVER)truetype $(ECHO_DRIVER_DESC)Windows/Mac font files with extension *.ttf or *.ttc$(ECHO_DRIVER_DONE) endef diff --git a/src/3rdparty/freetype/src/truetype/ttdriver.c b/src/3rdparty/freetype/src/truetype/ttdriver.c index c2cf452..42feb05 100644 --- a/src/3rdparty/freetype/src/truetype/ttdriver.c +++ b/src/3rdparty/freetype/src/truetype/ttdriver.c @@ -4,7 +4,7 @@ /* */ /* TrueType font driver implementation (body). */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007 by */ +/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -125,6 +125,49 @@ #undef PAIR_TAG + static FT_Error + tt_get_advances( FT_Face ttface, + FT_UInt start, + FT_UInt count, + FT_Int32 flags, + FT_Fixed *advances ) + { + FT_UInt nn; + TT_Face face = (TT_Face) ttface; + FT_Bool check = FT_BOOL( + !( flags & FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH ) ); + + + /* XXX: TODO: check for sbits */ + + if ( flags & FT_LOAD_VERTICAL_LAYOUT ) + { + for ( nn = 0; nn < count; nn++ ) + { + FT_Short tsb; + FT_UShort ah; + + + TT_Get_VMetrics( face, start + nn, check, &tsb, &ah ); + advances[nn] = ah; + } + } + else + { + for ( nn = 0; nn < count; nn++ ) + { + FT_Short lsb; + FT_UShort aw; + + + TT_Get_HMetrics( face, start + nn, check, &lsb, &aw ); + advances[nn] = aw; + } + } + + return TT_Err_Ok; + } + /*************************************************************************/ /*************************************************************************/ /*************************************************************************/ @@ -229,7 +272,7 @@ /* glyph_index :: The index of the glyph in the font file. */ /* */ /* load_flags :: A flag indicating what to load for this glyph. The */ - /* FTLOAD_??? constants can be used to control the */ + /* FT_LOAD_XXX constants can be used to control the */ /* glyph loading process (e.g., whether the outline */ /* should be scaled, whether to load bitmaps or not, */ /* whether to hint the outline, etc). */ @@ -258,11 +301,24 @@ if ( !face || glyph_index >= (FT_UInt)face->num_glyphs ) return TT_Err_Invalid_Argument; + if ( load_flags & FT_LOAD_NO_HINTING ) + { + /* both FT_LOAD_NO_HINTING and FT_LOAD_NO_AUTOHINT */ + /* are necessary to disable hinting for tricky fonts */ + + if ( FT_IS_TRICKY( face ) ) + load_flags &= ~FT_LOAD_NO_HINTING; + + if ( load_flags & FT_LOAD_NO_AUTOHINT ) + load_flags |= FT_LOAD_NO_HINTING; + } + if ( load_flags & ( FT_LOAD_NO_RECURSE | FT_LOAD_NO_SCALE ) ) { - load_flags |= FT_LOAD_NO_HINTING | - FT_LOAD_NO_BITMAP | - FT_LOAD_NO_SCALE; + load_flags |= FT_LOAD_NO_BITMAP | FT_LOAD_NO_SCALE; + + if ( !FT_IS_TRICKY( face ) ) + load_flags |= FT_LOAD_NO_HINTING; } /* now load the glyph outline if necessary */ @@ -404,7 +460,7 @@ tt_get_kerning, 0, /* FT_Face_AttachFunc */ - 0, /* FT_Face_GetAdvancesFunc */ + tt_get_advances, tt_size_request, #ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS diff --git a/src/3rdparty/freetype/src/truetype/ttgload.c b/src/3rdparty/freetype/src/truetype/ttgload.c index f6d6f9f..06e9ccd 100644 --- a/src/3rdparty/freetype/src/truetype/ttgload.c +++ b/src/3rdparty/freetype/src/truetype/ttgload.c @@ -69,12 +69,12 @@ /* `check' is true, take care of monospaced fonts by returning the */ /* advance width maximum. */ /* */ - static void - Get_HMetrics( TT_Face face, - FT_UInt idx, - FT_Bool check, - FT_Short* lsb, - FT_UShort* aw ) + FT_LOCAL_DEF(void) + TT_Get_HMetrics( TT_Face face, + FT_UInt idx, + FT_Bool check, + FT_Short* lsb, + FT_UShort* aw ) { ( (SFNT_Service)face->sfnt )->get_metrics( face, 0, idx, lsb, aw ); @@ -96,12 +96,12 @@ /* The monospace `check' is probably not meaningful here, but we leave */ /* it in for a consistent interface. */ /* */ - static void - Get_VMetrics( TT_Face face, - FT_UInt idx, - FT_Bool check, - FT_Short* tsb, - FT_UShort* ah ) + FT_LOCAL_DEF(void) + TT_Get_VMetrics( TT_Face face, + FT_UInt idx, + FT_Bool check, + FT_Short* tsb, + FT_UShort* ah ) { FT_UNUSED( check ); @@ -382,8 +382,8 @@ for ( ; vec < vec_limit; vec++, flag++ ) { - FT_Pos y = 0; - FT_Byte f = *flag; + FT_Pos y = 0; + FT_Byte f = *flag; if ( f & 2 ) @@ -405,7 +405,8 @@ x += y; vec->x = x; - *flag = f & ~( 2 | 16 ); + /* the cast is for stupid compilers */ + *flag = (FT_Byte)( f & ~( 2 | 16 ) ); } /* reading the Y coordinates */ @@ -417,8 +418,8 @@ for ( ; vec < vec_limit; vec++, flag++ ) { - FT_Pos y = 0; - FT_Byte f = *flag; + FT_Pos y = 0; + FT_Byte f = *flag; if ( f & 4 ) @@ -440,7 +441,8 @@ x += y; vec->y = x; - *flag = f & FT_CURVE_TAG_ON; + /* the cast is for stupid compilers */ + *flag = (FT_Byte)( f & FT_CURVE_TAG_ON ); } outline->n_points = (FT_UShort)n_points; @@ -557,10 +559,10 @@ FT_Stream stream = loader->stream; - /* we must undo the FT_FRAME_ENTER in order to point to the */ - /* composite instructions, if we find some. */ - /* we will process them later... */ - /* */ + /* we must undo the FT_FRAME_ENTER in order to point */ + /* to the composite instructions, if we find some. */ + /* We will process them later. */ + /* */ loader->ins_pos = (FT_ULong)( FT_STREAM_POS() + p - limit ); } @@ -1143,16 +1145,16 @@ FT_UShort advance_width = 0, advance_height = 0; - Get_HMetrics( face, glyph_index, - (FT_Bool)!( loader->load_flags & - FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH ), - &left_bearing, - &advance_width ); - Get_VMetrics( face, glyph_index, - (FT_Bool)!( loader->load_flags & - FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH ), - &top_bearing, - &advance_height ); + TT_Get_HMetrics( face, glyph_index, + (FT_Bool)!( loader->load_flags & + FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH ), + &left_bearing, + &advance_width ); + TT_Get_VMetrics( face, glyph_index, + (FT_Bool)!( loader->load_flags & + FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH ), + &top_bearing, + &advance_height ); #ifdef FT_CONFIG_OPTION_INCREMENTAL @@ -1243,6 +1245,13 @@ if ( loader->byte_len > 0 ) { + if ( !loader->glyf_offset ) + { + FT_TRACE2(( "no `glyf' table but non-zero `loca' entry!\n" )); + error = TT_Err_Invalid_Table; + goto Exit; + } + error = face->access_glyph_frame( loader, glyph_index, loader->glyf_offset + offset, loader->byte_len ); @@ -1668,8 +1677,8 @@ } /* adjust advance width to the value contained in the hdmx table */ - if ( !face->postscript.isFixedPitch && - IS_HINTED( loader->load_flags ) ) + if ( !face->postscript.isFixedPitch && + IS_HINTED( loader->load_flags ) ) { FT_Byte* widthp; @@ -1838,12 +1847,15 @@ FT_Error error = face->goto_table( face, TTAG_glyf, stream, 0 ); - if ( error ) + if ( error == TT_Err_Table_Missing ) + loader->glyf_offset = 0; + else if ( error ) { FT_ERROR(( "TT_Load_Glyph: could not access glyph table\n" )); return error; } - loader->glyf_offset = FT_STREAM_POS(); + else + loader->glyf_offset = FT_STREAM_POS(); } /* get face's glyph loader */ @@ -1855,7 +1867,7 @@ loader->gloader = gloader; } - loader->load_flags = load_flags; + loader->load_flags = load_flags; loader->face = (FT_Face)face; loader->size = (FT_Size)size; @@ -1958,6 +1970,40 @@ FT_Outline_Translate( &glyph->outline, -loader.pp1.x, 0 ); } +#ifdef TT_USE_BYTECODE_INTERPRETER + + if ( IS_HINTED( load_flags ) ) + { + if ( loader.exec->GS.scan_control ) + { + /* convert scan conversion mode to FT_OUTLINE_XXX flags */ + switch ( loader.exec->GS.scan_type ) + { + case 0: /* simple drop-outs including stubs */ + glyph->outline.flags |= FT_OUTLINE_INCLUDE_STUBS; + break; + case 1: /* simple drop-outs excluding stubs */ + /* nothing; it's the default rendering mode */ + break; + case 4: /* smart drop-outs including stubs */ + glyph->outline.flags |= FT_OUTLINE_SMART_DROPOUTS | + FT_OUTLINE_INCLUDE_STUBS; + break; + case 5: /* smart drop-outs excluding stubs */ + glyph->outline.flags |= FT_OUTLINE_SMART_DROPOUTS; + break; + + default: /* no drop-out control */ + glyph->outline.flags |= FT_OUTLINE_IGNORE_DROPOUTS; + break; + } + } + else + glyph->outline.flags |= FT_OUTLINE_IGNORE_DROPOUTS; + } + +#endif /* TT_USE_BYTECODE_INTERPRETER */ + compute_glyph_metrics( &loader, glyph_index ); } diff --git a/src/3rdparty/freetype/src/truetype/ttgload.h b/src/3rdparty/freetype/src/truetype/ttgload.h index b261e97..958d67d 100644 --- a/src/3rdparty/freetype/src/truetype/ttgload.h +++ b/src/3rdparty/freetype/src/truetype/ttgload.h @@ -4,7 +4,7 @@ /* */ /* TrueType Glyph Loader (specification). */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006 by */ +/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2008 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -34,6 +34,20 @@ FT_BEGIN_HEADER FT_LOCAL( void ) TT_Init_Glyph_Loading( TT_Face face ); + FT_LOCAL( void ) + TT_Get_HMetrics( TT_Face face, + FT_UInt idx, + FT_Bool check, + FT_Short* lsb, + FT_UShort* aw ); + + FT_LOCAL( void ) + TT_Get_VMetrics( TT_Face face, + FT_UInt idx, + FT_Bool check, + FT_Short* tsb, + FT_UShort* ah ); + FT_LOCAL( FT_Error ) TT_Load_Glyph( TT_Size size, TT_GlyphSlot glyph, diff --git a/src/3rdparty/freetype/src/truetype/ttgxvar.c b/src/3rdparty/freetype/src/truetype/ttgxvar.c index 0b3adbc..515e734 100644 --- a/src/3rdparty/freetype/src/truetype/ttgxvar.c +++ b/src/3rdparty/freetype/src/truetype/ttgxvar.c @@ -905,13 +905,15 @@ } else { - for ( i = 0; - i < num_coords && blend->normalizedcoords[i] == coords[i]; - ++i ); - if ( i == num_coords ) - manageCvt = mcvt_retain; - else + manageCvt = mcvt_retain; + for ( i = 0; i < num_coords; ++i ) + { + if ( blend->normalizedcoords[i] != coords[i] ) + { manageCvt = mcvt_load; + break; + } + } /* If we don't change the blend coords then we don't need to do */ /* anything to the cvt table. It will be correct. Otherwise we */ diff --git a/src/3rdparty/freetype/src/truetype/ttinterp.c b/src/3rdparty/freetype/src/truetype/ttinterp.c index 143ca65..3be2502 100644 --- a/src/3rdparty/freetype/src/truetype/ttinterp.c +++ b/src/3rdparty/freetype/src/truetype/ttinterp.c @@ -4,7 +4,7 @@ /* */ /* TrueType bytecode interpreter (body). */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */ +/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -693,7 +693,7 @@ /* exec :: A handle to the target execution context. */ /* */ /* <Return> */ - /* TrueTyoe error code. 0 means success. */ + /* TrueType error code. 0 means success. */ /* */ /* <Note> */ /* Only the glyph loader and debugger should call this function. */ @@ -748,6 +748,13 @@ } + /* The default value for `scan_control' is documented as FALSE in the */ + /* TrueType specification. This is confusing since it implies a */ + /* Boolean value. However, this is not the case, thus both the */ + /* default values of our `scan_type' and `scan_control' fields (which */ + /* the documentation's `scan_control' variable is split into) are */ + /* zero. */ + const TT_GraphicsState tt_default_graphics_state = { 0, 0, 0, @@ -761,7 +768,7 @@ 1, 64, 1, TRUE, 68, 0, 0, 9, 3, - 0, FALSE, 2, 1, 1, 1 + 0, FALSE, 0, 1, 1, 1 }; @@ -5090,12 +5097,8 @@ return; } - A *= 64; - -#if 0 - if ( ( args[0] & 0x100 ) != 0 && CUR.metrics.pointSize <= A ) + if ( ( args[0] & 0x100 ) != 0 && CUR.tt_metrics.ppem <= A ) CUR.GS.scan_control = TRUE; -#endif if ( ( args[0] & 0x200 ) != 0 && CUR.tt_metrics.rotated ) CUR.GS.scan_control = TRUE; @@ -5103,10 +5106,8 @@ if ( ( args[0] & 0x400 ) != 0 && CUR.tt_metrics.stretched ) CUR.GS.scan_control = TRUE; -#if 0 - if ( ( args[0] & 0x800 ) != 0 && CUR.metrics.pointSize > A ) + if ( ( args[0] & 0x800 ) != 0 && CUR.tt_metrics.ppem > A ) CUR.GS.scan_control = FALSE; -#endif if ( ( args[0] & 0x1000 ) != 0 && CUR.tt_metrics.rotated ) CUR.GS.scan_control = FALSE; @@ -5125,16 +5126,8 @@ static void Ins_SCANTYPE( INS_ARG ) { - /* for compatibility with future enhancements, */ - /* we must ignore new modes */ - - if ( args[0] >= 0 && args[0] <= 5 ) - { - if ( args[0] == 3 ) - args[0] = 2; - + if ( args[0] >= 0 ) CUR.GS.scan_type = (FT_Int)args[0]; - } } @@ -6393,7 +6386,7 @@ { scale_valid = 1; scale = TT_MULDIV( org2 + delta2 - ( org1 + delta1 ), - 0x10000, orus2 - orus1 ); + 0x10000L, orus2 - orus1 ); } x = ( org1 + delta1 ) + diff --git a/src/3rdparty/freetype/src/truetype/ttobjs.c b/src/3rdparty/freetype/src/truetype/ttobjs.c index 801559f..2649a67 100644 --- a/src/3rdparty/freetype/src/truetype/ttobjs.c +++ b/src/3rdparty/freetype/src/truetype/ttobjs.c @@ -4,7 +4,7 @@ /* */ /* Objects manager (body). */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007 by */ +/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -144,6 +144,39 @@ #endif /* TT_USE_BYTECODE_INTERPRETER */ + /* Compare the face with a list of well-known `tricky' fonts. */ + /* This list shall be expanded as we find more of them. */ + + static FT_Bool + tt_check_trickyness( FT_String* name ) + { + static const char* const trick_names[] = + { + "DFKaiSho-SB", /* dfkaisb.ttf */ + "DFKaiShu", + "DFKai-SB", /* kaiu.ttf */ + "HuaTianSongTi?", /* htst3.ttf */ + "MingLiU", /* mingliu.ttf & mingliu.ttc */ + "PMingLiU", /* mingliu.ttc */ + "MingLi43", /* mingli.ttf */ + NULL + }; + int nn; + + + if ( !name ) + return FALSE; + + /* Note that we only check the face name at the moment; it might */ + /* be worth to do more checks for a few special cases. */ + for ( nn = 0; trick_names[nn] != NULL; nn++ ) + if ( ft_strstr( name, trick_names[nn] ) ) + return TRUE; + + return FALSE; + } + + /*************************************************************************/ /* */ /* <Function> */ @@ -180,7 +213,7 @@ TT_Face face = (TT_Face)ttface; - library = face->root.driver->root.library; + library = ttface->driver->root.library; sfnt = (SFNT_Service)FT_Get_Module_Interface( library, "sfnt" ); if ( !sfnt ) goto Bad_Format; @@ -206,7 +239,7 @@ } #ifdef TT_USE_BYTECODE_INTERPRETER - face->root.face_flags |= FT_FACE_FLAG_HINTER; + ttface->face_flags |= FT_FACE_FLAG_HINTER; #endif /* If we are performing a simple font format check, exit immediately. */ @@ -218,16 +251,19 @@ if ( error ) goto Exit; + if ( tt_check_trickyness( ttface->family_name ) ) + ttface->face_flags |= FT_FACE_FLAG_TRICKY; + error = tt_face_load_hdmx( face, stream ); if ( error ) goto Exit; - if ( face->root.face_flags & FT_FACE_FLAG_SCALABLE ) + if ( FT_IS_SCALABLE( ttface ) ) { #ifdef FT_CONFIG_OPTION_INCREMENTAL - if ( !face->root.internal->incremental_interface ) + if ( !ttface->internal->incremental_interface ) error = tt_face_load_loca( face, stream ); if ( !error ) error = tt_face_load_cvt( face, stream ); @@ -267,38 +303,8 @@ if ( params[i].tag == FT_PARAM_TAG_UNPATENTED_HINTING ) unpatented_hinting = TRUE; - /* Compare the face with a list of well-known `tricky' fonts. */ - /* This list shall be expanded as we find more of them. */ if ( !unpatented_hinting ) - { - static const char* const trick_names[] = - { - "DFKaiSho-SB", /* dfkaisb.ttf */ - "DFKai-SB", /* kaiu.ttf */ - "HuaTianSongTi?", /* htst3.ttf */ - "MingLiU", /* mingliu.ttf & mingliu.ttc */ - "PMingLiU", /* mingliu.ttc */ - "MingLi43", /* mingli.ttf */ - NULL - }; - int nn; - - - /* Note that we only check the face name at the moment; it might */ - /* be worth to do more checks for a few special cases. */ - for ( nn = 0; trick_names[nn] != NULL; nn++ ) - { - if ( ttface->family_name && - ft_strstr( ttface->family_name, trick_names[nn] ) ) - { - unpatented_hinting = 1; - break; - } - } - } - - ttface->internal->ignore_unpatented_hinter = - FT_BOOL( !unpatented_hinting ); + ttface->internal->ignore_unpatented_hinter = TRUE; } #endif /* TT_CONFIG_OPTION_UNPATENTED_HINTING && @@ -330,12 +336,18 @@ FT_LOCAL_DEF( void ) tt_face_done( FT_Face ttface ) /* TT_Face */ { - TT_Face face = (TT_Face)ttface; - FT_Memory memory = face->root.memory; - FT_Stream stream = face->root.stream; + TT_Face face = (TT_Face)ttface; + FT_Memory memory; + FT_Stream stream; + SFNT_Service sfnt; + - SFNT_Service sfnt = (SFNT_Service)face->sfnt; + if ( !face ) + return; + memory = ttface->memory; + stream = ttface->stream; + sfnt = (SFNT_Service)face->sfnt; /* for `extended TrueType formats' (i.e. compressed versions) */ if ( face->extra.finalizer ) @@ -674,7 +686,7 @@ if ( !size->cvt_ready ) { FT_UInt i; - TT_Face face = (TT_Face) size->root.face; + TT_Face face = (TT_Face)size->root.face; /* Scale the cvt values to the new ppem. */ diff --git a/src/3rdparty/freetype/src/truetype/ttobjs.h b/src/3rdparty/freetype/src/truetype/ttobjs.h index 6971013..d4b8228 100644 --- a/src/3rdparty/freetype/src/truetype/ttobjs.h +++ b/src/3rdparty/freetype/src/truetype/ttobjs.h @@ -4,7 +4,7 @@ /* */ /* Objects manager (specification). */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007 by */ +/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -99,6 +99,10 @@ FT_BEGIN_HEADER FT_Short delta_shift; FT_Byte instruct_control; + /* According to Greg Hitchcock from Microsoft, the `scan_control' */ + /* variable as documented in the TrueType specification is a 32-bit */ + /* integer; the high-word part holds the SCANTYPE value, the low-word */ + /* part the SCANCTRL value. We separate it into two fields. */ FT_Bool scan_control; FT_Int scan_type; diff --git a/src/3rdparty/freetype/src/truetype/ttpload.c b/src/3rdparty/freetype/src/truetype/ttpload.c index 38674a1..f5d985e 100644 --- a/src/3rdparty/freetype/src/truetype/ttpload.c +++ b/src/3rdparty/freetype/src/truetype/ttpload.c @@ -4,7 +4,7 @@ /* */ /* TrueType-specific tables loader (body). */ /* */ -/* Copyright 1996-2001, 2002, 2004, 2005, 2006, 2007 by */ +/* Copyright 1996-2001, 2002, 2004, 2005, 2006, 2007, 2008 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -65,11 +65,17 @@ { FT_Error error; FT_ULong table_len; + FT_Int shift; /* we need the size of the `glyf' table for malformed `loca' tables */ error = face->goto_table( face, TTAG_glyf, stream, &face->glyf_len ); - if ( error ) + + /* it is possible that a font doesn't have a glyf table at all */ + /* or its size is zero */ + if ( error == TT_Err_Table_Missing ) + face->glyf_len = 0; + else if ( error ) goto Exit; FT_TRACE2(( "Locations " )); @@ -82,23 +88,65 @@ if ( face->header.Index_To_Loc_Format != 0 ) { + shift = 2; + if ( table_len >= 0x40000L ) { FT_TRACE2(( "table too large!\n" )); error = TT_Err_Invalid_Table; goto Exit; } - face->num_locations = (FT_UInt)( table_len >> 2 ); + face->num_locations = (FT_UInt)( table_len >> shift ); } else { + shift = 1; + if ( table_len >= 0x20000L ) { FT_TRACE2(( "table too large!\n" )); error = TT_Err_Invalid_Table; goto Exit; } - face->num_locations = (FT_UInt)( table_len >> 1 ); + face->num_locations = (FT_UInt)( table_len >> shift ); + } + + if ( face->num_locations != (FT_UInt)face->root.num_glyphs ) + { + FT_TRACE2(( "glyph count mismatch! loca: %d, maxp: %d\n", + face->num_locations, face->root.num_glyphs )); + + /* we only handle the case where `maxp' gives a larger value */ + if ( face->num_locations < (FT_UInt)face->root.num_glyphs ) + { + FT_Long new_loca_len = (FT_Long)face->root.num_glyphs << shift; + + TT_Table entry = face->dir_tables; + TT_Table limit = entry + face->num_tables; + + FT_Long pos = FT_Stream_Pos( stream ); + FT_Long dist = 0x7FFFFFFFL; + + + /* compute the distance to next table in font file */ + for ( ; entry < limit; entry++ ) + { + FT_Long diff = entry->Offset - pos; + + + if ( diff > 0 && diff < dist ) + dist = diff; + } + + if ( new_loca_len <= dist ) + { + face->num_locations = (FT_Long)face->root.num_glyphs; + table_len = new_loca_len; + + FT_TRACE2(( "adjusting num_locations to %d\n", + face->num_locations )); + } + } } /* @@ -162,6 +210,9 @@ /* Anyway, there do exist (malformed) fonts which don't obey */ /* this rule, so we are only able to provide an upper bound for */ /* the size. */ + /* */ + /* We get (intentionally) a wrong, non-zero result in case the */ + /* `glyf' table is missing. */ if ( pos2 >= pos1 ) *asize = (FT_UInt)( pos2 - pos1 ); else diff --git a/src/3rdparty/freetype/src/type1/module.mk b/src/3rdparty/freetype/src/type1/module.mk index baf98c0..ade0210 100644 --- a/src/3rdparty/freetype/src/type1/module.mk +++ b/src/3rdparty/freetype/src/type1/module.mk @@ -16,7 +16,7 @@ FTMODULE_H_COMMANDS += TYPE1_DRIVER define TYPE1_DRIVER -$(OPEN_DRIVER)t1_driver_class$(CLOSE_DRIVER) +$(OPEN_DRIVER) FT_Driver_ClassRec, t1_driver_class $(CLOSE_DRIVER) $(ECHO_DRIVER)type1 $(ECHO_DRIVER_DESC)Postscript font files with extension *.pfa or *.pfb$(ECHO_DRIVER_DONE) endef diff --git a/src/3rdparty/freetype/src/type1/t1afm.c b/src/3rdparty/freetype/src/type1/t1afm.c index b81a8df..5aea588 100644 --- a/src/3rdparty/freetype/src/type1/t1afm.c +++ b/src/3rdparty/freetype/src/type1/t1afm.c @@ -4,7 +4,7 @@ /* */ /* AFM support for Type 1 fonts (body). */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007 by */ +/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -88,7 +88,12 @@ FT_ULong index2 = KERN_INDEX( pair2->index1, pair2->index2 ); - return (int)( index1 - index2 ); + if ( index1 > index2 ) + return 1; + else if ( index1 < index2 ) + return -1; + else + return 0; } diff --git a/src/3rdparty/freetype/src/type1/t1driver.c b/src/3rdparty/freetype/src/type1/t1driver.c index 3ca21dc..8c398ee 100644 --- a/src/3rdparty/freetype/src/type1/t1driver.c +++ b/src/3rdparty/freetype/src/type1/t1driver.c @@ -4,7 +4,7 @@ /* */ /* Type 1 driver interface (body). */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2007 by */ +/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2007, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -84,6 +84,7 @@ return 0; } + static const FT_Service_GlyphDictRec t1_service_glyph_dict = { (FT_GlyphDict_GetNameFunc) t1_get_glyph_name, @@ -91,10 +92,10 @@ }; - /* - * POSTSCRIPT NAME SERVICE - * - */ + /* + * POSTSCRIPT NAME SERVICE + * + */ static const char* t1_get_ps_name( T1_Face face ) @@ -102,16 +103,17 @@ return (const char*) face->type1.font_name; } + static const FT_Service_PsFontNameRec t1_service_ps_name = { (FT_PsName_GetFunc)t1_get_ps_name }; - /* - * MULTIPLE MASTERS SERVICE - * - */ + /* + * MULTIPLE MASTERS SERVICE + * + */ #ifndef T1_CONFIG_OPTION_NO_MM_SUPPORT static const FT_Service_MultiMastersRec t1_service_multi_masters = @@ -125,17 +127,28 @@ #endif - /* - * POSTSCRIPT INFO SERVICE - * - */ + /* + * POSTSCRIPT INFO SERVICE + * + */ static FT_Error t1_ps_get_font_info( FT_Face face, PS_FontInfoRec* afont_info ) { *afont_info = ((T1_Face)face)->type1.font_info; - return 0; + + return T1_Err_Ok; + } + + + static FT_Error + t1_ps_get_font_extra( FT_Face face, + PS_FontExtraRec* afont_extra ) + { + *afont_extra = ((T1_Face)face)->type1.font_extra; + + return T1_Err_Ok; } @@ -143,6 +156,7 @@ t1_ps_has_glyph_names( FT_Face face ) { FT_UNUSED( face ); + return 1; } @@ -152,17 +166,20 @@ PS_PrivateRec* afont_private ) { *afont_private = ((T1_Face)face)->type1.private_dict; - return 0; + + return T1_Err_Ok; } static const FT_Service_PsInfoRec t1_service_ps_info = { (PS_GetFontInfoFunc) t1_ps_get_font_info, + (PS_GetFontExtraFunc) t1_ps_get_font_extra, (PS_HasGlyphNamesFunc) t1_ps_has_glyph_names, (PS_GetFontPrivateFunc)t1_ps_get_font_private, }; + #ifndef T1_CONFIG_OPTION_NO_AFM static const FT_Service_KerningRec t1_service_kerning = { @@ -170,10 +187,11 @@ }; #endif - /* - * SERVICE LIST - * - */ + + /* + * SERVICE LIST + * + */ static const FT_ServiceDescRec t1_services[] = { @@ -304,7 +322,7 @@ (FT_Face_GetKerningFunc) Get_Kerning, (FT_Face_AttachFunc) T1_Read_Metrics, #endif - (FT_Face_GetAdvancesFunc) 0, + (FT_Face_GetAdvancesFunc) T1_Get_Advances, (FT_Size_RequestFunc) T1_Size_Request, (FT_Size_SelectFunc) 0 }; diff --git a/src/3rdparty/freetype/src/type1/t1gload.c b/src/3rdparty/freetype/src/type1/t1gload.c index e08a428..c3ac13f 100644 --- a/src/3rdparty/freetype/src/type1/t1gload.c +++ b/src/3rdparty/freetype/src/type1/t1gload.c @@ -4,7 +4,7 @@ /* */ /* Type 1 Glyph Loader (body). */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006 by */ +/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2008, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -203,6 +203,65 @@ FT_LOCAL_DEF( FT_Error ) + T1_Get_Advances( T1_Face face, + FT_UInt first, + FT_UInt count, + FT_ULong load_flags, + FT_Fixed* advances ) + { + T1_DecoderRec decoder; + T1_Font type1 = &face->type1; + PSAux_Service psaux = (PSAux_Service)face->psaux; + FT_UInt nn; + FT_Error error; + + FT_UNUSED( load_flags ); + + + if ( load_flags & FT_LOAD_VERTICAL_LAYOUT ) + { + for ( nn = 0; nn < count; nn++ ) + advances[nn] = 0; + + return T1_Err_Ok; + } + + error = psaux->t1_decoder_funcs->init( &decoder, + (FT_Face)face, + 0, /* size */ + 0, /* glyph slot */ + (FT_Byte**)type1->glyph_names, + face->blend, + 0, + FT_RENDER_MODE_NORMAL, + T1_Parse_Glyph ); + if ( error ) + return error; + + decoder.builder.metrics_only = 1; + decoder.builder.load_points = 0; + + decoder.num_subrs = type1->num_subrs; + decoder.subrs = type1->subrs; + decoder.subrs_len = type1->subrs_len; + + decoder.buildchar = face->buildchar; + decoder.len_buildchar = face->len_buildchar; + + for ( nn = 0; nn < count; nn++ ) + { + error = T1_Parse_Glyph( &decoder, first + nn ); + if ( !error ) + advances[nn] = decoder.builder.advance.x; + else + advances[nn] = 0; + } + + return T1_Err_Ok; + } + + + FT_LOCAL_DEF( FT_Error ) T1_Load_Glyph( T1_GlyphSlot glyph, T1_Size size, FT_UInt glyph_index, @@ -236,8 +295,16 @@ if ( load_flags & FT_LOAD_NO_RECURSE ) load_flags |= FT_LOAD_NO_SCALE | FT_LOAD_NO_HINTING; - glyph->x_scale = size->root.metrics.x_scale; - glyph->y_scale = size->root.metrics.y_scale; + if ( size ) + { + glyph->x_scale = size->root.metrics.x_scale; + glyph->y_scale = size->root.metrics.y_scale; + } + else + { + glyph->x_scale = 0x10000L; + glyph->y_scale = 0x10000L; + } glyph->root.outline.n_points = 0; glyph->root.outline.n_contours = 0; @@ -371,8 +438,8 @@ } /* Then scale the metrics */ - metrics->horiAdvance = FT_MulFix( metrics->horiAdvance, x_scale ); - metrics->vertAdvance = FT_MulFix( metrics->vertAdvance, y_scale ); + metrics->horiAdvance = FT_MulFix( metrics->horiAdvance, x_scale ); + metrics->vertAdvance = FT_MulFix( metrics->vertAdvance, y_scale ); } /* compute the other metrics */ diff --git a/src/3rdparty/freetype/src/type1/t1gload.h b/src/3rdparty/freetype/src/type1/t1gload.h index de87896..100df06 100644 --- a/src/3rdparty/freetype/src/type1/t1gload.h +++ b/src/3rdparty/freetype/src/type1/t1gload.h @@ -4,7 +4,7 @@ /* */ /* Type 1 Glyph Loader (specification). */ /* */ -/* Copyright 1996-2001, 2002, 2003 by */ +/* Copyright 1996-2001, 2002, 2003, 2008 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -32,6 +32,13 @@ FT_BEGIN_HEADER FT_Pos* max_advance ); FT_LOCAL( FT_Error ) + T1_Get_Advances( T1_Face face, + FT_UInt first, + FT_UInt count, + FT_ULong load_flags, + FT_Fixed* advances ); + + FT_LOCAL( FT_Error ) T1_Load_Glyph( T1_GlyphSlot glyph, T1_Size size, FT_UInt glyph_index, diff --git a/src/3rdparty/freetype/src/type1/t1load.c b/src/3rdparty/freetype/src/type1/t1load.c index 9d7c748..06e72cc 100644 --- a/src/3rdparty/freetype/src/type1/t1load.c +++ b/src/3rdparty/freetype/src/type1/t1load.c @@ -4,7 +4,7 @@ /* */ /* Type 1 font loader (body). */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */ +/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -230,7 +230,7 @@ if ( ncv <= axismap->blend_points[0] ) - return axismap->design_points[0]; + return FT_INT_TO_FIXED( axismap->design_points[0] ); for ( j = 1; j < axismap->num_points; ++j ) { @@ -241,8 +241,7 @@ axismap->blend_points[j] - axismap->blend_points[j - 1] ); - - return axismap->design_points[j - 1] + + return FT_INT_TO_FIXED( axismap->design_points[j - 1] ) + FT_MulDiv( t, axismap->design_points[j] - axismap->design_points[j - 1], @@ -250,7 +249,7 @@ } } - return axismap->design_points[axismap->num_points - 1]; + return FT_INT_TO_FIXED( axismap->design_points[axismap->num_points - 1] ); } @@ -337,8 +336,8 @@ mmvar->axis[i].def = ( mmvar->axis[i].minimum + mmvar->axis[i].maximum ) / 2; /* Does not apply. But this value is in range */ - mmvar->axis[i].strid = 0xFFFFFFFFUL; /* Does not apply */ - mmvar->axis[i].tag = 0xFFFFFFFFUL; /* Does not apply */ + mmvar->axis[i].strid = (FT_UInt)-1; /* Does not apply */ + mmvar->axis[i].tag = (FT_ULong)-1; /* Does not apply */ if ( ft_strcmp( mmvar->axis[i].name, "Weight" ) == 0 ) mmvar->axis[i].tag = FT_MAKE_TAG( 'w', 'g', 'h', 't' ); @@ -348,16 +347,15 @@ mmvar->axis[i].tag = FT_MAKE_TAG( 'o', 'p', 's', 'z' ); } - if ( blend->num_designs == 1U << blend->num_axis ) + if ( blend->num_designs == ( 1U << blend->num_axis ) ) { mm_weights_unmap( blend->default_weight_vector, axiscoords, blend->num_axis ); for ( i = 0; i < mmaster.num_axis; ++i ) - mmvar->axis[i].def = - FT_INT_TO_FIXED( mm_axis_unmap( &blend->design_map[i], - axiscoords[i] ) ); + mmvar->axis[i].def = mm_axis_unmap( &blend->design_map[i], + axiscoords[i] ); } *master = mmvar; @@ -950,6 +948,12 @@ } break; + case T1_FIELD_LOCATION_FONT_EXTRA: + dummy_object = &face->type1.font_extra; + objects = &dummy_object; + max_objects = 0; + break; + case T1_FIELD_LOCATION_PRIVATE: dummy_object = &face->type1.private_dict; objects = &dummy_object; @@ -1274,6 +1278,19 @@ n++; } + else if ( only_immediates ) + { + /* Since the current position is not updated for */ + /* immediates-only mode we would get an infinite loop if */ + /* we don't do anything here. */ + /* */ + /* This encoding array is not valid according to the type1 */ + /* specification (it might be an encoding for a CID type1 */ + /* font, however), so we conclude that this font is NOT a */ + /* type1 font. */ + parser->root.error = FT_Err_Unknown_File_Format; + return; + } } else { @@ -1319,9 +1336,9 @@ PS_Table table = &loader->subrs; FT_Memory memory = parser->root.memory; FT_Error error; - FT_Int n, num_subrs; + FT_Int num_subrs; - PSAux_Service psaux = (PSAux_Service)face->psaux; + PSAux_Service psaux = (PSAux_Service)face->psaux; T1_Skip_Spaces( parser ); @@ -1355,18 +1372,17 @@ goto Fail; } - /* the format is simple: */ - /* */ - /* `index' + binary data */ - /* */ - for ( n = 0; n < num_subrs; n++ ) + /* the format is simple: */ + /* */ + /* `index' + binary data */ + /* */ + for (;;) { FT_Long idx, size; FT_Byte* base; - /* If the next token isn't `dup', we are also done. This */ - /* happens when there are `holes' in the Subrs array. */ + /* If the next token isn't `dup' we are done. */ if ( ft_strncmp( (char*)parser->root.cursor, "dup", 3 ) != 0 ) break; @@ -1615,15 +1631,11 @@ } } - if ( loader->num_glyphs ) - return; - else - loader->num_glyphs = n; + loader->num_glyphs = n; /* if /.notdef is found but does not occupy index 0, do our magic. */ - if ( ft_strcmp( (const char*)".notdef", - (const char*)name_table->elements[0] ) && - notdef_found ) + if ( notdef_found && + ft_strcmp( ".notdef", (const char*)name_table->elements[0] ) ) { /* Swap glyph in index 0 with /.notdef glyph. First, add index 0 */ /* name and code entries to swap_table. Then place notdef_index */ @@ -1692,7 +1704,7 @@ /* and add our own /.notdef glyph to index 0. */ /* 0 333 hsbw endchar */ - FT_Byte notdef_glyph[] = {0x8B, 0xF7, 0xE1, 0x0D, 0x0E}; + FT_Byte notdef_glyph[] = { 0x8B, 0xF7, 0xE1, 0x0D, 0x0E }; char* notdef_name = (char *)".notdef"; @@ -1730,7 +1742,7 @@ goto Fail; /* we added a glyph. */ - loader->num_glyphs = n + 1; + loader->num_glyphs += 1; } return; diff --git a/src/3rdparty/freetype/src/type1/t1objs.c b/src/3rdparty/freetype/src/type1/t1objs.c index 40b258f..2f90dd6 100644 --- a/src/3rdparty/freetype/src/type1/t1objs.c +++ b/src/3rdparty/freetype/src/type1/t1objs.c @@ -90,7 +90,7 @@ FT_LOCAL_DEF( FT_Error ) T1_Size_Init( T1_Size size ) { - FT_Error error = 0; + FT_Error error = T1_Err_Ok; PSH_Globals_Funcs funcs = T1_Size_Get_Globals_Funcs( size ); @@ -191,72 +191,75 @@ FT_LOCAL_DEF( void ) T1_Face_Done( T1_Face face ) { - if ( face ) - { - FT_Memory memory = face->root.memory; - T1_Font type1 = &face->type1; + FT_Memory memory; + T1_Font type1; + + + if ( !face ) + return; + memory = face->root.memory; + type1 = &face->type1; #ifndef T1_CONFIG_OPTION_NO_MM_SUPPORT - /* release multiple masters information */ - FT_ASSERT( ( face->len_buildchar == 0 ) == ( face->buildchar == NULL ) ); + /* release multiple masters information */ + FT_ASSERT( ( face->len_buildchar == 0 ) == ( face->buildchar == NULL ) ); - if ( face->buildchar ) - { - FT_FREE( face->buildchar ); + if ( face->buildchar ) + { + FT_FREE( face->buildchar ); - face->buildchar = NULL; - face->len_buildchar = 0; - } + face->buildchar = NULL; + face->len_buildchar = 0; + } - T1_Done_Blend( face ); - face->blend = 0; + T1_Done_Blend( face ); + face->blend = 0; #endif - /* release font info strings */ - { - PS_FontInfo info = &type1->font_info; + /* release font info strings */ + { + PS_FontInfo info = &type1->font_info; - FT_FREE( info->version ); - FT_FREE( info->notice ); - FT_FREE( info->full_name ); - FT_FREE( info->family_name ); - FT_FREE( info->weight ); - } + FT_FREE( info->version ); + FT_FREE( info->notice ); + FT_FREE( info->full_name ); + FT_FREE( info->family_name ); + FT_FREE( info->weight ); + } - /* release top dictionary */ - FT_FREE( type1->charstrings_len ); - FT_FREE( type1->charstrings ); - FT_FREE( type1->glyph_names ); + /* release top dictionary */ + FT_FREE( type1->charstrings_len ); + FT_FREE( type1->charstrings ); + FT_FREE( type1->glyph_names ); - FT_FREE( type1->subrs ); - FT_FREE( type1->subrs_len ); + FT_FREE( type1->subrs ); + FT_FREE( type1->subrs_len ); - FT_FREE( type1->subrs_block ); - FT_FREE( type1->charstrings_block ); - FT_FREE( type1->glyph_names_block ); + FT_FREE( type1->subrs_block ); + FT_FREE( type1->charstrings_block ); + FT_FREE( type1->glyph_names_block ); - FT_FREE( type1->encoding.char_index ); - FT_FREE( type1->encoding.char_name ); - FT_FREE( type1->font_name ); + FT_FREE( type1->encoding.char_index ); + FT_FREE( type1->encoding.char_name ); + FT_FREE( type1->font_name ); #ifndef T1_CONFIG_OPTION_NO_AFM - /* release afm data if present */ - if ( face->afm_data ) - T1_Done_Metrics( memory, (AFM_FontInfo)face->afm_data ); + /* release afm data if present */ + if ( face->afm_data ) + T1_Done_Metrics( memory, (AFM_FontInfo)face->afm_data ); #endif - /* release unicode map, if any */ + /* release unicode map, if any */ #if 0 - FT_FREE( face->unicode_map_rec.maps ); - face->unicode_map_rec.num_maps = 0; - face->unicode_map = NULL; + FT_FREE( face->unicode_map_rec.maps ); + face->unicode_map_rec.num_maps = 0; + face->unicode_map = NULL; #endif - face->root.family_name = 0; - face->root.style_name = 0; - } + face->root.family_name = NULL; + face->root.style_name = NULL; } @@ -323,7 +326,7 @@ goto Exit; /* check the face index */ - if ( face_index != 0 ) + if ( face_index > 0 ) { FT_ERROR(( "T1_Face_Init: invalid face index\n" )); error = T1_Err_Invalid_Argument; @@ -340,7 +343,7 @@ root->num_glyphs = type1->num_glyphs; - root->face_index = face_index; + root->face_index = 0; root->face_flags = FT_FACE_FLAG_SCALABLE | FT_FACE_FLAG_HORIZONTAL | @@ -355,15 +358,19 @@ /* XXX: TODO -- add kerning with .afm support */ + + /* The following code to extract the family and the style is very */ + /* simplistic and might get some things wrong. For a full-featured */ + /* algorithm you might have a look at the whitepaper given at */ + /* */ + /* http://blogs.msdn.com/text/archive/2007/04/23/wpf-font-selection-model.aspx */ + /* get style name -- be careful, some broken fonts only */ /* have a `/FontName' dictionary entry! */ root->family_name = info->family_name; - /* assume "Regular" style if we don't know better */ - root->style_name = (char *)"Regular"; + root->style_name = NULL; - if ( info->weight ) - root->style_name = info->weight; - else if ( root->family_name ) + if ( root->family_name ) { char* full = info->full_name; char* family = root->family_name; @@ -371,6 +378,9 @@ if ( full ) { + FT_Bool the_same = TRUE; + + while ( *full ) { if ( *full == *family ) @@ -386,12 +396,17 @@ family++; else { + the_same = FALSE; + if ( !*family ) root->style_name = full; break; } } } + + if ( the_same ) + root->style_name = (char *)"Regular"; } } else @@ -401,6 +416,15 @@ root->family_name = type1->font_name; } + if ( !root->style_name ) + { + if ( info->weight ) + root->style_name = info->weight; + else + /* assume `Regular' style because we don't know better */ + root->style_name = (char *)"Regular"; + } + /* compute style flags */ root->style_flags = 0; if ( info->italic_angle ) @@ -445,7 +469,7 @@ if ( !error ) root->max_advance_width = (FT_Short)max_advance; else - error = 0; /* clear error */ + error = T1_Err_Ok; /* clear error */ } root->max_advance_height = root->height; @@ -467,7 +491,7 @@ charmap.face = root; - /* first of all, try to synthetize a Unicode charmap */ + /* first of all, try to synthesize a Unicode charmap */ charmap.platform_id = 3; charmap.encoding_id = 1; charmap.encoding = FT_ENCODING_UNICODE; diff --git a/src/3rdparty/freetype/src/type1/t1tokens.h b/src/3rdparty/freetype/src/type1/t1tokens.h index 788c811..2d692f0 100644 --- a/src/3rdparty/freetype/src/type1/t1tokens.h +++ b/src/3rdparty/freetype/src/type1/t1tokens.h @@ -4,7 +4,7 @@ /* */ /* Type 1 tokenizer (specification). */ /* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2006 by */ +/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2008, 2009 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -42,6 +42,13 @@ T1_FIELD_NUM ( "UnderlineThickness", underline_thickness, T1_FIELD_DICT_FONTDICT ) +#undef FT_STRUCTURE +#define FT_STRUCTURE PS_FontExtraRec +#undef T1CODE +#define T1CODE T1_FIELD_LOCATION_FONT_EXTRA + + T1_FIELD_NUM ( "FSType", fs_type, + T1_FIELD_DICT_FONTDICT ) #undef FT_STRUCTURE #define FT_STRUCTURE PS_PrivateRec @@ -87,7 +94,9 @@ T1_FIELD_FIXED ( "ExpansionFactor", expansion_factor, T1_FIELD_DICT_PRIVATE ) - + T1_FIELD_BOOL ( "ForceBold", force_bold, + T1_FIELD_DICT_PRIVATE ) + #undef FT_STRUCTURE #define FT_STRUCTURE T1_FontRec diff --git a/src/3rdparty/freetype/src/type42/module.mk b/src/3rdparty/freetype/src/type42/module.mk index 8bd40a5..b3f10a8 100644 --- a/src/3rdparty/freetype/src/type42/module.mk +++ b/src/3rdparty/freetype/src/type42/module.mk @@ -16,7 +16,7 @@ FTMODULE_H_COMMANDS += TYPE42_DRIVER define TYPE42_DRIVER -$(OPEN_DRIVER)t42_driver_class$(CLOSE_DRIVER) +$(OPEN_DRIVER) FT_Driver_ClassRec, t42_driver_class $(CLOSE_DRIVER) $(ECHO_DRIVER)type42 $(ECHO_DRIVER_DESC)Type 42 font files with no known extension$(ECHO_DRIVER_DONE) endef diff --git a/src/3rdparty/freetype/src/type42/rules.mk b/src/3rdparty/freetype/src/type42/rules.mk index 5563061..eac1081 100644 --- a/src/3rdparty/freetype/src/type42/rules.mk +++ b/src/3rdparty/freetype/src/type42/rules.mk @@ -3,7 +3,7 @@ # -# Copyright 2002, 2003 by +# Copyright 2002, 2003, 2008 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, @@ -32,7 +32,8 @@ T42_DRV_SRC := $(T42_DIR)/t42objs.c \ # Type42 driver headers # T42_DRV_H := $(T42_DRV_SRC:%.c=%.h) \ - $(T42_DIR)/t42error.h + $(T42_DIR)/t42error.h \ + $(T42_DIR)/t42types.h # Type42 driver object(s) diff --git a/src/3rdparty/freetype/src/type42/t42drivr.c b/src/3rdparty/freetype/src/type42/t42drivr.c index a6e4cf4..820c679 100644 --- a/src/3rdparty/freetype/src/type42/t42drivr.c +++ b/src/3rdparty/freetype/src/type42/t42drivr.c @@ -4,7 +4,7 @@ /* */ /* High-level Type 42 driver interface (body). */ /* */ -/* Copyright 2002, 2003, 2004, 2006, 2007 by Roberto Alameda. */ +/* Copyright 2002, 2003, 2004, 2006, 2007, 2009 by Roberto Alameda. */ /* */ /* This file is part of the FreeType project, and may only be used, */ /* modified, and distributed under the terms of the FreeType project */ @@ -49,11 +49,11 @@ #define FT_COMPONENT trace_t42 - /* - * - * GLYPH DICT SERVICE - * - */ + /* + * + * GLYPH DICT SERVICE + * + */ static FT_Error t42_get_glyph_name( T42_Face face, @@ -94,11 +94,11 @@ }; - /* - * - * POSTSCRIPT NAME SERVICE - * - */ + /* + * + * POSTSCRIPT NAME SERVICE + * + */ static const char* t42_get_ps_font_name( T42_Face face ) @@ -113,17 +113,28 @@ }; - /* - * - * POSTSCRIPT INFO SERVICE - * - */ + /* + * + * POSTSCRIPT INFO SERVICE + * + */ static FT_Error t42_ps_get_font_info( FT_Face face, PS_FontInfoRec* afont_info ) { *afont_info = ((T42_Face)face)->type1.font_info; + + return T42_Err_Ok; + } + + + static FT_Error + t42_ps_get_font_extra( FT_Face face, + PS_FontExtraRec* afont_extra ) + { + *afont_extra = ((T42_Face)face)->type1.font_extra; + return T42_Err_Ok; } @@ -132,6 +143,7 @@ t42_ps_has_glyph_names( FT_Face face ) { FT_UNUSED( face ); + return 1; } @@ -141,6 +153,7 @@ PS_PrivateRec* afont_private ) { *afont_private = ((T42_Face)face)->type1.private_dict; + return T42_Err_Ok; } @@ -148,16 +161,17 @@ static const FT_Service_PsInfoRec t42_service_ps_info = { (PS_GetFontInfoFunc) t42_ps_get_font_info, + (PS_GetFontExtraFunc) t42_ps_get_font_extra, (PS_HasGlyphNamesFunc) t42_ps_has_glyph_names, (PS_GetFontPrivateFunc)t42_ps_get_font_private }; - /* - * - * SERVICE LIST - * - */ + /* + * + * SERVICE LIST + * + */ static const FT_ServiceDescRec t42_services[] = { diff --git a/src/3rdparty/freetype/src/type42/t42objs.c b/src/3rdparty/freetype/src/type42/t42objs.c index db04fde..16e9809 100644 --- a/src/3rdparty/freetype/src/type42/t42objs.c +++ b/src/3rdparty/freetype/src/type42/t42objs.c @@ -4,7 +4,7 @@ /* */ /* Type 42 objects manager (body). */ /* */ -/* Copyright 2002, 2003, 2004, 2005, 2006, 2007 by Roberto Alameda. */ +/* Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008 by Roberto Alameda. */ /* */ /* This file is part of the FreeType project, and may only be used, */ /* modified, and distributed under the terms of the FreeType project */ @@ -188,7 +188,7 @@ goto Exit; /* check the face index */ - if ( face_index != 0 ) + if ( face_index > 0 ) { FT_ERROR(( "T42_Face_Init: invalid face index\n" )); error = T42_Err_Invalid_Argument; @@ -202,7 +202,7 @@ root->num_glyphs = type1->num_glyphs; root->num_charmaps = 0; - root->face_index = face_index; + root->face_index = 0; root->face_flags = FT_FACE_FLAG_SCALABLE | FT_FACE_FLAG_HORIZONTAL | @@ -328,7 +328,7 @@ charmap.face = root; - /* first of all, try to synthetize a Unicode charmap */ + /* first of all, try to synthesize a Unicode charmap */ charmap.platform_id = 3; charmap.encoding_id = 1; charmap.encoding = FT_ENCODING_UNICODE; @@ -392,50 +392,50 @@ FT_Memory memory; - if ( face ) - { - type1 = &face->type1; - info = &type1->font_info; - memory = face->root.memory; + if ( !face ) + return; + + type1 = &face->type1; + info = &type1->font_info; + memory = face->root.memory; - /* delete internal ttf face prior to freeing face->ttf_data */ - if ( face->ttf_face ) - FT_Done_Face( face->ttf_face ); + /* delete internal ttf face prior to freeing face->ttf_data */ + if ( face->ttf_face ) + FT_Done_Face( face->ttf_face ); - /* release font info strings */ - FT_FREE( info->version ); - FT_FREE( info->notice ); - FT_FREE( info->full_name ); - FT_FREE( info->family_name ); - FT_FREE( info->weight ); + /* release font info strings */ + FT_FREE( info->version ); + FT_FREE( info->notice ); + FT_FREE( info->full_name ); + FT_FREE( info->family_name ); + FT_FREE( info->weight ); - /* release top dictionary */ - FT_FREE( type1->charstrings_len ); - FT_FREE( type1->charstrings ); - FT_FREE( type1->glyph_names ); + /* release top dictionary */ + FT_FREE( type1->charstrings_len ); + FT_FREE( type1->charstrings ); + FT_FREE( type1->glyph_names ); - FT_FREE( type1->charstrings_block ); - FT_FREE( type1->glyph_names_block ); + FT_FREE( type1->charstrings_block ); + FT_FREE( type1->glyph_names_block ); - FT_FREE( type1->encoding.char_index ); - FT_FREE( type1->encoding.char_name ); - FT_FREE( type1->font_name ); + FT_FREE( type1->encoding.char_index ); + FT_FREE( type1->encoding.char_name ); + FT_FREE( type1->font_name ); - FT_FREE( face->ttf_data ); + FT_FREE( face->ttf_data ); #if 0 - /* release afm data if present */ - if ( face->afm_data ) - T1_Done_AFM( memory, (T1_AFM*)face->afm_data ); + /* release afm data if present */ + if ( face->afm_data ) + T1_Done_AFM( memory, (T1_AFM*)face->afm_data ); #endif - /* release unicode map, if any */ - FT_FREE( face->unicode_map.maps ); - face->unicode_map.num_maps = 0; + /* release unicode map, if any */ + FT_FREE( face->unicode_map.maps ); + face->unicode_map.num_maps = 0; - face->root.family_name = 0; - face->root.style_name = 0; - } + face->root.family_name = 0; + face->root.style_name = 0; } @@ -519,7 +519,7 @@ FT_Activate_Size( size->ttsize ); - error = FT_Select_Size( face->ttf_face, strike_index ); + error = FT_Select_Size( face->ttf_face, (FT_Int)strike_index ); if ( !error ) ( (FT_Size)size )->metrics = face->ttf_face->size->metrics; diff --git a/src/3rdparty/freetype/src/type42/t42parse.c b/src/3rdparty/freetype/src/type42/t42parse.c index 7d8c267..b9e408c 100644 --- a/src/3rdparty/freetype/src/type42/t42parse.c +++ b/src/3rdparty/freetype/src/type42/t42parse.c @@ -4,7 +4,8 @@ /* */ /* Type 42 font parser (body). */ /* */ -/* Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008 by Roberto Alameda. */ +/* Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */ +/* Roberto Alameda. */ /* */ /* This file is part of the FreeType project, and may only be used, */ /* modified, and distributed under the terms of the FreeType project */ @@ -70,6 +71,13 @@ T1_FIELD_NUM ( "UnderlineThickness", underline_thickness, 0 ) #undef FT_STRUCTURE +#define FT_STRUCTURE PS_FontExtraRec +#undef T1CODE +#define T1CODE T1_FIELD_LOCATION_FONT_EXTRA + + T1_FIELD_NUM ( "FSType", fs_type, 0 ) + +#undef FT_STRUCTURE #define FT_STRUCTURE T1_FontRec #undef T1CODE #define T1CODE T1_FIELD_LOCATION_FONT_DICT diff --git a/src/3rdparty/freetype/src/type42/t42types.h b/src/3rdparty/freetype/src/type42/t42types.h index 6626b04..c7c2db4 100644 --- a/src/3rdparty/freetype/src/type42/t42types.h +++ b/src/3rdparty/freetype/src/type42/t42types.h @@ -4,7 +4,7 @@ /* */ /* Type 42 font data types (specification only). */ /* */ -/* Copyright 2002, 2003, 2006 by Roberto Alameda. */ +/* Copyright 2002, 2003, 2006, 2008 by Roberto Alameda. */ /* */ /* This file is part of the FreeType project, and may only be used, */ /* modified, and distributed under the terms of the FreeType project */ @@ -35,7 +35,9 @@ FT_BEGIN_HEADER T1_FontRec type1; const void* psnames; const void* psaux; +#if 0 const void* afm_data; +#endif FT_Byte* ttf_data; FT_ULong ttf_size; FT_Face ttf_face; @@ -48,7 +50,7 @@ FT_BEGIN_HEADER FT_END_HEADER -#endif /* __T1TYPES_H__ */ +#endif /* __T42TYPES_H__ */ /* END */ diff --git a/src/3rdparty/freetype/src/winfonts/module.mk b/src/3rdparty/freetype/src/winfonts/module.mk index 0ace3ae..b44d7f0 100644 --- a/src/3rdparty/freetype/src/winfonts/module.mk +++ b/src/3rdparty/freetype/src/winfonts/module.mk @@ -16,7 +16,7 @@ FTMODULE_H_COMMANDS += WINDOWS_DRIVER define WINDOWS_DRIVER -$(OPEN_DRIVER)winfnt_driver_class$(CLOSE_DRIVER) +$(OPEN_DRIVER) FT_Driver_ClassRec, winfnt_driver_class $(CLOSE_DRIVER) $(ECHO_DRIVER)winfnt $(ECHO_DRIVER_DESC)Windows bitmap fonts with extension *.fnt or *.fon$(ECHO_DRIVER_DONE) endef diff --git a/src/3rdparty/freetype/src/winfonts/winfnt.c b/src/3rdparty/freetype/src/winfonts/winfnt.c index 833fb88..f6e9859 100644 --- a/src/3rdparty/freetype/src/winfonts/winfnt.c +++ b/src/3rdparty/freetype/src/winfonts/winfnt.c @@ -360,7 +360,7 @@ if ( face_index >= font_count ) { - error = FNT_Err_Bad_Argument; + error = FNT_Err_Invalid_Argument; goto Exit; } else if ( face_index < 0 ) @@ -566,7 +566,7 @@ if ( face_index >= face->root.num_faces ) { - error = FNT_Err_Bad_Argument; + error = FNT_Err_Invalid_Argument; goto Exit; } } @@ -612,8 +612,9 @@ char_code -= cmap->first; if ( char_code < cmap->count ) - gindex = char_code + 1; /* we artificially increase the glyph index; */ - /* FNT_Load_Glyph reverts to the right one */ + /* we artificially increase the glyph index; */ + /* FNT_Load_Glyph reverts to the right one */ + gindex = (FT_UInt)( char_code + 1 ); return gindex; } @@ -638,7 +639,7 @@ if ( char_code < cmap->count ) { result = cmap->first + char_code; - gindex = char_code + 1; + gindex = (FT_UInt)( char_code + 1 ); } } @@ -665,16 +666,18 @@ static void FNT_Face_Done( FNT_Face face ) { - if ( face ) - { - FT_Memory memory = FT_FACE_MEMORY( face ); + FT_Memory memory; - fnt_font_done( face ); + if ( !face ) + return; - FT_FREE( face->root.available_sizes ); - face->root.num_fixed_sizes = 0; - } + memory = FT_FACE_MEMORY( face ); + + fnt_font_done( face ); + + FT_FREE( face->root.available_sizes ); + face->root.num_fixed_sizes = 0; } @@ -716,7 +719,7 @@ if ( !error ) { if ( face_index > 0 ) - error = FNT_Err_Bad_Argument; + error = FNT_Err_Invalid_Argument; else if ( face_index < 0 ) goto Exit; } @@ -733,6 +736,8 @@ FT_PtrDist family_size; + root->face_index = face_index; + root->face_flags = FT_FACE_FLAG_FIXED_SIZES | FT_FACE_FLAG_HORIZONTAL; @@ -780,7 +785,7 @@ * => nominal_point_size contains incorrect value; * use pixel_height as the nominal height */ - if ( bsize->y_ppem > font->header.pixel_height << 6 ) + if ( bsize->y_ppem > ( font->header.pixel_height << 6 ) ) { FT_TRACE2(( "use pixel_height as the nominal height\n" )); @@ -909,7 +914,7 @@ switch ( req->type ) { case FT_SIZE_REQUEST_TYPE_NOMINAL: - if ( height == ( bsize->y_ppem + 32 ) >> 6 ) + if ( height == ( ( bsize->y_ppem + 32 ) >> 6 ) ) error = FNT_Err_Ok; break; diff --git a/src/3rdparty/phonon/ds9/effect.cpp b/src/3rdparty/phonon/ds9/effect.cpp index dc4ac3d..104a3c1 100644 --- a/src/3rdparty/phonon/ds9/effect.cpp +++ b/src/3rdparty/phonon/ds9/effect.cpp @@ -138,8 +138,7 @@ namespace Phonon ComPointer<IMediaParams> params(filter, IID_IMediaParams); Q_ASSERT(params); - MP_DATA data = float(v.toDouble()); - params->SetParam(p.id(), data); + params->SetParam(p.id(), v.toFloat()); } } diff --git a/src/3rdparty/phonon/phonon/effectwidget.cpp b/src/3rdparty/phonon/phonon/effectwidget.cpp index 99478f7..fb9cf6e 100644 --- a/src/3rdparty/phonon/phonon/effectwidget.cpp +++ b/src/3rdparty/phonon/phonon/effectwidget.cpp @@ -157,19 +157,20 @@ void EffectWidgetPrivate::autogenerateUi() QObject::connect(sb, SIGNAL(valueChanged(int)), q, SLOT(_k_setIntParameter(int))); } break; + case QMetaType::Float: case QVariant::Double: { - const double minValue = (para.minimumValue().type() == QVariant::Double ? - para.minimumValue().toDouble() : DEFAULT_MIN); - const double maxValue = (para.maximumValue().type() == QVariant::Double ? - para.maximumValue().toDouble() : DEFAULT_MAX); + const qreal minValue = para.minimumValue().canConvert(QVariant::Double) ? + para.minimumValue().toReal() : DEFAULT_MIN; + const qreal maxValue = para.maximumValue().canConvert(QVariant::Double) ? + para.maximumValue().toReal() : DEFAULT_MAX; if (minValue == -1. && maxValue == 1.) { //Special case values between -1 and 1.0 to use a slider for improved usability QSlider *slider = new QSlider(Qt::Horizontal, q); control = slider; slider->setRange(-SLIDER_RANGE, +SLIDER_RANGE); - slider->setValue(int(SLIDER_RANGE * value.toDouble())); + slider->setValue(int(SLIDER_RANGE * value.toReal())); slider->setTickPosition(QSlider::TicksBelow); slider->setTickInterval(TICKINTERVAL); QObject::connect(slider, SIGNAL(valueChanged(int)), q, SLOT(_k_setSliderParameter(int))); diff --git a/src/3rdparty/webkit/WebCore/WebCore.pro b/src/3rdparty/webkit/WebCore/WebCore.pro index 68da1d6..2fb5c32 100644 --- a/src/3rdparty/webkit/WebCore/WebCore.pro +++ b/src/3rdparty/webkit/WebCore/WebCore.pro @@ -2165,6 +2165,7 @@ SOURCES += \ SOURCES += \ platform/text/cf/StringCF.cpp \ platform/text/cf/StringImplCF.cpp + LIBS_PRIVATE += -framework Carbon -framework AppKit } win32-* { diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebdatabase.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebdatabase.cpp index d51e4e6..4e8fd30 100644 --- a/src/3rdparty/webkit/WebKit/qt/Api/qwebdatabase.cpp +++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebdatabase.cpp @@ -33,6 +33,8 @@ using namespace WebCore; \since 4.5 \brief The QWebDatabase class provides access to HTML 5 databases created with JavaScript. + \inmodule QtWebKit + The upcoming HTML 5 standard includes support for SQL databases that web sites can create and access on a local computer through JavaScript. QWebDatabase is the C++ interface to these databases. diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebelement.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebelement.cpp index 1dfb409..57c8b0d 100644 --- a/src/3rdparty/webkit/WebKit/qt/Api/qwebelement.cpp +++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebelement.cpp @@ -53,45 +53,57 @@ public: /*! \class QWebElement \since 4.6 - \brief The QWebElement class provides convenient access to DOM elements in a QWebFrame. + \brief The QWebElement class provides convenient access to DOM elements in + a QWebFrame. + \inmodule QtWebKit - QWebElement is the main class to easily access to the document model. - The document model is represented by a tree-like structure of DOM elements. - The root of the tree is called the document element and can be accessed using QWebFrame::documentElement(). + A QWebElement object allows easy access to the document model, represented + by a tree-like structure of DOM elements. The root of the tree is called + the document element and can be accessed using + QWebFrame::documentElement(). - You can reach specific elements using findAll() and findFirst(); the elements - are identified through CSS selectors. + Specific elements can be accessed using findAll() and findFirst(). These + elements are identified using CSS selectors. The code snippet below + demonstrates the use of findAll(). \snippet webkitsnippets/webelement/main.cpp FindAll - The first list contains all \c span elements in the document. The second list contains - \c span elements that are children of \c p, classified with \c intro. + The first list contains all \c span elements in the document. The second + list contains \c span elements that are children of \c p, classified with + \c intro. - Using findFirst() is more efficient than calling findAll() and extracting the first element - only in the returned list. + Using findFirst() is more efficient than calling findAll(), and extracting + the first element only in the list returned. - Alternatively you can manually traverse the document using firstChild() and nextSibling(): + Alternatively you can traverse the document manually using firstChild() and + nextSibling(): \snippet webkitsnippets/webelement/main.cpp Traversing with QWebElement - The underlying content of QWebElement is explicitly shared. Creating a copy of a QWebElement - does not create a copy of the content. Instead, both instances point to the same element. + The underlying content of QWebElement is explicitly shared. Creating a copy + of a QWebElement does not create a copy of the content. Instead, both + instances point to the same element. - The element's attributes can be read using attribute() and modified with setAttribute(). + The element's attributes can be read using attribute() and modified with + setAttribute(). - The contents of child elements can be converted to plain text with toPlainText() and to - XHTML using toInnerXml(). To also include the element's tag in the output, use toOuterXml(). + The contents of child elements can be converted to plain text with + toPlainText(); to XHTML using toInnerXml(). To include the element's tag in + the output, use toOuterXml(). - It is possible to replace the contents using setPlainText() and setInnerXml(). To replace - the element itself and its contents, use setOuterXml(). + It is possible to replace the contents of child elements using + setPlainText() and setInnerXml(). To replace the element itself and its + contents, use setOuterXml(). - In the JavaScript DOM interfaces, elements can have additional functions depending on their - type. For example an HTML form element can be triggered to submit the entire form to the - web server using the submit() function. A list of these special functions can be obtained - in QWebElement using functions(); they can be invoked using callFunction(). + In the JavaScript DOM interfaces, elements can have additional functions + depending on their type. For example, an HTML form element can be triggered + to submit the entire form to the web server using the submit() function. A + list of these special functions can be obtained in QWebElement using + functions(); they can be invoked using callFunction(). - Similarly element specific properties can be obtained using scriptableProperties() and - read/written using scriptableProperty()/setScriptableProperty(). + Similarly, element specific properties can be obtained using + scriptableProperties() and read or written using scriptableProperty() or + setScriptableProperty(). */ /*! @@ -156,7 +168,7 @@ QWebElement &QWebElement::operator=(const QWebElement &other) } /*! - Destroys the element. The underlying DOM element is not destroyed. + Destroys the element. However, the underlying DOM element is not destroyed. */ QWebElement::~QWebElement() { @@ -176,7 +188,7 @@ bool QWebElement::operator!=(const QWebElement& o) const } /*! - Returns true if the element is a null element; false otherwise. + Returns true if the element is a null element; otherwise returns false. */ bool QWebElement::isNull() const { @@ -184,13 +196,16 @@ bool QWebElement::isNull() const } /*! - Returns a new list of child elements matching the given CSS selector \a selectorQuery. - If there are no matching elements, an empty list is returned. + Returns a new list of child elements matching the given CSS selector + \a selectorQuery. If there are no matching elements, an empty list is + returned. - \l{http://www.w3.org/TR/REC-CSS2/selector.html#q1}{Standard CSS2 selector} syntax is - used for the query. + \l{http://www.w3.org/TR/REC-CSS2/selector.html#q1}{Standard CSS2 selector} + syntax is used for the query. \note This search is performed recursively. + + \sa findFirst() */ QList<QWebElement> QWebElement::findAll(const QString &selectorQuery) const { @@ -212,12 +227,15 @@ QList<QWebElement> QWebElement::findAll(const QString &selectorQuery) const } /*! - Returns the first child element that matches the given CSS selector \a selectorQuery. + Returns the first child element that matches the given CSS selector + \a selectorQuery. - \l{http://www.w3.org/TR/REC-CSS2/selector.html#q1}{Standard CSS2 selector} syntax is - used for the query. + \l{http://www.w3.org/TR/REC-CSS2/selector.html#q1}{Standard CSS2 selector} + syntax is used for the query. \note This search is performed recursively. + + \sa findAll() */ QWebElement QWebElement::findFirst(const QString &selectorQuery) const { @@ -231,6 +249,8 @@ QWebElement QWebElement::findFirst(const QString &selectorQuery) const Replaces the existing content of this element with \a text. This is equivalent to setting the HTML innerText property. + + \sa toPlainText() */ void QWebElement::setPlainText(const QString &text) { @@ -245,6 +265,8 @@ void QWebElement::setPlainText(const QString &text) element. This is equivalent to reading the HTML innerText property. + + \sa setPlainText() */ QString QWebElement::toPlainText() const { @@ -254,11 +276,13 @@ QString QWebElement::toPlainText() const } /*! - Replaces the contents of this element as well as its own tag with \a markup. - The string may contain HTML or XML tags, which is parsed and formatted - before insertion into the document. + Replaces the contents of this element as well as its own tag with + \a markup. The string may contain HTML or XML tags, which is parsed and + formatted before insertion into the document. \note This is currently only implemented for (X)HTML elements. + + \sa toOuterXml(), toInnerXml(), setInnerXml() */ void QWebElement::setOuterXml(const QString &markup) { @@ -272,9 +296,11 @@ void QWebElement::setOuterXml(const QString &markup) /*! Returns this element converted to XML, including the start and the end - tag of this element and its attributes. + tags as well as its attributes. - \note This is currently only implemented for (X)HTML elements. + \note This is currently implemented for (X)HTML elements only. + + \sa setOuterXml(), setInnerXml(), toInnerXml() */ QString QWebElement::toOuterXml() const { @@ -285,11 +311,13 @@ QString QWebElement::toOuterXml() const } /*! - Replaces the content of this element with \a markup. - The string may contain HTML or XML tags, which is parsed and formatted - before insertion into the document. + Replaces the contents of this element with \a markup. The string may + contain HTML or XML tags, which is parsed and formatted before insertion + into the document. - \note This is currently only implemented for (X)HTML elements. + \note This is currently implemented for (X)HTML elements only. + + \sa toInnerXml(), toOuterXml(), setOuterXml() */ void QWebElement::setInnerXml(const QString &markup) { @@ -302,10 +330,11 @@ void QWebElement::setInnerXml(const QString &markup) } /*! - Returns the XML between the start and the end tag of this - element. + Returns the XML content between the element's start and end tags. - \note This is currently only implemented for (X)HTML elements. + \note This is currently implemented for (X)HTML elements only. + + \sa setInnerXml(), setOuterXml(), toOuterXml() */ QString QWebElement::toInnerXml() const { @@ -316,8 +345,10 @@ QString QWebElement::toInnerXml() const } /*! - Adds an attribute called \a name with the value \a value. If an attribute - with the same name exists, its value is replaced by \a value. + Adds an attribute with the given \a name and \a value. If an attribute with + the same name exists, its value is replaced by \a value. + + \sa attribute(), attributeNS(), setAttributeNS() */ void QWebElement::setAttribute(const QString &name, const QString &value) { @@ -328,9 +359,11 @@ void QWebElement::setAttribute(const QString &name, const QString &value) } /*! - Adds an attribute called \a name in the namespace described with \a namespaceUri - with the value \a value. If an attribute with the same name exists, its value is - replaced by \a value. + Adds an attribute with the given \a name in \a namespaceUri with \a value. + If an attribute with the same name exists, its value is replaced by + \a value. + + \sa attributeNS(), attribute(), setAttribute() */ void QWebElement::setAttributeNS(const QString &namespaceUri, const QString &name, const QString &value) { @@ -341,8 +374,10 @@ void QWebElement::setAttributeNS(const QString &namespaceUri, const QString &nam } /*! - Returns the attributed called \a name. If the attribute does not exist \a defaultValue is - returned. + Returns the attribute with the given \a name. If the attribute does not + exist, \a defaultValue is returned. + + \sa setAttribute(), setAttributeNS(), attributeNS() */ QString QWebElement::attribute(const QString &name, const QString &defaultValue) const { @@ -355,8 +390,10 @@ QString QWebElement::attribute(const QString &name, const QString &defaultValue) } /*! - Returns the attributed called \a name in the namespace described with \a namespaceUri. - If the attribute does not exist \a defaultValue is returned. + Returns the attribute with the given \a name in \a namespaceUri. If the + attribute does not exist, \a defaultValue is returned. + + \sa setAttributeNS(), setAttribute(), attribute() */ QString QWebElement::attributeNS(const QString &namespaceUri, const QString &name, const QString &defaultValue) const { @@ -369,7 +406,10 @@ QString QWebElement::attributeNS(const QString &namespaceUri, const QString &nam } /*! - Returns true if this element has an attribute called \a name; otherwise returns false. + Returns true if this element has an attribute with the given \a name; + otherwise returns false. + + \sa attribute(), setAttribute() */ bool QWebElement::hasAttribute(const QString &name) const { @@ -379,8 +419,10 @@ bool QWebElement::hasAttribute(const QString &name) const } /*! - Returns true if this element has an attribute called \a name in the namespace described - with \a namespaceUri; otherwise returns false. + Returns true if this element has an attribute with the given \a name, in + \a namespaceUri; otherwise returns false. + + \sa attributeNS(), setAttributeNS() */ bool QWebElement::hasAttributeNS(const QString &namespaceUri, const QString &name) const { @@ -390,7 +432,9 @@ bool QWebElement::hasAttributeNS(const QString &namespaceUri, const QString &nam } /*! - Removes the attribute called \a name from this element. + Removes the attribute with the given \a name from this element. + + \sa attribute(), setAttribute(), hasAttribute() */ void QWebElement::removeAttribute(const QString &name) { @@ -401,8 +445,10 @@ void QWebElement::removeAttribute(const QString &name) } /*! - Removes the attribute called \a name in the namespace described with \a namespaceUri - from this element. + Removes the attribute with the given \a name, in \a namespaceUri, from this + element. + + \sa attributeNS(), setAttributeNS(), hasAttributeNS() */ void QWebElement::removeAttributeNS(const QString &namespaceUri, const QString &name) { @@ -413,7 +459,10 @@ void QWebElement::removeAttributeNS(const QString &namespaceUri, const QString & } /*! - Returns true if the element has any attributes defined; otherwise returns false; + Returns true if the element has any attributes defined; otherwise returns + false; + + \sa attribute(), setAttribute() */ bool QWebElement::hasAttributes() const { @@ -424,6 +473,8 @@ bool QWebElement::hasAttributes() const /*! Returns the geometry of this element, relative to its containing frame. + + \sa tagName() */ QRect QWebElement::geometry() const { @@ -434,6 +485,8 @@ QRect QWebElement::geometry() const /*! Returns the tag name of this element. + + \sa geometry() */ QString QWebElement::tagName() const { @@ -443,7 +496,8 @@ QString QWebElement::tagName() const } /*! - Returns the namespace prefix of the element or an empty string if the element has no namespace prefix. + Returns the namespace prefix of the element. If the element has no\ + namespace prefix, empty string is returned. */ QString QWebElement::prefix() const { @@ -453,8 +507,8 @@ QString QWebElement::prefix() const } /*! - If the element uses namespaces, this function returns the local name of the element; - otherwise it returns an empty string. + Returns the local name of the element. If the element does not use + namespaces, an empty string is returned. */ QString QWebElement::localName() const { @@ -464,7 +518,8 @@ QString QWebElement::localName() const } /*! - Returns the namespace URI of this element or an empty string if the element has no namespace URI. + Returns the namespace URI of this element. If the element has no namespace + URI, an empty string is returned. */ QString QWebElement::namespaceUri() const { @@ -474,8 +529,8 @@ QString QWebElement::namespaceUri() const } /*! - Returns the parent element of this element or a null element if this element - is the root document element. + Returns the parent element of this elemen. If this element is the root + document element, a null element is returned. */ QWebElement QWebElement::parent() const { @@ -485,9 +540,9 @@ QWebElement QWebElement::parent() const } /*! - Returns the first child element of this element. + Returns the element's first child. - \sa lastChild() previousSibling() nextSibling() + \sa lastChild(), previousSibling(), nextSibling() */ QWebElement QWebElement::firstChild() const { @@ -503,9 +558,9 @@ QWebElement QWebElement::firstChild() const } /*! - Returns the last child element of this element. + Returns the element's last child. - \sa firstChild() previousSibling() nextSibling() + \sa firstChild(), previousSibling(), nextSibling() */ QWebElement QWebElement::lastChild() const { @@ -521,9 +576,9 @@ QWebElement QWebElement::lastChild() const } /*! - Returns the next sibling element of this element. + Returns the element's next sibling. - \sa firstChild() previousSibling() lastChild() + \sa firstChild(), previousSibling(), lastChild() */ QWebElement QWebElement::nextSibling() const { @@ -539,9 +594,9 @@ QWebElement QWebElement::nextSibling() const } /*! - Returns the previous sibling element of this element. + Returns the element's previous sibling. - \sa firstChild() nextSibling() lastChild() + \sa firstChild(), nextSibling(), lastChild() */ QWebElement QWebElement::previousSibling() const { @@ -557,7 +612,7 @@ QWebElement QWebElement::previousSibling() const } /*! - Returns the document this element belongs to. + Returns the document which this element belongs to. */ QWebElement QWebElement::document() const { @@ -570,8 +625,8 @@ QWebElement QWebElement::document() const } /*! - Returns the web frame this elements is a part of. If the element is - a null element null is returned. + Returns the web frame which this element is a part of. If the element is a + null element, null is returned. */ QWebFrame *QWebElement::webFrame() const { @@ -647,7 +702,7 @@ static bool setupScriptObject(WebCore::Element* element, ScriptObject& object, S } /*! - Executes the \a scriptSource with this element as the `this' object. + Executes \a scriptSource with this element as \c this object. \sa callFunction() */ @@ -680,9 +735,10 @@ QVariant QWebElement::evaluateScript(const QString& scriptSource) /*! Calls the function with the given \a name and \a arguments. - The underlying DOM element that QWebElement wraps may have dedicated functions depending - on its type. For example a form element can have the "submit" function, that would submit - the form to the destination specified in the HTML. + The underlying DOM element that QWebElement wraps may have dedicated + functions, depending on its type. For example, a form element can have the + \c submit function, that would submit the form to the destination specified + in the HTML. \sa functions() */ @@ -713,7 +769,7 @@ QVariant QWebElement::callFunction(const QString &name, const QVariantList &argu /*! Returns a list of function names this element supports. - The function names returned are the same functions that are callable from the DOM + The function names returned are the same functions callable from the DOM element's JavaScript binding. \sa callFunction() @@ -763,14 +819,14 @@ QStringList QWebElement::functions() const } /*! - Returns the value of the element's \a name property. + Returns the value of the element's \a name property. If no such property + exists, an invalid QVariant is returned. - If no such property exists, the returned variant is invalid. + The return value's property has the same value as the corresponding + property in the element's JavaScript binding with the same name. - The return property has the same value as the corresponding property - in the element's JavaScript binding with the same name. - - Information about all available properties is provided through scriptProperties(). + Information about all available properties is provided through + scriptProperties(). \sa setScriptableProperty(), scriptableProperties() */ @@ -797,10 +853,11 @@ QVariant QWebElement::scriptableProperty(const QString &name) const /*! Sets the value of the element's \a name property to \a value. - Information about all available properties is provided through scriptProperties(). + Information about all available properties is provided through + scriptProperties(). - Setting the property will affect the corresponding property - in the element's JavaScript binding with the same name. + Setting the property will affect the corresponding property in the + element's JavaScript binding with the same name. \sa scriptableProperty(), scriptableProperties() */ @@ -827,8 +884,8 @@ void QWebElement::setScriptableProperty(const QString &name, const QVariant &val /*! Returns a list of property names this element supports. - The function names returned are the same properties that are accessible from the DOM - element's JavaScript binding. + The function names returned are the same properties that are accessible + from the DOM element's JavaScript binding. \sa setScriptableProperty(), scriptableProperty() */ @@ -894,10 +951,12 @@ QStringList QWebElement::scriptableProperties() const This enum describes how QWebElement's styleProperty resolves the given property name. - \value IgnoreCascadingStyles Return the property value as it is defined - in the element, without respecting style inheritance and other CSS rules. - \value RespectCascadingStyles The property's value is determined using - the inheritance and importance rules defined in the document's stylesheet. + \value IgnoreCascadingStyles Return the property value as it is defined in + the element, without respecting style inheritance and other CSS + rules. + \value RespectCascadingStyles The property's value is determined using the + inheritance and importance rules defined in the document's + stylesheet. */ /*! @@ -907,17 +966,17 @@ QStringList QWebElement::scriptableProperties() const This enum describes the priority newly set CSS properties should have when set using QWebElement::setStyleProperty(). - \value NormalStylePriority Define the property without important - priority even if "!important" is explicitly set in \a value. - \value DeclaredStylePriority Define the property respecting the - priority specified in \a value. - \value ImportantStylePriority Define the property to have - an important priority, this is equal to appending "!important" to the value. + \value NormalStylePriority Define the property without important priority + even if "!important" is explicitly set in \a value. + \value DeclaredStylePriority Define the property respecting the priority + specified in \a value. + \value ImportantStylePriority Define the property to have an important + priority. This is equal to appending "!important" to the value. */ /*! - Returns the value of the style named \a name or an empty string if such one - does not exist. + Returns the value of the style with the given \a name. If a style with + \a name does not exist, an empty string is returned. If \a rule is IgnoreCascadingStyles, the value defined inside the element (inline in CSS terminology) is returned. @@ -925,14 +984,17 @@ QStringList QWebElement::scriptableProperties() const if \a rule is RespectCascadingStyles, the actual style applied to the element is returned. - In CSS, the cascading part has to do with which CSS rule has priority and - is thus applied. Generally speaking, the last defined rule has priority, - thus an inline style rule has priority over an embedded block style rule, - which in return has priority over an external style rule. + In CSS, the cascading part depends on which CSS rule has priority and is + thus applied. Generally, the last defined rule has priority. Thus, an + inline style rule has priority over an embedded block style rule, which + in return has priority over an external style rule. + + If the "!important" declaration is set on one of those, the declaration + receives highest priority, unless other declarations also use the + "!important" declaration. Then, the last "!important" declaration takes + predecence. - If the !important declaration is set on one of those, the declaration gets - highest priority, unless other declarations also use the !important - declaration, in which the last !important declaration takes predecence. + \sa setStyleProperty() */ QString QWebElement::styleProperty(const QString &name, ResolveRule rule) const { @@ -981,9 +1043,9 @@ QString QWebElement::styleProperty(const QString &name, ResolveRule rule) const } /*! - Sets the value of the style named \a name to \a value. + Sets the value of the style with the given \a name to \a value. - Setting a value, doesn't necessarily mean that it will become the applied + Setting a value, does not necessarily mean that it will become the applied value, due to the fact that the style property's value might have been set earlier with priority in external or embedded style declarations. @@ -998,7 +1060,8 @@ QString QWebElement::styleProperty(const QString &name, ResolveRule rule) const Using NormalStylePriority as \a priority, the property will have normal priority, and any "!important" declaration will be ignored. On the other hand, using ImportantStylePriority sets the important priority even when - not explicit passed in \a value. + it is not explicitly passed in \a value. + By using DeclaredStylePriority as \a priority the property will respect the priority specified in \a value. */ @@ -1035,7 +1098,8 @@ void QWebElement::setStyleProperty(const QString &name, const QString &value, St } /*! - Returns the computed value for style named \a name or an empty string if the style has no such name. + Returns the computed value for style with the given \a name. If a style + with \a name does not exist, an empty string is returned. */ QString QWebElement::computedStyleProperty(const QString &name) const { @@ -1083,7 +1147,8 @@ QStringList QWebElement::classes() const } /*! - Returns true if this element has a class called \a name; otherwise returns false. + Returns true if this element has a class with the given \a name; otherwise + returns false. */ bool QWebElement::hasClass(const QString &name) const { @@ -1092,7 +1157,7 @@ bool QWebElement::hasClass(const QString &name) const } /*! - Adds the specified class \a name to the element. + Adds the specified class with the given \a name to the element. */ void QWebElement::addClass(const QString &name) { @@ -1105,7 +1170,7 @@ void QWebElement::addClass(const QString &name) } /*! - Removes the specified class \a name from the element. + Removes the specified class with the given \a name from the element. */ void QWebElement::removeClass(const QString &name) { @@ -1118,8 +1183,8 @@ void QWebElement::removeClass(const QString &name) } /*! - Adds the specified class \a name if it is not present, - removes it if it is already present. + Adds the specified class with the given \a name if it is not present. If + the class is already present, it will be removed. */ void QWebElement::toggleClass(const QString &name) { @@ -1134,11 +1199,11 @@ void QWebElement::toggleClass(const QString &name) } /*! - Appends \a element as the element's last child. + Appends the given \a element as the element's last child. - If \a element is the child of another element, it is re-parented - to this element. If \a element is a child of this element, then - its position in the list of children is changed. + If \a element is the child of another element, it is re-parented to this + element. If \a element is a child of this element, then its position in + the list of children is changed. Calling this function on a null element does nothing. @@ -1178,9 +1243,9 @@ void QWebElement::appendInside(const QString &markup) /*! Prepends \a element as the element's first child. - If \a element is the child of another element, it is re-parented - to this element. If \a element is a child of this element, then - its position in the list of children is changed. + If \a element is the child of another element, it is re-parented to this + element. If \a element is a child of this element, then its position in + the list of children is changed. Calling this function on a null element does nothing. @@ -1227,10 +1292,10 @@ void QWebElement::prependInside(const QString &markup) /*! - Inserts \a element before this element. + Inserts the given \a element before this element. - If \a element is the child of another element, it is re-parented - to the parent of this element. + If \a element is the child of another element, it is re-parented to the + parent of this element. Calling this function on a null element does nothing. @@ -1274,10 +1339,10 @@ void QWebElement::prependOutside(const QString &markup) } /*! - Inserts \a element after this element. + Inserts the given \a element after this element. - If \a element is the child of another element, it is re-parented - to the parent of this element. + If \a element is the child of another element, it is re-parented to the + parent of this element. Calling this function on a null element does nothing. @@ -1342,11 +1407,10 @@ QWebElement QWebElement::clone() const } /*! - Removes this element from the document and returns a reference - to this. + Removes this element from the document and returns a reference to it. - The element is still valid after removal, and can be inserted into - other parts of the document. + The element is still valid after removal, and can be inserted into other + parts of the document. \sa removeChildren(), removeFromDocument() */ @@ -1362,8 +1426,7 @@ QWebElement &QWebElement::takeFromDocument() } /*! - Removes this element from the document and makes this - a null element. + Removes this element from the document and makes it a null element. \sa removeChildren(), takeFromDocument() */ @@ -1414,9 +1477,10 @@ static RefPtr<Node> findInsertionPoint(PassRefPtr<Node> root) } /*! - Enclose the contents of this element in \a element as the child - of the deepest descendant element within the structure of the - first element provided. + Encloses the contents of this element with \a element. This element becomes + the child of the deepest descendant within \a element. + + ### illustration \sa encloseWith() */ @@ -1446,9 +1510,8 @@ void QWebElement::encloseContentsWith(const QWebElement &element) } /*! - Enclose the contents of this element in the result of parsing - \a markup as the child of the deepest descendant element within - the structure of the first element provided. + Encloses the contents of this element with the result of parsing \a markup. + This element becomes the child of the deepest descendant within \a markup. \sa encloseWith() */ @@ -1490,9 +1553,8 @@ void QWebElement::encloseContentsWith(const QString &markup) } /*! - Enclose this element in \a element as the child of the deepest - descendant element within the structure of the first element - provided. + Encloses this element with \a element. This element becomes the child of + the deepest descendant within \a element. \sa replace() */ @@ -1523,8 +1585,8 @@ void QWebElement::encloseWith(const QWebElement &element) } /*! - Enclose this element in the result of parsing \a markup, - as the last child. + Encloses this element with the result of parsing \a markup. This element + becomes the child of the deepest descendant within \a markup. \sa replace() */ @@ -1569,8 +1631,7 @@ void QWebElement::encloseWith(const QString &markup) /*! Replaces this element with \a element. - It is not possible to replace the <html>, <head>, or <body> - elements using this method. + This method will not replace the <html>, <head> or <body> elements. \sa encloseWith() */ @@ -1586,8 +1647,7 @@ void QWebElement::replace(const QWebElement &element) /*! Replaces this element with the result of parsing \a markup. - It is not possible to replace the <html>, <head>, or <body> - elements using this method. + This method will not replace the <html>, <head> or <body> elements. \sa encloseWith() */ @@ -1603,11 +1663,13 @@ void QWebElement::replace(const QString &markup) /*! \fn inline bool QWebElement::operator==(const QWebElement& o) const; - Returns true if this element points to the same underlying DOM object than \a o; otherwise returns false. + Returns true if this element points to the same underlying DOM object as + \a o; otherwise returns false. */ /*! \fn inline bool QWebElement::operator!=(const QWebElement& o) const; - Returns true if this element points to a different underlying DOM object than \a o; otherwise returns false. + Returns true if this element points to a different underlying DOM object + than \a o; otherwise returns false. */ diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp index 23cb473..f2fe108 100644 --- a/src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp +++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp @@ -268,6 +268,8 @@ void QWebFramePrivate::renderPrivate(QPainter *painter, const QRegion &clip) \since 4.4 \brief The QWebFrame class represents a frame in a web page. + \inmodule QtWebKit + QWebFrame represents a frame inside a web page. Each QWebPage object contains at least one frame, the main frame, obtained using QWebPage::mainFrame(). Additional frames will be created for HTML @@ -1360,6 +1362,8 @@ QWebFrame* QWebFramePrivate::kit(WebCore::Frame* coreFrame) \brief The QWebHitTestResult class provides information about the web page content after a hit test. + \inmodule QtWebKit + QWebHitTestResult is returned by QWebFrame::hitTestContent() to provide information about the content of the web page at the specified position. */ diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebhistory.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebhistory.cpp index 1c1c72a..b11ae56 100644 --- a/src/3rdparty/webkit/WebKit/qt/Api/qwebhistory.cpp +++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebhistory.cpp @@ -35,6 +35,8 @@ \since 4.4 \brief The QWebHistoryItem class represents one item in the history of a QWebPage + \inmodule QtWebKit + Each QWebHistoryItem instance represents an entry in the history stack of a Web page, containing information about the page, its location, and when it was last visited. @@ -201,6 +203,8 @@ bool QWebHistoryItem::isValid() const \since 4.4 \brief The QWebHistory class represents the history of a QWebPage + \inmodule QtWebKit + Each QWebPage instance contains a history of visited pages that can be accessed by QWebPage::history(). QWebHistory represents this history and makes it possible to navigate it. diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebhistoryinterface.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebhistoryinterface.cpp index 87d52ce..80567d1 100644 --- a/src/3rdparty/webkit/WebKit/qt/Api/qwebhistoryinterface.cpp +++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebhistoryinterface.cpp @@ -81,6 +81,8 @@ QWebHistoryInterface* QWebHistoryInterface::defaultInterface() \since 4.4 \brief The QWebHistoryInterface class provides an interface to implement link history. + \inmodule QtWebKit + The QWebHistoryInterface is an interface that can be used to implement link history. It contains two pure virtual methods that are called by the WebKit engine. addHistoryEntry() is used to add diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp index 613a72f..7860cec 100644 --- a/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp +++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp @@ -1224,6 +1224,8 @@ QVariant QWebPage::inputMethodQuery(Qt::InputMethodQuery property) const \since 4.4 \brief The QWebPage class provides an object to view and edit web documents. + \inmodule QtWebKit + QWebPage holds a main frame responsible for web content, settings, the history of navigated links and actions. This class can be used, together with QWebFrame, to provide functionality like QWebView in a widget-less environment. @@ -2307,6 +2309,8 @@ void QWebPage::updatePositionDependentActions(const QPoint &pos) \since 4.4 \brief The ExtensionOption class provides an extended input argument to QWebPage's extension support. + \inmodule QtWebKit + \sa QWebPage::extension() */ @@ -2316,6 +2320,8 @@ void QWebPage::updatePositionDependentActions(const QPoint &pos) \brief The ChooseMultipleFilesExtensionOption class describes the option for the multiple files selection extension. + \inmodule QtWebKit + The ChooseMultipleFilesExtensionOption class holds the frame originating the request and the suggested filenames which might be provided. @@ -2328,6 +2334,8 @@ void QWebPage::updatePositionDependentActions(const QPoint &pos) \brief The ChooseMultipleFilesExtensionReturn describes the return value for the multiple files selection extension. + \inmodule QtWebKit + The ChooseMultipleFilesExtensionReturn class holds the filenames selected by the user when the extension is invoked. diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebpluginfactory.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebpluginfactory.cpp index d2bb124..e3b7efe 100644 --- a/src/3rdparty/webkit/WebKit/qt/Api/qwebpluginfactory.cpp +++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebpluginfactory.cpp @@ -26,6 +26,8 @@ \brief The QWebPluginFactory class creates plugins to be embedded into web pages. + \inmodule QtWebKit + QWebPluginFactory is a factory for creating plugins for QWebPage. A plugin factory can be installed on a QWebPage using QWebPage::setPluginFactory(). @@ -47,6 +49,8 @@ \class QWebPluginFactory::Plugin \since 4.4 \brief the QWebPluginFactory::Plugin structure describes the properties of a plugin a QWebPluginFactory can create. + + \inmodule QtWebKit */ /*! @@ -68,6 +72,8 @@ \class QWebPluginFactory::MimeType \since 4.4 \brief The QWebPluginFactory::MimeType structure describes a mime type supported by a plugin. + + \inmodule QtWebKit */ /*! @@ -173,6 +179,8 @@ void QWebPluginFactory::refreshPlugins() \since 4.4 \brief The ExtensionOption class provides an extended input argument to QWebPluginFactory's extension support. + \inmodule QtWebKit + \sa QWebPluginFactory::extension() */ @@ -181,6 +189,8 @@ void QWebPluginFactory::refreshPlugins() \since 4.4 \brief The ExtensionOption class provides an extended output argument to QWebPluginFactory's extension support. + \inmodule QtWebKit + \sa QWebPluginFactory::extension() */ diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebsecurityorigin.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebsecurityorigin.cpp index d2eaf10..ed2e959 100644 --- a/src/3rdparty/webkit/WebKit/qt/Api/qwebsecurityorigin.cpp +++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebsecurityorigin.cpp @@ -35,6 +35,8 @@ using namespace WebCore; \since 4.5 \brief The QWebSecurityOrigin class defines a security boundary for web sites. + \inmodule QtWebKit + QWebSecurityOrigin provides access to the security domains defined by web sites. An origin consists of a host name, a scheme, and a port number. Web sites with the same security origin can access each other's resources for client-side diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.cpp index fb94d55..89595c3 100644 --- a/src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.cpp +++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.cpp @@ -219,6 +219,8 @@ QWebSettings* QWebSettings::globalSettings() \brief The QWebSettings class provides an object to store the settings used by QWebPage and QWebFrame. + \inmodule QtWebKit + Each QWebPage object has its own QWebSettings object, which configures the settings for that page. If a setting is not configured, then it is looked up in the global settings object, which can be accessed using diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebview.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebview.cpp index e1a0c98..422b5e6 100644 --- a/src/3rdparty/webkit/WebKit/qt/Api/qwebview.cpp +++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebview.cpp @@ -77,6 +77,8 @@ public: web documents. \ingroup advanced + \inmodule QtWebKit + QWebView is the main widget component of the QtWebKit web browsing module. It can be used in various applications to display web content live from the Internet. diff --git a/src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdoc b/src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdoc index f3681ee..144feb5 100644 --- a/src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdoc +++ b/src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdoc @@ -4,15 +4,67 @@ \contentspage Qt's Modules \previouspage QtSvg \nextpage QtXml - \ingroup architecture \ingroup modules - \brief An introduction to the QtWebKit module. + \brief The QtWebKit module provides a web browser engine as well as + classes to render and interact with web content. - \keyword Browser - \keyword Web Browser + To include the definitions of the module's classes, use the + following directive: + + \snippet webkitsnippets/qtwebkit_build_snippet.qdoc 1 + + To link against the module, add this line to your \l qmake \c + .pro file: + + \snippet webkitsnippets/qtwebkit_build_snippet.qdoc 0 + + \section1 License Information + + This is a snapshot of the Qt port of WebKit. The exact version information + can be found in the \c{src/3rdparty/webkit/VERSION} file supplied with Qt. + + Qt Commercial Edition licensees that wish to distribute applications that + use the QtWebKit module need to be aware of their obligations under the + GNU Lesser General Public License (LGPL). + + Developers using the Open Source Edition can choose to redistribute + the module under the appropriate version of the GNU LGPL; version 2.1 + for applications and libraries licensed under the GNU GPL version 2, + or version 3 for applications and libraries licensed under the GNU + GPL version 2. + + \legalese + WebKit is licensed under the GNU Library General Public License. + Individual contributor names and copyright dates can be found + inline in the code. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + This library 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. + \endlegalese +*/ + +/*! + \page webintegration.html + \title Integrating Web Content with QtWebKit \since 4.4 + \ingroup frameworks-technologies + + \keyword Browser + \keyword Web Browser + QtWebKit provides a Web browser engine that makes it easy to embed content from the World Wide Web into your Qt application. At the same time Web content can be enhanced with native controls. @@ -55,20 +107,6 @@ \tableofcontents - \section1 Configuring the Build Process - - Applications using QtWebKit's classes need to be configured to be built - against the QtWebKit module. The following declaration in a \c qmake - project file ensures that an application is compiled and linked - appropriately: - - \snippet webkitsnippets/qtwebkit_build_snippet.qdoc 0 - - To include the definitions of the module's classes, use the following - directive: - - \snippet webkitsnippets/qtwebkit_build_snippet.qdoc 1 - \section1 Architecture The easiest way to render content is through the QWebView class. As a @@ -158,40 +196,4 @@ \o The system \c{/Library/Internet Plug-Ins} directory \endlist \endtable - - \section1 License Information - - This is a snapshot of the Qt port of WebKit. The exact version information - can be found in the \c{src/3rdparty/webkit/VERSION} file supplied with Qt. - - Qt Commercial Edition licensees that wish to distribute applications that - use the QtWebKit module need to be aware of their obligations under the - GNU Lesser General Public License (LGPL). - - Developers using the Open Source Edition can choose to redistribute - the module under the appropriate version of the GNU LGPL; version 2.1 - for applications and libraries licensed under the GNU GPL version 2, - or version 3 for applications and libraries licensed under the GNU - GPL version 2. - - \legalese - WebKit is licensed under the GNU Library General Public License. - Individual contributor names and copyright dates can be found - inline in the code. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. - \endlegalese */ diff --git a/src/corelib/animation/qparallelanimationgroup_p.h b/src/corelib/animation/qparallelanimationgroup_p.h index 65bf693..db804d5 100644 --- a/src/corelib/animation/qparallelanimationgroup_p.h +++ b/src/corelib/animation/qparallelanimationgroup_p.h @@ -55,7 +55,7 @@ #include "qparallelanimationgroup.h" #include "private/qanimationgroup_p.h" -#include <QtCore/QHash> +#include <QtCore/qhash.h> #ifndef QT_NO_ANIMATION diff --git a/src/corelib/animation/qpropertyanimation.cpp b/src/corelib/animation/qpropertyanimation.cpp index 598e994..35d65d0 100644 --- a/src/corelib/animation/qpropertyanimation.cpp +++ b/src/corelib/animation/qpropertyanimation.cpp @@ -43,7 +43,7 @@ \class QPropertyAnimation \brief The QPropertyAnimation class animates Qt properties \since 4.6 - \mainclass + \ingroup animation QPropertyAnimation interpolates over \l{Qt's Property System}{Qt @@ -293,7 +293,12 @@ void QPropertyAnimation::updateState(QAbstractAnimation::State oldState, hash.insert(key, this); // update the default start value if (oldState == Stopped) { - d->setDefaultStartValue(d->target->property(d->propertyName.constData())); + d->setDefaultStartEndValue(d->target->property(d->propertyName.constData())); + //let's check if we have a start value and an end value + if (d->direction == Forward && !startValue().isValid() && !d->defaultStartEndValue.isValid()) + qWarning("QPropertyAnimation::updateState: starting an animation without start value"); + if (d->direction == Backward && !endValue().isValid() && !d->defaultStartEndValue.isValid()) + qWarning("QPropertyAnimation::updateState: starting an animation without end value"); } } else if (hash.value(key) == this) { hash.remove(key); diff --git a/src/corelib/animation/qvariantanimation.cpp b/src/corelib/animation/qvariantanimation.cpp index e647318..fc11815 100644 --- a/src/corelib/animation/qvariantanimation.cpp +++ b/src/corelib/animation/qvariantanimation.cpp @@ -220,52 +220,39 @@ void QVariantAnimationPrivate::updateInterpolator() */ void QVariantAnimationPrivate::recalculateCurrentInterval(bool force/*=false*/) { - // can't interpolate if we have only 1 key value - if ((keyValues.count() + (defaultStartValue.isValid() ? 1 : 0)) <=1) + // can't interpolate if we don't have at least 2 values + if ((keyValues.count() + (defaultStartEndValue.isValid() ? 1 : 0)) < 2) return; const qreal progress = easing.valueForProgress(((duration == 0) ? qreal(1) : qreal(currentTime) / qreal(duration))); - if (force || progress < currentInterval.start.first || progress > currentInterval.end.first) { + //0 and 1 are still the boundaries + if (force || (currentInterval.start.first > 0 && progress < currentInterval.start.first) + || (currentInterval.end.first < 1 && progress > currentInterval.end.first)) { //let's update currentInterval QVariantAnimation::KeyValues::const_iterator it = qLowerBound(keyValues.constBegin(), - keyValues.constEnd(), - qMakePair(progress, QVariant()), - animationValueLessThan); - if (it == keyValues.constEnd()) { - if (direction == QVariantAnimation::Backward && defaultStartValue.isValid()) { - --it; - if (it->first == 1) { - //we have an end value (item with progress = 1) - currentInterval.start = *(it-1); - currentInterval.end = *it; - } else if (direction == QVariantAnimation::Backward && defaultStartValue.isValid()) { - //the default start value should be used as the default end value - currentInterval.start = *it; - currentInterval.end = qMakePair(qreal(1), defaultStartValue); - } else { - ///This should not happen - } - } - } else if (it == keyValues.constBegin()) { - if (it+1 != keyValues.constEnd() && (it->first == progress || it->first == 0)) { - //the item pointed to by it is the start element in the range - //we also test if the current element is for progress 0 (ie the real start) because - //some easing curves might get the progress below 0. + keyValues.constEnd(), + qMakePair(progress, QVariant()), + animationValueLessThan); + if (it == keyValues.constBegin()) { + //the item pointed to by it is the start element in the range + if (it->first == 0 && keyValues.count() > 1) { currentInterval.start = *it; currentInterval.end = *(it+1); - } else if (defaultStartValue.isValid()) { - if (direction == QVariantAnimation::Forward) { - //we should have an end value - currentInterval.start = qMakePair(qreal(0), defaultStartValue); - currentInterval.end = *it; - } else { - //we should have a start value - currentInterval.start = *it; - currentInterval.end = qMakePair(qreal(1), defaultStartValue); - } } else { - ///this should not happen + currentInterval.start = qMakePair(qreal(0), defaultStartEndValue); + currentInterval.end = *it; + } + } else if (it == keyValues.constEnd()) { + --it; //position the iterator on the last item + if (it->first == 1 && keyValues.count() > 1) { + //we have an end value (item with progress = 1) + currentInterval.start = *(it-1); + currentInterval.end = *it; + } else { + //we use the default end value here + currentInterval.start = *it; + currentInterval.end = qMakePair(qreal(1), defaultStartEndValue); } } else { currentInterval.start = *(it-1); @@ -329,9 +316,9 @@ void QVariantAnimationPrivate::setValueAt(qreal step, const QVariant &value) recalculateCurrentInterval(/*force=*/true); } -void QVariantAnimationPrivate::setDefaultStartValue(const QVariant &value) +void QVariantAnimationPrivate::setDefaultStartEndValue(const QVariant &value) { - defaultStartValue = value; + defaultStartEndValue = value; recalculateCurrentInterval(/*force=*/true); } diff --git a/src/corelib/animation/qvariantanimation_p.h b/src/corelib/animation/qvariantanimation_p.h index 9c9d25b..ef57a4c 100644 --- a/src/corelib/animation/qvariantanimation_p.h +++ b/src/corelib/animation/qvariantanimation_p.h @@ -76,14 +76,14 @@ public: return q->d_func(); } - void setDefaultStartValue(const QVariant &value); + void setDefaultStartEndValue(const QVariant &value); int duration; QEasingCurve easing; QVariantAnimation::KeyValues keyValues; QVariant currentValue; - QVariant defaultStartValue; + QVariant defaultStartEndValue; //this is used to keep track of the KeyValue interval in which we currently are struct diff --git a/src/corelib/codecs/codecs.pri b/src/corelib/codecs/codecs.pri index 2e247e5..724b18d 100644 --- a/src/corelib/codecs/codecs.pri +++ b/src/corelib/codecs/codecs.pri @@ -29,7 +29,7 @@ unix { SOURCES += codecs/qiconvcodec.cpp DEFINES += GNU_LIBICONV - !mac:LIBS *= -liconv + !mac:LIBS_PRIVATE *= -liconv } else { # no iconv, so we put all plugins in the library HEADERS += \ diff --git a/src/corelib/codecs/codecs.qdoc b/src/corelib/codecs/codecs.qdoc new file mode 100644 index 0000000..9cffa85 --- /dev/null +++ b/src/corelib/codecs/codecs.qdoc @@ -0,0 +1,546 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \group codecs + \title Codecs + \ingroup groups + \brief Codec support in Qt. + + These codecs provide facilities for conversion between Unicode and + specific text encodings. + + \generatelist{related} +*/ + +/*! + \page codec-big5.html + \title Big5 Text Codec + \ingroup codecs + + The Big5 codec provides conversion to and from the Big5 encoding. + The code was originally contributed by Ming-Che Chuang + \<mingche@cobra.ee.ntu.edu.tw\> for the Big-5+ encoding, and was + included in Qt with the author's permission, and the grateful + thanks of the Qt team. (Note: Ming-Che's code is QPL'd, as + per an mail to qt-info@nokia.com.) + + However, since Big-5+ was never formally approved, and was never + used by anyone, the Taiwan Free Software community and the Li18nux + Big5 Standard Subgroup agree that the de-facto standard Big5-ETen + (zh_TW.Big5 or zh_TW.TW-Big5) be used instead. + + The Big5 is currently implemented as a pure subset of the + Big5-HKSCS codec, so more fine-tuning is needed to make it + identical to the standard Big5 mapping as determined by + Li18nux-Big5. See \l{http://www.autrijus.org/xml/} for the draft + Big5 (2002) standard. + + James Su \<suzhe@turbolinux.com.cn\> \<suzhe@gnuchina.org\> + generated the Big5-HKSCS-to-Unicode tables with a very + space-efficient algorithm. He generously donated his code to glibc + in May 2002. Subsequently, James has kindly allowed Anthony Fok + \<anthony@thizlinux.com\> \<foka@debian.org\> to adapt the code + for Qt. + + \legalese + Copyright (C) 2000 Ming-Che Chuang \BR + Copyright (C) 2002 James Su, Turbolinux Inc. \BR + Copyright (C) 2002 Anthony Fok, ThizLinux Laboratory Ltd. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + \list 1 + \o Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + \o Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + \endlist + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + \endlegalese +*/ + +/*! + \page codec-big5hkscs.html + \title Big5-HKSCS Text Codec + \ingroup codecs + + The Big5-HKSCS codec provides conversion to and from the + Big5-HKSCS encoding. + + The codec grew out of the QBig5Codec originally contributed by + Ming-Che Chuang \<mingche@cobra.ee.ntu.edu.tw\>. James Su + \<suzhe@turbolinux.com.cn\> \<suzhe@gnuchina.org\> and Anthony Fok + \<anthony@thizlinux.com\> \<foka@debian.org\> implemented HKSCS-1999 + QBig5hkscsCodec for Qt-2.3.x, but it was too late in Qt development + schedule to be officially included in the Qt-2.3.x series. + + Wu Yi \<wuyi@hancom.com\> ported the HKSCS-1999 QBig5hkscsCodec to + Qt-3.0.1 in March 2002. + + With the advent of the new HKSCS-2001 standard, James Su + \<suzhe@turbolinux.com.cn\> \<suzhe@gnuchina.org\> generated the + Big5-HKSCS<->Unicode tables with a very space-efficient algorithm. + He generously donated his code to glibc in May 2002. Subsequently, + James has generously allowed Anthony Fok to adapt the code for + Qt-3.0.5. + + Currently, the Big5-HKSCS tables are generated from the following + sources, and with the Euro character added: + \list 1 + \o \l{http://www.microsoft.com/typography/unicode/950.txt} + \o \l{http://www.info.gov.hk/digital21/chi/hkscs/download/big5-iso.txt} + \o \l{http://www.info.gov.hk/digital21/chi/hkscs/download/big5cmp.txt} + \endlist + + There may be more fine-tuning to the QBig5hkscsCodec to maximize its + compatibility with the standard Big5 (2002) mapping as determined by + Li18nux Big5 Standard Subgroup. See \l{http://www.autrijus.org/xml/} + for the various Big5 CharMapML tables. + + \legalese + Copyright (C) 2000 Ming-Che Chuang \BR + Copyright (C) 2001, 2002 James Su, Turbolinux Inc. \BR + Copyright (C) 2002 WU Yi, HancomLinux Inc. \BR + Copyright (C) 2001, 2002 Anthony Fok, ThizLinux Laboratory Ltd. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + \list 1 + \o Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + \o Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + \endlist + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + \endlegalese +*/ + +/*! + \page codec-eucjp.html + \title EUC-JP Text Codec + \ingroup codecs + + The EUC-JP codec provides conversion to and from EUC-JP, the main + legacy encoding for Unix machines in Japan. + + The environment variable \c UNICODEMAP_JP can be used to + fine-tune the JIS, Shift-JIS, and EUC-JP codecs. The \l{ISO + 2022-JP (JIS) Text Codec} documentation describes how to use this + variable. + + Most of the code here was written by Serika Kurusugawa, + a.k.a. Junji Takagi, and is included in Qt with the author's + permission and the grateful thanks of the Qt team. Here is + the copyright statement for that code: + + \legalese + + Copyright (C) 1999 Serika Kurusugawa. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + \list 1 + \o Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + \o Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + \endlist + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS". + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + \endlegalese +*/ + +/*! + \page codec-euckr.html + \title EUC-KR Text Codec + \ingroup codecs + + The EUC-KR codec provides conversion to and from EUC-KR, KR, the + main legacy encoding for Unix machines in Korea. + + It was largely written by Mizi Research Inc. Here is the + copyright statement for the code as it was at the point of + contribution. The subsequent modifications are covered by + the usual copyright for Qt. + + \legalese + + Copyright (C) 1999-2000 Mizi Research Inc. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + \list 1 + \o Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + \o Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + \endlist + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + \endlegalese +*/ + +/*! + \page codec-gbk.html + \title GBK Text Codec + \ingroup codecs + + The GBK codec provides conversion to and from the Chinese + GB18030/GBK/GB2312 encoding. + + GBK, formally the Chinese Internal Code Specification, is a commonly + used extension of GB 2312-80. Microsoft Windows uses it under the + name codepage 936. + + GBK has been superseded by the new Chinese national standard + GB 18030-2000, which added a 4-byte encoding while remaining + compatible with GB2312 and GBK. The new GB 18030-2000 may be described + as a special encoding of Unicode 3.x and ISO-10646-1. + + Special thanks to charset gurus Markus Scherer (IBM), + Dirk Meyer (Adobe Systems) and Ken Lunde (Adobe Systems) for publishing + an excellent GB 18030-2000 summary and specification on the Internet. + Some must-read documents are: + + \list + \o \l{ftp://ftp.oreilly.com/pub/examples/nutshell/cjkv/pdf/GB18030_Summary.pdf} + \o \l{http://oss.software.ibm.com/cvs/icu/~checkout~/charset/source/gb18030/gb18030.html} + \o \l{http://oss.software.ibm.com/cvs/icu/~checkout~/charset/data/xml/gb-18030-2000.xml} + \endlist + + The GBK codec was contributed to Qt by + Justin Yu \<justiny@turbolinux.com.cn\> and + Sean Chen \<seanc@turbolinux.com.cn\>. They may also be reached at + Yu Mingjian \<yumj@sun.ihep.ac.cn\>, \<yumingjian@china.com\> + Chen Xiangyang \<chenxy@sun.ihep.ac.cn\> + + The GB18030 codec Qt functions were contributed to Qt by + James Su \<suzhe@gnuchina.org\>, \<suzhe@turbolinux.com.cn\> + who pioneered much of GB18030 development on GNU/Linux systems. + + The GB18030 codec was contributed to Qt by + Anthony Fok \<anthony@thizlinux.com\>, \<foka@debian.org\> + using a Perl script to generate C++ tables from gb-18030-2000.xml + while merging contributions from James Su, Justin Yu and Sean Chen. + A copy of the source Perl script is available at + \l{http://people.debian.org/~foka/gb18030/gen-qgb18030codec.pl} + + The copyright notice for their code follows: + + \legalese + Copyright (C) 2000 TurboLinux, Inc. Written by Justin Yu and Sean Chen. \BR + Copyright (C) 2001, 2002 Turbolinux, Inc. Written by James Su. \BR + Copyright (C) 2001, 2002 ThizLinux Laboratory Ltd. Written by Anthony Fok. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + \list 1 + \o Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + \o Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + \endlist + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + \endlegalese +*/ + +/*! + \page codecs-jis.html + \title ISO 2022-JP (JIS) Text Codec + \ingroup codecs + + The JIS codec provides conversion to and from ISO 2022-JP. + + The environment variable \c UNICODEMAP_JP can be used to + fine-tune the JIS, Shift-JIS, and EUC-JP codecs. The mapping + names are as for the Japanese XML working group's \link + http://www.y-adagio.com/public/standards/tr_xml_jpf/toc.htm XML + Japanese Profile\endlink, because it names and explains all the + widely used mappings. Here are brief descriptions, written by + Serika Kurusugawa: + + \list + + \o "unicode-0.9" or "unicode-0201" for Unicode style. This assumes + JISX0201 for 0x00-0x7f. (0.9 is a table version of jisx02xx mapping + used for Unicode 1.1.) + + \o "unicode-ascii" This assumes US-ASCII for 0x00-0x7f; some + chars (JISX0208 0x2140 and JISX0212 0x2237) are different from + Unicode 1.1 to avoid conflict. + + \o "open-19970715-0201" ("open-0201" for convenience) or + "jisx0221-1995" for JISX0221-JISX0201 style. JIS X 0221 is JIS + version of Unicode, but a few chars (0x5c, 0x7e, 0x2140, 0x216f, + 0x2131) are different from Unicode 1.1. This is used when 0x5c is + treated as YEN SIGN. + + \o "open-19970715-ascii" ("open-ascii" for convenience) for + JISX0221-ASCII style. This is used when 0x5c is treated as REVERSE + SOLIDUS. + + \o "open-19970715-ms" ("open-ms" for convenience) or "cp932" for + Microsoft Windows style. Windows Code Page 932. Some chars (0x2140, + 0x2141, 0x2142, 0x215d, 0x2171, 0x2172) are different from Unicode + 1.1. + + \o "jdk1.1.7" for Sun's JDK style. Same as Unicode 1.1, except that + JIS 0x2140 is mapped to UFF3C. Either ASCII or JISX0201 can be used + for 0x00-0x7f. + + \endlist + + In addition, the extensions "nec-vdc", "ibm-vdc" and "udc" are + supported. + + For example, if you want to use Unicode style conversion but with + NEC's extension, set \c UNICODEMAP_JP to \c {unicode-0.9, + nec-vdc}. (You will probably need to quote that in a shell + command.) + + Most of the code here was written by Serika Kurusugawa, + a.k.a. Junji Takagi, and is included in Qt with the author's + permission and the grateful thanks of the Qt team. Here is + the copyright statement for that code: + + \legalese + + Copyright (C) 1999 Serika Kurusugawa. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + \list 1 + \o Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + \o Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + \endlist + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS". + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + \endlegalese +*/ + +/*! + \page codec-sjis.html + \title Shift-JIS Text Codec + \ingroup codecs + + The Shift-JIS codec provides conversion to and from Shift-JIS, an + encoding of JIS X 0201 Latin, JIS X 0201 Kana and JIS X 0208. + + The environment variable \c UNICODEMAP_JP can be used to + fine-tune the codec. The \l{ISO 2022-JP (JIS) Text Codec} + documentation describes how to use this variable. + + Most of the code here was written by Serika Kurusugawa, a.k.a. + Junji Takagi, and is included in Qt with the author's permission + and the grateful thanks of the Qt team. Here is the + copyright statement for the code as it was at the point of + contribution. The subsequent modifications are covered by + the usual copyright for Qt. + + \legalese + + Copyright (C) 1999 Serika Kurusugawa. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + \list 1 + \o Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + \o Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + \endlist + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS". + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + \endlegalese +*/ + +/*! + \page codec-tscii.html + \title TSCII Text Codec + \ingroup codecs + + The TSCII codec provides conversion to and from the Tamil TSCII + encoding. + + TSCII, formally the Tamil Standard Code Information Interchange + specification, is a commonly used charset for Tamils. The + official page for the standard is at + \link http://www.tamil.net/tscii/ http://www.tamil.net/tscii/\endlink + + This codec uses the mapping table found at + \link http://www.geocities.com/Athens/5180/tsciiset.html + http://www.geocities.com/Athens/5180/tsciiset.html\endlink. + Tamil uses composed Unicode which might cause some + problems if you are using Unicode fonts instead of TSCII fonts. + + Most of the code was written by Hans Petter Bieker and is + included in Qt with the author's permission and the grateful + thanks of the Qt team. Here is the copyright statement for + the code as it was at the point of contribution. The + subsequent modifications are covered by the usual copyright for + Qt: + + \legalese + + Copyright (c) 2000 Hans Petter Bieker. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + \list 1 + \o Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + \o Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + \endlist + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + \endlegalese +*/ diff --git a/src/corelib/concurrent/qfuture.cpp b/src/corelib/concurrent/qfuture.cpp index a366a4b..f0c1e34 100644 --- a/src/corelib/concurrent/qfuture.cpp +++ b/src/corelib/concurrent/qfuture.cpp @@ -44,8 +44,10 @@ \brief The QFuture class represents the result of an asynchronous computation. \since 4.4 + \ingroup thread + To start a computation, use one of the APIs in the - \l {threads.html#qtconcurrent-intro}{Qt Concurrent} framework. + \l {Concurrent Programming}{Qt Concurrent} framework. QFuture allows threads to be synchronized against one or more results which will be ready at a later point in time. The result can be of any type @@ -90,7 +92,7 @@ To interact with running tasks using signals and slots, use QFutureWatcher. - \sa QFutureWatcher, {threads.html#qtconcurrent-intro}{Qt Concurrent} + \sa QFutureWatcher, {Concurrent Programming}{Qt Concurrent} */ /*! \fn QFuture::QFuture() diff --git a/src/corelib/concurrent/qfuturesynchronizer.cpp b/src/corelib/concurrent/qfuturesynchronizer.cpp index 1fd7198..dfb693e 100644 --- a/src/corelib/concurrent/qfuturesynchronizer.cpp +++ b/src/corelib/concurrent/qfuturesynchronizer.cpp @@ -44,7 +44,9 @@ \brief The QFutureSynchronizer class is a convenience class that simplifies QFuture synchronization. - + + \ingroup thread + QFutureSynchronizer is a template class that simplifies synchronization of one or more QFuture objects. Futures are added using the addFuture() or setFuture() functions. The futures() function returns a list of futures. @@ -63,7 +65,7 @@ You can query the status of the cancel-on-wait feature using the cancelOnWait() function. - \sa QFuture, QFutureWatcher, {threads.html#qtconcurrent-intro}{Qt Concurrent} + \sa QFuture, QFutureWatcher, {Concurrent Programming}{Qt Concurrent} */ /*! diff --git a/src/corelib/concurrent/qfuturewatcher.cpp b/src/corelib/concurrent/qfuturewatcher.cpp index f0f06f9..84715b4 100644 --- a/src/corelib/concurrent/qfuturewatcher.cpp +++ b/src/corelib/concurrent/qfuturewatcher.cpp @@ -43,9 +43,9 @@ #ifndef QT_NO_QFUTURE -#include <QEvent> -#include <QCoreApplication> -#include <QThread> +#include <QtCore/qcoreevent.h> +#include <QtCore/qcoreapplication.h> +#include <QtCore/qthread.h> #include "qfuturewatcher_p.h" @@ -55,6 +55,8 @@ QT_BEGIN_NAMESPACE \reentrant \since 4.4 + \ingroup thread + \brief The QFutureWatcher class allows monitoring a QFuture using signals and slots. @@ -94,7 +96,7 @@ QT_BEGIN_NAMESPACE QFutureWatcher<void> as well. This is useful if only status or progress information is needed; not the actual result data. - \sa QFuture, {threads.html#qtconcurrent-intro}{Qt Concurrent} + \sa QFuture, {Concurrent Programming}{Qt Concurrent} */ /*! \fn QFutureWatcher::QFutureWatcher(QObject *parent) diff --git a/src/corelib/concurrent/qfuturewatcher_p.h b/src/corelib/concurrent/qfuturewatcher_p.h index 69a28eb..8fb0e4f 100644 --- a/src/corelib/concurrent/qfuturewatcher_p.h +++ b/src/corelib/concurrent/qfuturewatcher_p.h @@ -54,7 +54,7 @@ // #include "qfutureinterface_p.h" -#include <QList> +#include <qlist.h> #ifndef QT_NO_QFUTURE diff --git a/src/corelib/concurrent/qrunnable.cpp b/src/corelib/concurrent/qrunnable.cpp index 86a099b..db33803 100644 --- a/src/corelib/concurrent/qrunnable.cpp +++ b/src/corelib/concurrent/qrunnable.cpp @@ -44,6 +44,8 @@ \since 4.4 \brief The QRunnable class is the base class for all runnable objects. + \ingroup thread + The QRunnable class is an interface for representing a task or piece of code that needs to be executed, represented by your reimplementation of the run() function. diff --git a/src/corelib/concurrent/qtconcurrentfilter.cpp b/src/corelib/concurrent/qtconcurrentfilter.cpp index f4572b8..4ab0723 100644 --- a/src/corelib/concurrent/qtconcurrentfilter.cpp +++ b/src/corelib/concurrent/qtconcurrentfilter.cpp @@ -42,12 +42,12 @@ /*! \headerfile <QtConcurrentFilter> \title Concurrent Filter and Filter-Reduce - \ingroup threading + \ingroup thread \brief The <QtConcurrentFilter> header provides concurrent Filter and Filter-Reduce. - These functions are a part of the \l {threads.html#qtconcurrent-intro}{Qt Concurrent} framework. + These functions are a part of the \l {Concurrent Programming}{Qt Concurrent} framework. The QtConcurrent::filter(), QtConcurrent::filtered() and QtConcurrent::filteredReduced() functions filter items in a sequence such diff --git a/src/corelib/concurrent/qtconcurrentmap.cpp b/src/corelib/concurrent/qtconcurrentmap.cpp index 80baa8f..3fd044d 100644 --- a/src/corelib/concurrent/qtconcurrentmap.cpp +++ b/src/corelib/concurrent/qtconcurrentmap.cpp @@ -47,7 +47,9 @@ possible to write multi-threaded programs without using low-level threading primitives. - See the \l {threads.html#qtconcurrent-intro}{Qt Concurrent} section in the \l{threads.html}{threading} documentation. + See the \l {Concurrent Programming}{Qt Concurrent} chapter in + the \l{threads.html}{threading} documentation. + \inheaderfile QtCore \ingroup thread */ @@ -58,8 +60,6 @@ \brief The QtConcurrent::internal namespace contains QtConcurrent implementation details. - - \ingroup thread */ /*! @@ -78,11 +78,11 @@ /*! \headerfile <QtConcurrentMap> \title Concurrent Map and Map-Reduce - \ingroup threading + \ingroup thread \brief The <QtConcurrentMap> header provides concurrent Map and MapReduce. - These functions are a part of the \l {threads.html#qtconcurrent-intro}{Qt Concurrent} framework. + These functions are a part of the \l {Concurrent Programming}{Qt Concurrent} framework. The QtConcurrent::map(), QtConcurrent::mapped() and QtConcurrent::mappedReduced() functions run computations in parallel on diff --git a/src/corelib/concurrent/qtconcurrentrun.cpp b/src/corelib/concurrent/qtconcurrentrun.cpp index 5803abb..989f54d 100644 --- a/src/corelib/concurrent/qtconcurrentrun.cpp +++ b/src/corelib/concurrent/qtconcurrentrun.cpp @@ -42,11 +42,13 @@ /*! \headerfile <QtConcurrentRun> \title Asynchronous Run - + \brief The <QtConcurrentRun> header provides a way to run a function in a separate thread. + + \ingroup thread - This function is a part of the \l {threads.html#qtconcurrent-intro}{Qt Concurrent} framework. + This function is a part of the \l {Concurrent Programming}{Qt Concurrent} framework. The QtConcurrent::run() function runs a function in a separate thread. The return value of the function is made available through the QFuture API. diff --git a/src/corelib/concurrent/qthreadpool.cpp b/src/corelib/concurrent/qthreadpool.cpp index fd1a79e..7311bea 100644 --- a/src/corelib/concurrent/qthreadpool.cpp +++ b/src/corelib/concurrent/qthreadpool.cpp @@ -364,6 +364,8 @@ void QThreadPoolPrivate::stealRunnable(QRunnable *runnable) \since 4.4 \threadsafe + \ingroup thread + QThreadPool manages and recyles individual QThread objects to help reduce thread creation costs in programs that use threads. Each Qt application has one global QThreadPool object, which can be accessed by calling @@ -404,7 +406,7 @@ void QThreadPoolPrivate::stealRunnable(QRunnable *runnable) Note that QThreadPool is a low-level class for managing threads, see QtConcurrent::run() or the other - \l {threads.html#qtconcurrent-intro}{Qt Concurrent} APIs for higher + \l {Concurrent Programming}{Qt Concurrent} APIs for higher level alternatives. \sa QRunnable diff --git a/src/corelib/corelib.pro b/src/corelib/corelib.pro index 96e2b5c..f835bee 100644 --- a/src/corelib/corelib.pro +++ b/src/corelib/corelib.pro @@ -18,7 +18,7 @@ include(codecs/codecs.pri) include(statemachine/statemachine.pri) include(xml/xml.pri) -mac|darwin:LIBS += -framework ApplicationServices +mac|darwin:LIBS_PRIVATE += -framework ApplicationServices mac:lib_bundle:DEFINES += QT_NO_DEBUG_PLUGIN_CHECK win32:DEFINES-=QT_NO_CAST_TO_ASCII diff --git a/src/corelib/global/qendian.qdoc b/src/corelib/global/qendian.qdoc new file mode 100644 index 0000000..e0ef662 --- /dev/null +++ b/src/corelib/global/qendian.qdoc @@ -0,0 +1,168 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \headerfile <QtEndian> + \title Endian Conversion Functions + \ingroup classlists + \brief The <QtEndian> header provides functions to convert between + little and big endian representations of numbers. +*/ + +/*! + \fn T qFromBigEndian(const uchar *src) + \since 4.3 + \relates <QtEndian> + + Reads a big-endian number from memory location \a src and returns the number in the + host byte order representation. + On CPU architectures where the host byte order is little-endian (such as x86) this + will swap the byte order; otherwise it will just read from \a src. + + \note Template type \c{T} can either be a qint16, qint32 or qint64. Other types of + integers, e.g., qlong, are not applicable. + + There are no data alignment constraints for \a src. + + \sa qFromLittleEndian() + \sa qToBigEndian() + \sa qToLittleEndian() +*/ +/*! + \fn T qFromBigEndian(T src) + \since 4.3 + \relates <QtEndian> + \overload + + Converts \a src from big-endian byte order and returns the number in host byte order + representation of that number. + On CPU architectures where the host byte order is little-endian (such as x86) this + will return \a src with the byte order swapped; otherwise it will return \a src + unmodified. +*/ +/*! + \fn T qFromLittleEndian(const uchar *src) + \since 4.3 + \relates <QtEndian> + + Reads a little-endian number from memory location \a src and returns the number in + the host byte order representation. + On CPU architectures where the host byte order is big-endian (such as PowerPC) this + will swap the byte order; otherwise it will just read from \a src. + + \note Template type \c{T} can either be a qint16, qint32 or qint64. Other types of + integers, e.g., qlong, are not applicable. + + There are no data alignment constraints for \a src. + + \sa qFromBigEndian() + \sa qToBigEndian() + \sa qToLittleEndian() +*/ +/*! + \fn T qFromLittleEndian(T src) + \since 4.3 + \relates <QtEndian> + \overload + + Converts \a src from little-endian byte order and returns the number in host byte + order representation of that number. + On CPU architectures where the host byte order is big-endian (such as PowerPC) this + will return \a src with the byte order swapped; otherwise it will return \a src + unmodified. +*/ +/*! + \fn void qToBigEndian(T src, uchar *dest) + \since 4.3 + \relates <QtEndian> + + Writes the number \a src with template type \c{T} to the memory location at \a dest + in big-endian byte order. + + Note that template type \c{T} can only be an integer data type (signed or unsigned). + + There are no data alignment constraints for \a dest. + + \sa qFromBigEndian() + \sa qFromLittleEndian() + \sa qToLittleEndian() +*/ +/*! + \fn T qToBigEndian(T src) + \since 4.3 + \relates <QtEndian> + \overload + + Converts \a src from host byte order and returns the number in big-endian byte order + representation of that number. + On CPU architectures where the host byte order is little-endian (such as x86) this + will return \a src with the byte order swapped; otherwise it will return \a src + unmodified. +*/ +/*! + \fn void qToLittleEndian(T src, uchar *dest) + \since 4.3 + \relates <QtEndian> + + Writes the number \a src with template type \c{T} to the memory location at \a dest + in little-endian byte order. + + Note that template type \c{T} can only be an integer data type (signed or unsigned). + + There are no data alignment constraints for \a dest. + + \sa qFromBigEndian() + \sa qFromLittleEndian() + \sa qToBigEndian() +*/ +/*! + \fn T qToLittleEndian(T src) + \since 4.3 + \relates <QtEndian> + \overload + + Converts \a src from host byte order and returns the number in little-endian byte + order representation of that number. + On CPU architectures where the host byte order is big-endian (such as PowerPC) this + will return \a src with the byte order swapped; otherwise it will return \a src + unmodified. +*/ + diff --git a/src/corelib/global/qglobal.cpp b/src/corelib/global/qglobal.cpp index a8c46f5..73431e0 100644 --- a/src/corelib/global/qglobal.cpp +++ b/src/corelib/global/qglobal.cpp @@ -108,7 +108,7 @@ QT_BEGIN_NAMESPACE \brief The QFlags class provides a type-safe way of storing OR-combinations of enum values. - \mainclass + \ingroup tools The QFlags<Enum> class is a template class, where Enum is an enum @@ -408,7 +408,7 @@ QT_BEGIN_NAMESPACE /*! \headerfile <QtGlobal> \title Global Qt Declarations - \ingroup architecture + \ingroup classlists \brief The <QtGlobal> header provides basic declarations and is included by all other Qt headers. diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h index d6ec7dd..36dd863 100644 --- a/src/corelib/global/qglobal.h +++ b/src/corelib/global/qglobal.h @@ -877,6 +877,8 @@ typedef quint64 qulonglong; && sizeof(void *) == sizeof(qptrdiff) */ template <int> struct QIntegerForSize; +template <> struct QIntegerForSize<1> { typedef quint8 Unsigned; typedef qint8 Signed; }; +template <> struct QIntegerForSize<2> { typedef quint16 Unsigned; typedef qint16 Signed; }; template <> struct QIntegerForSize<4> { typedef quint32 Unsigned; typedef qint32 Signed; }; template <> struct QIntegerForSize<8> { typedef quint64 Unsigned; typedef qint64 Signed; }; template <class T> struct QIntegerForSizeof: QIntegerForSize<sizeof(T)> { }; @@ -2004,6 +2006,14 @@ public: \ static inline const char *name() { return #TYPE; } \ } +template <typename T> +inline void qSwap(T &value1, T &value2) +{ + const T t = value1; + value1 = value2; + value2 = t; +} + /* Specialize a shared type with: @@ -2013,33 +2023,12 @@ public: \ types must declare a 'bool isDetached(void) const;' member for this to work. */ -#if (defined Q_CC_MSVC && _MSC_VER < 1300) || defined(Q_CC_MWERKS) -template <typename T> -inline void qSwap_helper(T &value1, T &value2, T*) -{ - T t = value1; - value1 = value2; - value2 = t; -} -#define Q_DECLARE_SHARED(TYPE) \ -template <> inline bool qIsDetached<TYPE>(TYPE &t) { return t.isDetached(); } \ -template <> inline void qSwap_helper<TYPE>(TYPE &value1, TYPE &value2, TYPE*) \ -{ \ - const TYPE::DataPtr t = value1.data_ptr(); \ - value1.data_ptr() = value2.data_ptr(); \ - value2.data_ptr() = t; \ -} -#else #define Q_DECLARE_SHARED(TYPE) \ template <> inline bool qIsDetached<TYPE>(TYPE &t) { return t.isDetached(); } \ -template <typename T> inline void qSwap(T &, T &); \ template <> inline void qSwap<TYPE>(TYPE &value1, TYPE &value2) \ { \ - const TYPE::DataPtr t = value1.data_ptr(); \ - value1.data_ptr() = value2.data_ptr(); \ - value2.data_ptr() = t; \ + qSwap<TYPE::DataPtr>(value1.data_ptr(), value2.data_ptr()); \ } -#endif /* QTypeInfo primitive specializations diff --git a/src/corelib/global/qlibraryinfo.cpp b/src/corelib/global/qlibraryinfo.cpp index ba87340..c8cf6dc 100644 --- a/src/corelib/global/qlibraryinfo.cpp +++ b/src/corelib/global/qlibraryinfo.cpp @@ -133,9 +133,6 @@ QSettings *QLibraryInfoPrivate::findConfiguration() \class QLibraryInfo \brief The QLibraryInfo class provides information about the Qt library. - \ingroup misc - \mainclass - Many pieces of information are established when Qt is configured. Installation paths, license information, and even a unique build key. This class provides an abstraction for accessing this diff --git a/src/corelib/global/qnamespace.qdoc b/src/corelib/global/qnamespace.qdoc new file mode 100644 index 0000000..319e2ce --- /dev/null +++ b/src/corelib/global/qnamespace.qdoc @@ -0,0 +1,2754 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \namespace Qt + \inmodule QtCore + + \brief The Qt namespace contains miscellaneous identifiers + used throughout the Qt library. +*/ + +/*! + \enum Qt::Orientation + + This type is used to signify an object's orientation. + + \value Horizontal + \value Vertical + + Orientation is used with QScrollBar for example. +*/ + +/*! + \enum Qt::AlignmentFlag + + This enum type is used to describe alignment. It contains + horizontal and vertical flags that can be combined to produce + the required effect. + + The \l{TextElideMode} enum can also be used in many situations + to fine-tune the appearance of aligned text. + + The horizontal flags are: + + \value AlignLeft Aligns with the left edge. + \value AlignRight Aligns with the right edge. + \value AlignHCenter Centers horizontally in the available space. + \value AlignJustify Justifies the text in the available space. + \omitvalue AlignAuto + + The vertical flags are: + + \value AlignTop Aligns with the top. + \value AlignBottom Aligns with the bottom. + \value AlignVCenter Centers vertically in the available space. + + You can use only one of the horizontal flags at a time. There is + one two-dimensional flag: + + \value AlignCenter Centers in both dimensions. + + You can use at most one horizontal and one vertical flag at a + time. Qt::AlignCenter counts as both horizontal and vertical. + + Three enum values are useful in applications that can be run in + right-to-left mode: + + \value AlignAbsolute If the widget's layout direction is + Qt::RightToLeft (instead of Qt::LeftToRight, the default), + Qt::AlignLeft refers to the \e right edge and Qt::AlignRight + to the \e left edge. This is normally the desired behavior. + If you want Qt::AlignLeft to always mean "left" and + Qt::AlignRight to always mean "right", combine the flag with + Qt::AlignAbsolute. + \value AlignLeading Synonym for Qt::AlignLeft. + \value AlignTrailing Synonym for Qt::AlignRight. + + Masks: + + \value AlignHorizontal_Mask + \value AlignVertical_Mask + + Conflicting combinations of flags have undefined meanings. +*/ + +/*! + \enum Qt::ApplicationAttribute + + This enum describes attributes that change the behavior of + application-wide features. These are enabled and disabled using + QCoreApplication::setAttribute(), and can be tested for with + QCoreApplication::testAttribute(). + + \value AA_ImmediateWidgetCreation Ensures that widgets are created + as soon as they are constructed. By default, resources for + widgets are allocated on demand to improve efficiency and + minimize resource usage. Setting or clearing this attribute + affects widgets constructed after the change. Setting it + tells Qt to create toplevel windows immediately. + Therefore, if it is important to minimize resource + consumption, do not set this attribute. + + \value AA_MSWindowsUseDirect3DByDefault This value is obsolete and + has no effect. + + \value AA_DontShowIconsInMenus Actions with the Icon property won't be + shown in any menus unless specifically set by the + QAction::iconVisibleInMenu property. + + Menus that are currently open or menus already created in the native + Mac OS X menubar \e{may not} pick up a change in this attribute. Changes + in the QAction::iconVisibleInMenu property will always be picked up. + + \value AA_NativeWindows Ensures that widgets have native windows. + + \value AA_DontCreateNativeWidgetSiblings Ensures that siblings of native + widgets stay non-native unless specifically set by the + Qt::WA_NativeWindow attribute. + + \value AA_MacPluginApplication Stops the Qt mac application from doing + specific initializations that do not necessarily make sense when using Qt + to author a plugin. This includes avoiding loading our nib for the main + menu and not taking possession of the native menu bar. When setting this + attribute to true will also set the AA_DontUseNativeMenuBar attribute + to true. + + \value AA_DontUseNativeMenuBar All menubars created while this attribute is + set to true won't be used as a native menubar (e.g, the menubar at + the top of the main screen on Mac OS X or at the bottom in Windows CE). + + \value AA_MacDontSwapCtrlAndMeta On Mac OS X by default, Qt swaps the + Control and Meta (Command) keys (i.e., whenever Control is pressed, Qt + sends Meta and whenever Meta is pressed Control is sent. When this + attribute is true, Qt will not do the flip. QKeySequence::StandardShortcuts + will also flip accordingly (i.e., QKeySequence::Copy will be + Command+C on the keyboard regardless of the value set, though what is output for + QKeySequence::toString(QKeySequence::PortableText) will be different). + + \omitvalue AA_AttributeCount +*/ + +/*! + \enum Qt::MouseButton + + This enum type describes the different mouse buttons. + + \value NoButton The button state does not refer to any + button (see QMouseEvent::button()). + \value LeftButton The left button is pressed, or an event refers + to the left button. (The left button may be the right button on + left-handed mice.) + \value RightButton The right button. + \value MidButton The middle button. + \value XButton1 The first X button. + \value XButton2 The second X button. + + \omitvalue MouseButtonMask + + \sa KeyboardModifier Modifier +*/ + +/*! + \enum Qt::KeyboardModifier + + This enum describes the modifier keys. + + \value NoModifier No modifier key is pressed. + \value ShiftModifier A Shift key on the keyboard is pressed. + \value ControlModifier A Ctrl key on the keyboard is pressed. + \value AltModifier An Alt key on the keyboard is pressed. + \value MetaModifier A Meta key on the keyboard is pressed. + \value KeypadModifier A keypad button is pressed. + \value GroupSwitchModifier X11 only. A Mode_switch key on the keyboard is pressed. + + \omitvalue KeyboardModifierMask + + \note On Mac OS X, the \c ControlModifier value corresponds to + the Command keys on the Macintosh keyboard, and the \c MetaModifier value + corresponds to the Control keys. The \c KeypadModifier value will also be set + when an arrow key is pressed as the arrow keys are considered part of the + keypad. + + \note On Windows Keyboards, Qt::MetaModifier and Qt::Key_Meta are mapped + to the Windows key. + + \sa MouseButton Modifier +*/ + +/*! + \enum Qt::Modifier + + This enum provides shorter names for the keyboard modifier keys + supported by Qt. + + \bold{Note:} On Mac OS X, the \c CTRL value corresponds to + the Command keys on the Macintosh keyboard, and the \c META value + corresponds to the Control keys. + + \value SHIFT The Shift keys provided on all standard keyboards. + \value META The Meta keys. + \value CTRL The Ctrl keys. + \value ALT The normal Alt keys, but not keys like AltGr. + \value UNICODE_ACCEL The shortcut is specified as a Unicode code + point, not as a Qt Key. + \omitvalue MODIFIER_MASK + + \sa KeyboardModifier MouseButton +*/ + +/*! + \enum Qt::GlobalColor + + \raw HTML + <style type="text/css" id="colorstyles"> + #white { background-color: #ffffff; color: #000000 } + #black { background-color: #000000; color: #ffffff } + #red { background-color: #ff0000; color: #000000 } + #darkRed { background-color: #800000; color: #ffffff } + #green { background-color: #00ff00; color: #000000 } + #darkGreen { background-color: #008000; color: #ffffff } + #blue { background-color: #0000ff; color: #ffffff } + #darkBlue { background-color: #000080; color: #ffffff } + #cyan { background-color: #00ffff; color: #000000 } + #darkCyan { background-color: #008080; color: #ffffff } + #magenta { background-color: #ff00ff; color: #000000 } + #darkMagenta { background-color: #800080; color: #ffffff } + #yellow { background-color: #ffff00; color: #000000 } + #darkYellow { background-color: #808000; color: #ffffff } + #gray { background-color: #a0a0a4; color: #000000 } + #darkGray { background-color: #808080; color: #ffffff } + #lightGray { background-color: #c0c0c0; color: #000000 } + </style> + \endraw + + Qt's predefined QColor objects: + + \value white \raw HTML + White <tt id="white">(#ffffff)</tt> + \endraw + \value black \raw HTML + Black <tt id="black">(#000000)</tt> + \endraw + \value red \raw HTML + Red <tt id="red">(#ff0000)</tt> + \endraw + \value darkRed \raw HTML + Dark red <tt id="darkRed">(#800000)</tt> + \endraw + \value green \raw HTML + Green <tt id="green">(#00ff00)</tt> + \endraw + \value darkGreen \raw HTML + Dark green <tt id="darkGreen">(#008000)</tt> + \endraw + \value blue \raw HTML + Blue <tt id="blue">(#0000ff)</tt> + \endraw + \value darkBlue \raw HTML + Dark blue <tt id="darkBlue">(#000080)</tt> + \endraw + \value cyan \raw HTML + Cyan <tt id="cyan">(#00ffff)</tt> + \endraw + \value darkCyan \raw HTML + Dark cyan <tt id="darkCyan">(#008080)</tt> + \endraw + \value magenta \raw HTML + Magenta <tt id="magenta">(#ff00ff)</tt> + \endraw + \value darkMagenta \raw HTML + Dark magenta <tt id="darkMagenta">(#800080)</tt> + \endraw + \value yellow \raw HTML + Yellow <tt id="yellow">(#ffff00)</tt> + \endraw + \value darkYellow \raw HTML + Dark yellow <tt id="darkYellow">(#808000)</tt> + \endraw + \value gray \raw HTML + Gray <tt id="gray">(#a0a0a4)</tt> + \endraw + \value darkGray \raw HTML + Dark gray <tt id="darkGray">(#808080)</tt> + \endraw + \value lightGray \raw HTML + Light gray <tt id="lightGray">(#c0c0c0)</tt> + \endraw + \value transparent a transparent black value (i.e., QColor(0, 0, 0, 0)) + \value color0 0 pixel value (for bitmaps) + \value color1 1 pixel value (for bitmaps) + + \sa QColor + +*/ + +/*! + \enum Qt::PenStyle + + This enum type defines the pen styles that can be drawn using + QPainter. The styles are: + + \table + \row + \o \inlineimage qpen-solid.png + \o \inlineimage qpen-dash.png + \o \inlineimage qpen-dot.png + \row + \o Qt::SolidLine + \o Qt::DashLine + \o Qt::DotLine + \row + \o \inlineimage qpen-dashdot.png + \o \inlineimage qpen-dashdotdot.png + \o \inlineimage qpen-custom.png + \row + \o Qt::DashDotLine + \o Qt::DashDotDotLine + \o Qt::CustomDashLine + \endtable + + \value NoPen no line at all. For example, QPainter::drawRect() + fills but does not draw any boundary line. + + \value SolidLine A plain line. + \value DashLine Dashes separated by a few pixels. + \value DotLine Dots separated by a few pixels. + \value DashDotLine Alternate dots and dashes. + \value DashDotDotLine One dash, two dots, one dash, two dots. + \value CustomDashLine A custom pattern defined using + QPainterPathStroker::setDashPattern(). + + \omitvalue MPenStyle + + \sa QPen +*/ + +/*! + \enum Qt::PenCapStyle + + This enum type defines the pen cap styles supported by Qt, i.e. + the line end caps that can be drawn using QPainter. + + \table + \row + \o \inlineimage qpen-square.png + \o \inlineimage qpen-flat.png + \o \inlineimage qpen-roundcap.png + \row + \o Qt::SquareCap + \o Qt::FlatCap + \o Qt::RoundCap + \endtable + + \value FlatCap a square line end that does not cover the end + point of the line. + \value SquareCap a square line end that covers the end point and + extends beyond it by half the line width. + \value RoundCap a rounded line end. + \omitvalue MPenCapStyle + + \sa QPen +*/ + +/*! + \enum Qt::PenJoinStyle + + This enum type defines the pen join styles supported by Qt, i.e. + which joins between two connected lines can be drawn using + QPainter. + + \table + \row + \o \inlineimage qpen-bevel.png + \o \inlineimage qpen-miter.png + \o \inlineimage qpen-roundjoin.png + \row + \o Qt::BevelJoin + \o Qt::MiterJoin + \o Qt::RoundJoin + \endtable + + \value MiterJoin The outer edges of the lines are extended to + meet at an angle, and this area is filled. + \value BevelJoin The triangular notch between the two lines is filled. + \value RoundJoin A circular arc between the two lines is filled. + \value SvgMiterJoin A miter join corresponding to the definition of + a miter join in the \l{SVG 1.2 Tiny} specification. + \omitvalue MPenJoinStyle + + \sa QPen +*/ + +/*! + \enum Qt::BrushStyle + + This enum type defines the brush styles supported by Qt, i.e. the + fill pattern of shapes drawn using QPainter. + + \image brush-styles.png Brush Styles + + \value NoBrush No brush pattern. + \value SolidPattern Uniform color. + \value Dense1Pattern Extremely dense brush pattern. + \value Dense2Pattern Very dense brush pattern. + \value Dense3Pattern Somewhat dense brush pattern. + \value Dense4Pattern Half dense brush pattern. + \value Dense5Pattern Somewhat sparse brush pattern. + \value Dense6Pattern Very sparse brush pattern. + \value Dense7Pattern Extremely sparse brush pattern. + \value HorPattern Horizontal lines. + \value VerPattern Vertical lines. + \value CrossPattern Crossing horizontal and vertical lines. + \value BDiagPattern Backward diagonal lines. + \value FDiagPattern Forward diagonal lines. + \value DiagCrossPattern Crossing diagonal lines. + \value LinearGradientPattern Linear gradient (set using a dedicated QBrush constructor). + \value ConicalGradientPattern Conical gradient (set using a dedicated QBrush constructor). + \value RadialGradientPattern Radial gradient (set using a dedicated QBrush constructor). + \value TexturePattern Custom pattern (see QBrush::setTexture()). + + \omitvalue CustomPattern + + \sa QBrush +*/ + +/*! + \enum Qt::TextFlag + + This enum type is used to define some modifier flags. Some of + these flags only make sense in the context of printing: + + \value TextSingleLine Treats all whitespace as spaces and prints just + one line. + \value TextDontClip If it's impossible to stay within the given bounds, + it prints outside. + \value TextExpandTabs Makes the U+0009 (ASCII tab) character move to + the next tab stop. + \value TextShowMnemonic Displays the string "\&P" as \underline{P} + (see QButton for an example). For an ampersand, use "\&\&". + \value TextWordWrap Breaks lines at appropriate points, e.g. at word + boundaries. + \value TextWrapAnywhere Breaks lines anywhere, even within words. + \value TextHideMnemonic Same as Qt::TextShowMnemonic but doesn't draw the underlines. + \value TextDontPrint Treat this text as "hidden" and don't print + it. + \value IncludeTrailingSpaces When this option is set, QTextLine::naturalTextWidth() and naturalTextRect() will + return a value that includes the width of trailing spaces in the text; otherwise + this width is excluded. + \value TextIncludeTrailingSpaces Same as IncludeTrailingSpaces + \value TextJustificationForced Ensures that text lines are justified. + + \omitvalue BreakAnywhere + \omitvalue DontClip + \omitvalue DontPrint + \omitvalue ExpandTabs + \omitvalue IncludeTrailingSpaces + \omitvalue NoAccel + \omitvalue ShowPrefix + \omitvalue SingleLine + \omitvalue WordBreak + \omitvalue TextForceLeftToRight + \omitvalue TextForceRightToLeft + \omitvalue TextLongestVariant Always use the longest variant when computing the size of a multi-variant string + + You can use as many modifier flags as you want, except that + Qt::TextSingleLine and Qt::TextWordWrap cannot be combined. + + Flags that are inappropriate for a given use are generally + ignored. +*/ + +/*! + \enum Qt::BGMode + + Background mode: + + \value TransparentMode + \value OpaqueMode +*/ + +/*! + \enum Qt::ConnectionType + + This enum describes the types of connection that can be used between signals and + slots. In particular, it determines whether a particular signal is delivered to a + slot immediately or queued for delivery at a later time. + + \value DirectConnection When emitted, the signal is immediately delivered to the slot. + \value QueuedConnection When emitted, the signal is queued until the event loop is + able to deliver it to the slot. + \value BlockingQueuedConnection + Same as QueuedConnection, except that the current thread blocks + until the slot has been delivered. This connection type should + only be used for receivers in a different thread. Note that misuse + of this type can lead to deadlocks in your application. + \value AutoConnection If the signal is emitted from the thread + in which the receiving object lives, the + slot is invoked directly, as with + Qt::DirectConnection; otherwise the + signal is queued, as with + Qt::QueuedConnection. + \value UniqueConnection Same as AutoConnection, but there will be a check that the signal is + not already connected to the same slot before connecting, otherwise, + the connection will fail. + This value was introduced in Qt 4.6. + \value AutoCompatConnection + The default connection type for signals and slots when Qt 3 support + is enabled. Equivalent to AutoConnection for connections but will cause warnings + to be output under certain circumstances. See + \l{Porting to Qt 4#Compatibility Signals and Slots}{Compatibility Signals and Slots} + for further information. + + With queued connections, the parameters must be of types that are known to + Qt's meta-object system, because Qt needs to copy the arguments to store them + in an event behind the scenes. If you try to use a queued connection and + get the error message + + \snippet doc/src/snippets/code/doc_src_qnamespace.qdoc 0 + + call qRegisterMetaType() to register the data type before you + establish the connection. + + \sa {Thread Support in Qt}, QObject::connect(), qRegisterMetaType() +*/ + +/*! + \enum Qt::DateFormat + + \value TextDate The default Qt format, which includes the day and month name, + the day number in the month, and the year in full. The day and month names will + be short, localized names. This is basically equivalent to using the date format + string, "ddd MMM d yyyy". See QDate::toString() for more information. + + \value ISODate ISO 8601 extended format: either \c{YYYY-MM-DD} for dates or + \c{YYYY-MM-DDTHH:MM:SS} for combined dates and times. + + \value SystemLocaleShortDate The \l{QLocale::ShortFormat}{short format} used + by the \l{QLocale::system()}{operating system}. + + \value SystemLocaleLongDate The \l{QLocale::LongFormat}{long format} used + by the \l{QLocale::system()}{operating system}. + + \value DefaultLocaleShortDate The \l{QLocale::ShortFormat}{short format} specified + by the \l{QLocale::setDefault()}{application's locale}. + + \value DefaultLocaleLongDate The \l{QLocale::LongFormat}{long format} used + by the \l{QLocale::setDefault()}{application's locale}. + + \value SystemLocaleDate \e{This enum value is deprecated.} Use Qt::SystemLocaleShortDate + instead (or Qt::SystemLocaleLongDate if you want long dates). + + \value LocaleDate \e{This enum value is deprecated.} Use Qt::DefaultLocaleShortDate + instead (or Qt::DefaultLocaleLongDate if you want long dates). + + \value LocalDate \e{This enum value is deprecated.} Use Qt::SystemLocaleShortDate + instead (or Qt::SystemLocaleLongDate if you want long dates). + + \note For \c ISODate formats, each \c Y, \c M and \c D represents a single digit + of the year, month and day used to specify the date. Each \c H, \c M and \c S + represents a single digit of the hour, minute and second used to specify the time. + The presence of a literal \c T character is used to separate the date and time when + both are specified. +*/ + + +/*! + \enum Qt::TimeSpec + + \value LocalTime Locale dependent time (Timezones and Daylight Savings Time). + \value UTC Coordinated Universal Time, replaces Greenwich Mean Time. + \value OffsetFromUTC An offset in seconds from Coordinated Universal Time. +*/ + +/*! + \enum Qt::DayOfWeek + + \value Monday + \value Tuesday + \value Wednesday + \value Thursday + \value Friday + \value Saturday + \value Sunday +*/ + +/*! + \enum Qt::CaseSensitivity + + \value CaseInsensitive + \value CaseSensitive +*/ + +/*! + \enum Qt::ToolBarArea + + \value LeftToolBarArea + \value RightToolBarArea + \value TopToolBarArea + \value BottomToolBarArea + \value AllToolBarAreas + \value NoToolBarArea + + \omitvalue ToolBarArea_Mask +*/ + +/*! + \enum Qt::DockWidgetArea + + \value LeftDockWidgetArea + \value RightDockWidgetArea + \value TopDockWidgetArea + \value BottomDockWidgetArea + \value AllDockWidgetAreas + \value NoDockWidgetArea + + \omitvalue DockWidgetArea_Mask +*/ + +/*! + \enum Qt::BackgroundMode + + \compat + + \value FixedColor + \value FixedPixmap + \value NoBackground + \value PaletteForeground + \value PaletteButton + \value PaletteLight + \value PaletteMidlight + \value PaletteDark + \value PaletteMid + \value PaletteText + \value PaletteBrightText + \value PaletteBase + \value PaletteBackground + \value PaletteShadow + \value PaletteHighlight + \value PaletteHighlightedText + \value PaletteButtonText + \value PaletteLink + \value PaletteLinkVisited + \value X11ParentRelative +*/ + +/*! + \enum Qt::ImageConversionFlag + + The options marked "(default)" are set if no other values from + the list are included (since the defaults are zero): + + Color/Mono preference (ignored for QBitmap): + + \value AutoColor (default) - If the image has \link + QImage::depth() depth\endlink 1 and contains only + black and white pixels, the pixmap becomes monochrome. + \value ColorOnly The pixmap is dithered/converted to the + \link QPixmap::defaultDepth() native display depth\endlink. + \value MonoOnly The pixmap becomes monochrome. If necessary, + it is dithered using the chosen dithering algorithm. + + Dithering mode preference for RGB channels: + + \value DiffuseDither (default) - A high-quality dither. + \value OrderedDither A faster, more ordered dither. + \value ThresholdDither No dithering; closest color is used. + + Dithering mode preference for alpha channel: + + \value ThresholdAlphaDither (default) - No dithering. + \value OrderedAlphaDither A faster, more ordered dither. + \value DiffuseAlphaDither A high-quality dither. + \omitvalue NoAlpha + + Color matching versus dithering preference: + + \value PreferDither (default when converting to a pixmap) - Always dither + 32-bit images when the image is converted to 8 bits. + \value AvoidDither (default when converting for the purpose of saving to + file) - Dither 32-bit images only if the image has more than 256 + colors and it is being converted to 8 bits. + \omitvalue AutoDither + + \omitvalue ColorMode_Mask + \omitvalue Dither_Mask + \omitvalue AlphaDither_Mask + \omitvalue DitherMode_Mask + \omitvalue NoOpaqueDetection +*/ + +/*! \enum Qt::GUIStyle + + \compat + + \value WindowsStyle + \value MotifStyle + \value MacStyle + \value Win3Style + \value PMStyle +*/ + +/*! + \enum Qt::UIEffect + + This enum describes the available UI effects. + + By default, Qt will try to use the platform specific desktop + settings for each effect. Use the + QApplication::setDesktopSettingsAware() function (passing \c false + as argument) to prevent this, and the + QApplication::setEffectEnabled() to enable or disable a particular + effect. + + Note that all effects are disabled on screens running at less than + 16-bit color depth. + + \omitvalue UI_General + + \value UI_AnimateMenu Show animated menus. + \value UI_FadeMenu Show faded menus. + \value UI_AnimateCombo Show animated comboboxes. + \value UI_AnimateTooltip Show tooltip animations. + \value UI_FadeTooltip Show tooltip fading effects. + \value UI_AnimateToolBox Reserved + + \sa QApplication::setEffectEnabled(), QApplication::setDesktopSettingsAware() +*/ + +/*! \enum Qt::AspectRatioMode + + This enum type defines what happens to the aspect ratio when + scaling an rectangle. + + \image qimage-scaling.png + + \value IgnoreAspectRatio The size is scaled freely. The aspect + ratio is not preserved. + \value KeepAspectRatio The size is scaled to a rectangle as + large as possible inside a given + rectangle, preserving the aspect ratio. + \value KeepAspectRatioByExpanding The size is scaled to a + rectangle as small as possible + outside a given rectangle, + preserving the aspect ratio. + + \omitvalue ScaleFree + \omitvalue ScaleMin + \omitvalue ScaleMax + + \sa QSize::scale(), QImage::scaled() +*/ + +/*! \typedef Qt::ScaleMode + \compat + + Use Qt::AspectRatioMode instead. + + The enum values have been renamed as follows: + + \table + \row \i Old enum value \i New enum value + \row \i Qt::ScaleFree \i Qt::IgnoreAspectRatio + \row \i Qt::ScaleMin \i Qt::KeepAspectRatio + \row \i Qt::ScaleMax \i Qt::KeepAspectRatioByExpanding + \endtable +*/ + +/*! \enum Qt::TransformationMode + + This enum type defines whether image transformations (e.g., + scaling) should be smooth or not. + + \value FastTransformation The transformation is performed + quickly, with no smoothing. + \value SmoothTransformation The resulting image is transformed + using bilinear filtering. + + \sa QImage::scaled() +*/ + +/*! \enum Qt::Axis + + This enum type defines three values to represent the three + axes in the cartesian coordinate system. + + \value XAxis The X axis. + \value YAxis The Y axis. + \value ZAxis The Z axis. + + \sa QTransform::rotate(), QTransform::rotateRadians() + */ + +/*! + \enum Qt::WidgetAttribute + + \keyword widget attributes + + This enum type is used to specify various widget attributes. + Attributes are set and cleared with QWidget::setAttribute(), and + queried with QWidget::testAttribute(), although some have special + convenience functions which are mentioned below. + + \value WA_AcceptDrops Allows data from drag and drop operations + to be dropped onto the widget (see QWidget::setAcceptDrops()). + + \value WA_AlwaysShowToolTips Enables tooltips for inactive windows. + + \value WA_ContentsPropagated This flag is superfluous and + obsolete; it no longer has any effect. Since Qt 4.1, all widgets + that do not set WA_PaintOnScreen propagate their contents. + + \value WA_CustomWhatsThis Indicates that the widget wants to + continue operating normally in "What's This?" mode. This is set by the + widget's author. + + \value WA_DeleteOnClose Makes Qt delete this widget when the + widget has accepted the close event (see QWidget::closeEvent()). + + \value WA_Disabled Indicates that the widget is disabled, i.e. + it does not receive any mouse or keyboard events. There is also a + getter functions QWidget::isEnabled(). This is set/cleared by the + Qt kernel. + + \omitvalue WA_DropSiteRegistered + \omitvalue WA_ForceAcceptDrops + + \value WA_ForceDisabled Indicates that the widget is + explicitly disabled, i.e. it will remain disabled even when all + its ancestors are set to the enabled state. This implies + WA_Disabled. This is set/cleared by QWidget::setEnabled() and + QWidget::setDisabled(). + + \value WA_ForceUpdatesDisabled Indicates that updates are + explicitly disabled for the widget; i.e. it will remain disabled + even when all its ancestors are set to the updates-enabled state. + This implies WA_UpdatesDisabled. This is set/cleared by + QWidget::setUpdatesEnabled(). + + \value WA_GroupLeader + \e{This attribute has been deprecated.} Use QWidget::windowModality + instead. + + \value WA_Hover Forces Qt to generate paint events when the mouse + enters or leaves the widget. This feature is typically used when + implementing custom styles; see the \l{widgets/styles}{Styles} + example for details. + + \value WA_InputMethodEnabled Enables input methods for Asian languages. + Must be set when creating custom text editing widgets. + On Windows CE this flag can be used in addition to + QApplication::autoSipEnabled to automatically display the SIP when + entering a widget. + + \value WA_KeyboardFocusChange Set on a toplevel window when + the users changes focus with the keyboard (tab, backtab, or shortcut). + + \value WA_KeyCompression Enables key event compression if set, + and disables it if not set. By default key compression is off, so + widgets receive one key press event for each key press (or more, + since autorepeat is usually on). If you turn it on and your + program doesn't keep up with key input, Qt may try to compress key + events so that more than one character can be processed in each + event. + For example, a word processor widget might receive 2, 3 or more + characters in each QKeyEvent::text(), if the layout recalculation + takes too long for the CPU. + If a widget supports multiple character unicode input, it is + always safe to turn the compression on. + Qt performs key event compression only for printable characters. + Qt::Modifier keys, cursor movement keys, function keys and + miscellaneous action keys (e.g. Escape, Enter, Backspace, + PrintScreen) will stop key event compression, even if there are + more compressible key events available. + Platforms other than Mac and X11 do not support this compression, + in which case turning it on will have no effect. + This is set/cleared by the widget's author. + + \value WA_LayoutOnEntireRect Indicates that the widget + wants QLayout to operate on the entire QWidget::rect(), not only + on QWidget::contentsRect(). This is set by the widget's author. + + \value WA_LayoutUsesWidgetRect Ignore the layout item rect from the style + when laying out this widget with QLayout. This makes a difference in + QMacStyle and QPlastiqueStyle for some widgets. + + \value WA_MacNoClickThrough When a widget that has this attribute set + is clicked, and its window is inactive, the click will make the window + active but won't be seen by the widget. Typical use of this attribute + is on widgets with "destructive" actions, such as a "Delete" button. + WA_MacNoClickThrough also applies to all child widgets of the widget + that has it set. + + \value WA_MacOpaqueSizeGrip Indicates that the native Carbon size grip + should be opaque instead of transparent (the default). This attribute + is only applicable to Mac OS X and is set by the widget's author. + + \value WA_MacShowFocusRect Indicates that this widget should get a + QFocusFrame around it. Some widgets draw their own focus halo + regardless of this attribute. Not that the QWidget::focusPolicy + also plays the main role in whether something is given focus or + not, this only controls whether or not this gets the focus + frame. This attribute is only applicable to Mac OS X. + + \value WA_MacNormalSize Indicates the widget should have the + normal size for widgets in Mac OS X. This attribute is only + applicable to Mac OS X. + + \value WA_MacSmallSize Indicates the widget should have the small + size for widgets in Mac OS X. This attribute is only applicable to + Mac OS X. + + \value WA_MacMiniSize Indicates the widget should have the mini + size for widgets in Mac OS X. This attribute is only applicable to + Mac OS X. + + \value WA_MacVariableSize Indicates the widget can choose between + alternative sizes for widgets to avoid clipping. + This attribute is only applicable to Mac OS X. + + \value WA_MacBrushedMetal Indicates the widget should be drawn in + the brushed metal style as supported by the windowing system. This + attribute is only applicable to Mac OS X. + + \omitvalue WA_MacMetalStyle + + \value WA_Mapped Indicates that the widget is mapped on screen. + This is set/cleared by the Qt kernel. + + \value WA_MouseNoMask Makes the widget receive mouse events for + the entire widget regardless of the currently set mask, + overriding QWidget::setMask(). This is not applicable for + top-level windows. + + \value WA_MouseTracking Indicates that the widget has mouse + tracking enabled. See QWidget::mouseTracking. + + \value WA_Moved Indicates that the widget has an explicit + position. This is set/cleared by QWidget::move() and + by QWidget::setGeometry(). + + \value WA_MSWindowsUseDirect3D This value is obsolete and has no + effect. + + \value WA_NoBackground This value is obsolete. Use + WA_OpaquePaintEvent instead. + + \value WA_NoChildEventsForParent Indicates that the widget does + not want ChildAdded or ChildRemoved events sent to its + parent. This is rarely necessary but can help to avoid automatic + insertion widgets like splitters and layouts. This is set by a + widget's author. + + \value WA_NoChildEventsFromChildren Indicates that the widget does + not want to receive ChildAdded or ChildRemoved events sent from its + children. This is set by a widget's author. + + \value WA_NoMouseReplay Used for pop-up widgets. Indicates that the most + recent mouse press event should not be replayed when the pop-up widget + closes. The flag is set by the widget's author and cleared by the Qt kernel + every time the widget receives a new mouse event. + + \value WA_NoMousePropagation Prohibits mouse events from being propagated + to the widget's parent. This attribute is disabled by default. + + \value WA_TransparentForMouseEvents When enabled, this attribute disables + the delivery of mouse events to the widget and its children. Mouse events + are delivered to other widgets as if the widget and its children were not + present in the widget hierarchy; mouse clicks and other events effectively + "pass through" them. This attribute is disabled by default. + + \value WA_NoSystemBackground Indicates that the widget has no background, + i.e. when the widget receives paint events, the background is not + automatically repainted. \note Unlike WA_OpaquePaintEvent, newly exposed + areas are \bold never filled with the background (e.g., after showing a + window for the first time the user can see "through" it until the + application processes the paint events). This flag is set or cleared by the + widget's author. + + \value WA_OpaquePaintEvent Indicates that the widget paints all its pixels + when it receives a paint event. Thus, it is not required for operations + like updating, resizing, scrolling and focus changes to erase the widget + before generating paint events. The use of WA_OpaquePaintEvent provides a + small optimization by helping to reduce flicker on systems that do not + support double buffering and avoiding computational cycles necessary to + erase the background prior to painting. \note Unlike + WA_NoSystemBackground, WA_OpaquePaintEvent makes an effort to avoid + transparent window backgrounds. This flag is set or cleared by the widget's + author. + + \value WA_OutsideWSRange Indicates that the widget is outside + the valid range of the window system's coordinate system. A widget + outside the valid range cannot be mapped on screen. This is + set/cleared by the Qt kernel. + + \value WA_PaintOnScreen Indicates that the widget wants to draw directly + onto the screen. Widgets with this attribute set do not participate in + composition management, i.e. they cannot be semi-transparent or shine + through semi-transparent overlapping widgets. \note This flag is only + supported on X11 and it disables double buffering. On Qt for Embedded + Linux, the flag only works when set on a top-level widget and it relies on + support from the active screen driver. This flag is set or cleared by the + widget's author. To render outside of Qt's paint system, e.g., if you + require native painting primitives, you need to reimplement + QWidget::paintEngine() to return 0 and set this flag. + + \value WA_PaintOutsidePaintEvent Makes it possible to use QPainter to + paint on the widget outside \l{QWidget::paintEvent()}{paintEvent()}. This + flag is not supported on Windows, Mac OS X or Embedded Linux. We recommend + that you use it only when porting Qt 3 code to Qt 4. + + \value WA_PaintUnclipped Makes all painters operating on this widget + unclipped. Children of this widget or other widgets in front of it do not + clip the area the painter can paint on. This flag is only supported for + widgets with the WA_PaintOnScreen flag set. The preferred way to do this in + a cross platform way is to create a transparent widget that lies in front + of the other widgets. + + \value WA_PendingMoveEvent Indicates that a move event is pending, e.g., + when a hidden widget was moved. This flag is set or cleared by the Qt + kernel. + + \value WA_PendingResizeEvent Indicates that a resize event is pending, + e.g., when a hidden widget was resized. This flag is set or cleared by the + Qt kernel. + + \value WA_QuitOnClose Makes Qt quit the application when the last widget + with the attribute set has accepted closeEvent(). This behavior can be + modified with the QApplication::quitOnLastWindowClosed property. By default + this attribute is set for all widgets of type Qt::Window. + + \value WA_Resized Indicates that the widget has an explicit size. This flag + is set or cleared by QWidget::resize() and QWidget::setGeometry(). + + \value WA_RightToLeft Indicates that the layout direction for the widget + is right to left. + + \value WA_SetCursor Indicates that the widget has a cursor of its own. This + flag is set or cleared by QWidget::setCursor() and QWidget::unsetCursor(). + + \value WA_SetFont Indicates that the widget has a font of its own. This + flag is set or cleared by QWidget::setFont(). + + \value WA_SetPalette Indicates that the widget has a palette of its own. + This flag is set or cleared by QWidget::setPalette(). + + \value WA_SetStyle Indicates that the widget has a style of its own. This + flag is set or cleared by QWidget::setStyle(). + + \value WA_ShowModal \e{This attribute has been deprecated.} Use + QWidget::windowModality instead. + + \value WA_StaticContents Indicates that the widget contents are north-west + aligned and static. On resize, such a widget will receive paint events only + for parts of itself that are newly visible. This flag is set or cleared by + the widget's author. + + \value WA_StyleSheet Indicates that the widget is styled using a + \l{Qt Style Sheets}{style sheet}. + + \value WA_TranslucentBackground Indicates that the widget should have a + translucent background, i.e., any non-opaque regions of the widgets will be + translucent because the widget will have an alpha channel. Setting this + flag causes WA_NoSystemBackground to be set. On Windows the + widget also needs the Qt::FramelessWindowHint window flag to be set. + This flag is set or cleared by the widget's author. + + \value WA_UnderMouse Indicates that the widget is under the mouse cursor. + The value is not updated correctly during drag and drop operations. There + is also a getter function, QWidget::underMouse(). This flag is set or + cleared by the Qt kernel. + + \value WA_UpdatesDisabled Indicates that updates are blocked (including the + system background). This flag is set or cleared by the Qt kernel. + \warning This flag must \e never be set or cleared by the widget's author. + + \value WA_WindowModified Indicates that the window is marked as modified. + On some platforms this flag will do nothing, on others (including Mac OS X + and Windows) the window will take a modified appearance. This flag is set + or cleared by QWidget::setWindowModified(). + + \value WA_WindowPropagation Makes a toplevel window inherit font and + palette from its parent. + + \value WA_MacAlwaysShowToolWindow On Mac OS X, show the tool window even + when the application is not active. By default, all tool windows are + hidden when the application is inactive. + + \value WA_SetLocale Indicates the locale should be taken into consideration + in the widget. + + \value WA_StyledBackground Indicates the widget should be drawn using a + styled background. + + \value WA_ShowWithoutActivating Show the widget without making it active. + + \value WA_NativeWindow Indicates that a native window is created for the + widget. Enabling this flag will also force a native window for the widget's + ancestors unless Qt::WA_DontCreateNativeAncestors is set. + + \value WA_DontCreateNativeAncestors Indicates that the widget's ancestors + are kept non-native even though the widget itself is native. + + \value WA_X11NetWmWindowTypeDesktop Adds _NET_WM_WINDOW_TYPE_DESKTOP to the + window's _NET_WM_WINDOW_TYPE X11 window property. See + http://standards.freedesktop.org/wm-spec/ for more details. This attribute + has no effect on non-X11 platforms. + + \value WA_X11NetWmWindowTypeDock Adds _NET_WM_WINDOW_TYPE_DOCK to the + window's _NET_WM_WINDOW_TYPE X11 window property. See + http://standards.freedesktop.org/wm-spec/ for more details. This attribute + has no effect on non-X11 platforms. + + \value WA_X11NetWmWindowTypeToolBar Adds _NET_WM_WINDOW_TYPE_TOOLBAR to the + window's _NET_WM_WINDOW_TYPE X11 window property. See + http://standards.freedesktop.org/wm-spec/ for more details. This attribute + has no effect on non-X11 platforms. \note Qt automaticaly sets this + attribute for QToolBar. + + \value WA_X11NetWmWindowTypeMenu Adds _NET_WM_WINDOW_TYPE_MENU to the + window's _NET_WM_WINDOW_TYPE X11 window property. See + http://standards.freedesktop.org/wm-spec/ for more details. This attribute + has no effect on non-X11 platforms. \note Qt automatically sets this + attribute for QMenu when torn-off. + + \value WA_X11NetWmWindowTypeUtility Adds _NET_WM_WINDOW_TYPE_UTILITY to the + window's _NET_WM_WINDOW_TYPE X11 window property. See + http://standards.freedesktop.org/wm-spec/ for more details. This attribute + has no effect on non-X11 platforms. \note Qt automatically sets this + attribute for the Qt::Tool window type. + + \value WA_X11NetWmWindowTypeSplash Adds _NET_WM_WINDOW_TYPE_SPLASH to the + window's _NET_WM_WINDOW_TYPE X11 window property. See + http://standards.freedesktop.org/wm-spec/ for more details. This attribute + has no effect on non-X11 platforms. \note Qt automatically sets this + attribute for the Qt::SplashScreen window type. + + \value WA_X11NetWmWindowTypeDialog Adds _NET_WM_WINDOW_TYPE_DIALOG + to the window's _NET_WM_WINDOW_TYPE X11 window property. See + http://standards.freedesktop.org/wm-spec/ for more details. This + attribute has no effect on non-X11 platforms. \note Qt automatically sets + this attribute for the Qt::Dialog and Qt::Sheet window types. + + \value WA_X11NetWmWindowTypeDropDownMenu Adds + _NET_WM_WINDOW_TYPE_DROPDOWN_MENU to the window's + _NET_WM_WINDOW_TYPE X11 window property. See + http://standards.freedesktop.org/wm-spec/ for more details. This + attribute has no effect on non-X11 platforms. \note Qt + automatically sets this attribute for QMenus added to a QMenuBar. + + \value WA_X11NetWmWindowTypePopupMenu Adds _NET_WM_WINDOW_TYPE_POPUP_MENU + to the window's _NET_WM_WINDOW_TYPE X11 window property. See + http://standards.freedesktop.org/wm-spec/ for more details. This attribute + has no effect on non-X11 platforms. \note Qt automatically sets this + attribute for QMenu. + + \value WA_X11NetWmWindowTypeToolTip Adds _NET_WM_WINDOW_TYPE_TOOLTIP to the + window's _NET_WM_WINDOW_TYPE X11 window property. See + http://standards.freedesktop.org/wm-spec/ for more details. This attribute + has no effect on non-X11 platforms. \note Qt automatically sets this + attribute for the Qt::ToolTip window type. + + \value WA_X11NetWmWindowTypeNotification Adds + _NET_WM_WINDOW_TYPE_NOTIFICATION to the window's _NET_WM_WINDOW_TYPE X11 + window property. See http://standards.freedesktop.org/wm-spec/ for more + details. This attribute has no effect on non-X11 platforms. + + \value WA_X11NetWmWindowTypeCombo Adds _NET_WM_WINDOW_TYPE_COMBO + to the window's _NET_WM_WINDOW_TYPE X11 window property. See + http://standards.freedesktop.org/wm-spec/ for more details. This attribute + has no effect on non-X11 platforms. \note Qt automatically sets this + attribute for the QComboBox pop-up. + + \value WA_X11NetWmWindowTypeDND Adds _NET_WM_WINDOW_TYPE_DND to + the window's _NET_WM_WINDOW_TYPE X11 window property. See + http://standards.freedesktop.org/wm-spec/ for more details. This attribute + has no effect on non-X11 platforms. \note Qt automatically sets this + attribute on the feedback widget used during a drag. + + \value WA_MacFrameworkScaled Enables resolution independence aware mode + on Mac when using Carbon. This attribute has no effect on Cocoa. + The attribute is off by default and can be enabled on a per-window basis. + + \value WA_AcceptTouchEvents Allows touch events (see QTouchEvent) + to be sent to the widget. Must be set on all widgets that can + handle touch events. Without this attribute set, events from a + touch device will be sent as mouse events. + + \value WA_TouchPadAcceptSingleTouchEvents Allows touchpad single + touch events to be sent to the widget. + + \omitvalue WA_SetLayoutDirection + \omitvalue WA_InputMethodTransparent + \omitvalue WA_WState_CompressKeys + \omitvalue WA_WState_ConfigPending + \omitvalue WA_WState_Created + \omitvalue WA_WState_DND + \omitvalue WA_WState_ExplicitShowHide + \omitvalue WA_WState_Hidden + \omitvalue WA_WState_InPaintEvent + \omitvalue WA_WState_OwnSizePolicy + \omitvalue WA_WState_Polished + \omitvalue WA_WState_Reparented + \omitvalue WA_WState_Visible + \omitvalue WA_SetWindowIcon + \omitvalue WA_PendingUpdate + \omitvalue WA_LaidOut + \omitvalue WA_GrabbedShortcut + \omitvalue WA_DontShowOnScreen + \omitvalue WA_InvalidSize + \omitvalue WA_ForceUpdatesDisabled + \omitvalue WA_NoX11EventCompression + \omitvalue WA_TintedBackground + \omitvalue WA_X11OpenGLOverlay + \omitvalue WA_CanHostQMdiSubWindowTitleBar + \omitvalue WA_AttributeCount + \omitvalue WA_StyleSheet + \omitvalue WA_X11BypassTransientForHint + \omitvalue WA_SetWindowModality + \omitvalue WA_WState_WindowOpacitySet + \omitvalue WA_WState_AcceptedTouchBeginEvent +*/ + +/*! \typedef Qt::HANDLE + + Platform-specific handle type for system objects. This is + equivalent to \c{void *} on Mac OS X and embedded Linux, + and to \c{unsigned long} on X11. On Windows it is the + DWORD returned by the Win32 function getCurrentThreadId(). + + \warning Using this type is not portable. +*/ + +/*! + \enum Qt::Key + + The key names used by Qt. + + \value Key_Escape + \value Key_Tab + \value Key_Backtab + \omitvalue Key_BackTab + \value Key_Backspace + \omitvalue Key_BackSpace + \value Key_Return + \value Key_Enter Typically located on the keypad. + \value Key_Insert + \value Key_Delete + \value Key_Pause + \value Key_Print + \value Key_SysReq + \value Key_Clear + \value Key_Home + \value Key_End + \value Key_Left + \value Key_Up + \value Key_Right + \value Key_Down + \value Key_PageUp + \omitvalue Key_Prior + \value Key_PageDown + \omitvalue Key_Next + \value Key_Shift + \value Key_Control On Mac OS X, this corresponds to the Command keys. + \value Key_Meta On Mac OS X, this corresponds to the Control keys. + On Windows keyboards, this key is mapped to the + Windows key. + \value Key_Alt + \value Key_AltGr On Windows, when the KeyDown event for this key is + sent, the Ctrl+Alt modifiers are also set. + \value Key_CapsLock + \value Key_NumLock + \value Key_ScrollLock + \value Key_F1 + \value Key_F2 + \value Key_F3 + \value Key_F4 + \value Key_F5 + \value Key_F6 + \value Key_F7 + \value Key_F8 + \value Key_F9 + \value Key_F10 + \value Key_F11 + \value Key_F12 + \value Key_F13 + \value Key_F14 + \value Key_F15 + \value Key_F16 + \value Key_F17 + \value Key_F18 + \value Key_F19 + \value Key_F20 + \value Key_F21 + \value Key_F22 + \value Key_F23 + \value Key_F24 + \value Key_F25 + \value Key_F26 + \value Key_F27 + \value Key_F28 + \value Key_F29 + \value Key_F30 + \value Key_F31 + \value Key_F32 + \value Key_F33 + \value Key_F34 + \value Key_F35 + \value Key_Super_L + \value Key_Super_R + \value Key_Menu + \value Key_Hyper_L + \value Key_Hyper_R + \value Key_Help + \value Key_Direction_L + \value Key_Direction_R + \value Key_Space + \value Key_Any + \value Key_Exclam + \value Key_QuoteDbl + \value Key_NumberSign + \value Key_Dollar + \value Key_Percent + \value Key_Ampersand + \value Key_Apostrophe + \value Key_ParenLeft + \value Key_ParenRight + \value Key_Asterisk + \value Key_Plus + \value Key_Comma + \value Key_Minus + \value Key_Period + \value Key_Slash + \value Key_0 + \value Key_1 + \value Key_2 + \value Key_3 + \value Key_4 + \value Key_5 + \value Key_6 + \value Key_7 + \value Key_8 + \value Key_9 + \value Key_Colon + \value Key_Semicolon + \value Key_Less + \value Key_Equal + \value Key_Greater + \value Key_Question + \value Key_At + \value Key_A + \value Key_B + \value Key_C + \value Key_D + \value Key_E + \value Key_F + \value Key_G + \value Key_H + \value Key_I + \value Key_J + \value Key_K + \value Key_L + \value Key_M + \value Key_N + \value Key_O + \value Key_P + \value Key_Q + \value Key_R + \value Key_S + \value Key_T + \value Key_U + \value Key_V + \value Key_W + \value Key_X + \value Key_Y + \value Key_Z + \value Key_BracketLeft + \value Key_Backslash + \value Key_BracketRight + \value Key_AsciiCircum + \value Key_Underscore + \value Key_QuoteLeft + \value Key_BraceLeft + \value Key_Bar + \value Key_BraceRight + \value Key_AsciiTilde + \value Key_nobreakspace + \value Key_exclamdown + \value Key_cent + \value Key_sterling + \value Key_currency + \value Key_yen + \value Key_brokenbar + \value Key_section + \value Key_diaeresis + \value Key_copyright + \value Key_ordfeminine + \value Key_guillemotleft + \value Key_notsign + \value Key_hyphen + \value Key_registered + \value Key_macron + \value Key_degree + \value Key_plusminus + \value Key_twosuperior + \value Key_threesuperior + \value Key_acute + \value Key_mu + \value Key_paragraph + \value Key_periodcentered + \value Key_cedilla + \value Key_onesuperior + \value Key_masculine + \value Key_guillemotright + \value Key_onequarter + \value Key_onehalf + \value Key_threequarters + \value Key_questiondown + \value Key_Agrave + \value Key_Aacute + \value Key_Acircumflex + \value Key_Atilde + \value Key_Adiaeresis + \value Key_Aring + \value Key_AE + \value Key_Ccedilla + \value Key_Egrave + \value Key_Eacute + \value Key_Ecircumflex + \value Key_Ediaeresis + \value Key_Igrave + \value Key_Iacute + \value Key_Icircumflex + \value Key_Idiaeresis + \value Key_ETH + \value Key_Ntilde + \value Key_Ograve + \value Key_Oacute + \value Key_Ocircumflex + \value Key_Otilde + \value Key_Odiaeresis + \value Key_multiply + \value Key_Ooblique + \value Key_Ugrave + \value Key_Uacute + \value Key_Ucircumflex + \value Key_Udiaeresis + \value Key_Yacute + \value Key_THORN + \value Key_ssharp + \omitvalue Key_agrave + \omitvalue Key_aacute + \omitvalue Key_acircumflex + \omitvalue Key_atilde + \omitvalue Key_adiaeresis + \omitvalue Key_aring + \omitvalue Key_ae + \omitvalue Key_ccedilla + \omitvalue Key_egrave + \omitvalue Key_eacute + \omitvalue Key_ecircumflex + \omitvalue Key_ediaeresis + \omitvalue Key_igrave + \omitvalue Key_iacute + \omitvalue Key_icircumflex + \omitvalue Key_idiaeresis + \omitvalue Key_eth + \omitvalue Key_ntilde + \omitvalue Key_ograve + \omitvalue Key_oacute + \omitvalue Key_ocircumflex + \omitvalue Key_otilde + \omitvalue Key_odiaeresis + \value Key_division + \omitvalue Key_oslash + \omitvalue Key_ugrave + \omitvalue Key_uacute + \omitvalue Key_ucircumflex + \omitvalue Key_udiaeresis + \omitvalue Key_yacute + \omitvalue Key_thorn + \value Key_ydiaeresis + \value Key_Multi_key + \value Key_Codeinput + \value Key_SingleCandidate + \value Key_MultipleCandidate + \value Key_PreviousCandidate + \value Key_Mode_switch + \value Key_Kanji + \value Key_Muhenkan + \value Key_Henkan + \value Key_Romaji + \value Key_Hiragana + \value Key_Katakana + \value Key_Hiragana_Katakana + \value Key_Zenkaku + \value Key_Hankaku + \value Key_Zenkaku_Hankaku + \value Key_Touroku + \value Key_Massyo + \value Key_Kana_Lock + \value Key_Kana_Shift + \value Key_Eisu_Shift + \value Key_Eisu_toggle + \value Key_Hangul + \value Key_Hangul_Start + \value Key_Hangul_End + \value Key_Hangul_Hanja + \value Key_Hangul_Jamo + \value Key_Hangul_Romaja + \value Key_Hangul_Jeonja + \value Key_Hangul_Banja + \value Key_Hangul_PreHanja + \value Key_Hangul_PostHanja + \value Key_Hangul_Special + \value Key_Dead_Grave + \value Key_Dead_Acute + \value Key_Dead_Circumflex + \value Key_Dead_Tilde + \value Key_Dead_Macron + \value Key_Dead_Breve + \value Key_Dead_Abovedot + \value Key_Dead_Diaeresis + \value Key_Dead_Abovering + \value Key_Dead_Doubleacute + \value Key_Dead_Caron + \value Key_Dead_Cedilla + \value Key_Dead_Ogonek + \value Key_Dead_Iota + \value Key_Dead_Voiced_Sound + \value Key_Dead_Semivoiced_Sound + \value Key_Dead_Belowdot + \value Key_Dead_Hook + \value Key_Dead_Horn + \value Key_Back + \value Key_Forward + \value Key_Stop + \value Key_Refresh + \value Key_VolumeDown + \value Key_VolumeMute + \value Key_VolumeUp + \value Key_BassBoost + \value Key_BassUp + \value Key_BassDown + \value Key_TrebleUp + \value Key_TrebleDown + \value Key_MediaPlay + \value Key_MediaStop + \value Key_MediaPrevious + \omitvalue Key_MediaPrev + \value Key_MediaNext + \value Key_MediaRecord + \value Key_HomePage + \value Key_Favorites + \value Key_Search + \value Key_Standby + \value Key_OpenUrl + \value Key_LaunchMail + \value Key_LaunchMedia + \value Key_Launch0 + \value Key_Launch1 + \value Key_Launch2 + \value Key_Launch3 + \value Key_Launch4 + \value Key_Launch5 + \value Key_Launch6 + \value Key_Launch7 + \value Key_Launch8 + \value Key_Launch9 + \value Key_LaunchA + \value Key_LaunchB + \value Key_LaunchC + \value Key_LaunchD + \value Key_LaunchE + \value Key_LaunchF + \value Key_MediaLast + \value Key_unknown + + \value Key_Call + \value Key_Context1 + \value Key_Context2 + \value Key_Context3 + \value Key_Context4 + \value Key_Flip + \value Key_Hangup + \value Key_No + \value Key_Select + \value Key_Yes + + \value Key_Execute + \value Key_Printer + \value Key_Play + \value Key_Sleep + \value Key_Zoom + \value Key_Cancel + + \sa QKeyEvent::key() +*/ + +/*! + \enum Qt::HitTestAccuracy + + This enum contains the types of accuracy that can be used by the + QTextDocument class when testing for mouse clicks on text documents. + + \value ExactHit The point at which input occurred must coincide + exactly with input-sensitive parts of the document. + \value FuzzyHit The point at which input occurred can lie close to + input-sensitive parts of the document. + + This enum is defined in the \c <QTextDocument> header file. +*/ + +/*! + \enum Qt::WhiteSpaceMode + + This enum describes the types of whitespace mode that are used by + the QTextDocument class to meet the requirements of different kinds + of textual information. + + \value WhiteSpaceNormal The whitespace mode used to display + normal word wrapped text in paragraphs. + \value WhiteSpacePre A preformatted text mode in which + whitespace is reproduced exactly. + \value WhiteSpaceNoWrap + + \omitvalue WhiteSpaceModeUndefined + + This enum is defined in the \c <QTextDocument> header file. +*/ + +/*! + \enum Qt::ButtonState_enum + \compat + \value ShiftButton + \value ControlButton + \value AltButton + \value MetaButton + \value Keypad + \value KeyButtonMask + + Use Qt::KeyboardModifier instead. +*/ + +/*! + \typedef Qt::ButtonState + \compat + + Use Qt::KeyboardModifier instead. +*/ + +/*! + \enum Qt::CheckState + + This enum describes the state of checkable items, controls, and widgets. + + \value Unchecked The item is unchecked. + \value PartiallyChecked The item is partially checked. Items in hierarchical models + may be partially checked if some, but not all, of their + children are checked. + \value Checked The item is checked. + + \sa QCheckBox, Qt::ItemFlags, Qt::ItemDataRole +*/ + + +/*! + \enum Qt::ToolButtonStyle + + The style of the tool button, describing how the button's text and + icon should be displayed. + + \value ToolButtonIconOnly Only display the icon. + \value ToolButtonTextOnly Only display the text. + \value ToolButtonTextBesideIcon The text appears beside the icon. + \value ToolButtonTextUnderIcon The text appears under the icon. + \value ToolButtonFollowStyle Follow the \l{QStyle::SH_ToolButtonStyle}{style}. +*/ + +/*! + \enum Qt::Corner + + This enum type specifies a corner in a rectangle: + + \value TopLeftCorner The top-left corner of the rectangle. + \value TopRightCorner The top-right corner of the rectangle. + \value BottomLeftCorner The bottom-left corner of the rectangle. + \value BottomRightCorner The bottom-right corner of the rectangle. + + \omitvalue TopLeft + \omitvalue TopRight + \omitvalue BottomLeft + \omitvalue BottomRight +*/ + +/*! + \enum Qt::ScrollBarPolicy + + This enum type describes the various modes of QAbstractScrollArea's scroll + bars. + + \value ScrollBarAsNeeded QAbstractScrollArea shows a scroll bar when the + content is too large to fit and not otherwise. This is the + default. + + \value ScrollBarAlwaysOff QAbstractScrollArea never shows a scroll bar. + + \value ScrollBarAlwaysOn QAbstractScrollArea always shows a scroll bar. + + (The modes for the horizontal and vertical scroll bars are + independent.) +*/ + +/*! + \enum Qt::ArrowType + + \value NoArrow + \value UpArrow + \value DownArrow + \value LeftArrow + \value RightArrow +*/ + +/*! + \enum Qt::FocusReason + + This enum specifies why the focus changed. It will be passed + through QWidget::setFocus and can be retrieved in the QFocusEvent + sent to the widget upon focus change. + + \value MouseFocusReason A mouse action occurred. + \value TabFocusReason The Tab key was pressed. + \value BacktabFocusReason A Backtab occurred. The input for this may + include the Shift or Control keys; + e.g. Shift+Tab. + \value ActiveWindowFocusReason The window system made this window either + active or inactive. + \value PopupFocusReason The application opened/closed a pop-up that + grabbed/released the keyboard focus. + \value ShortcutFocusReason The user typed a label's buddy shortcut + \value MenuBarFocusReason The menu bar took focus. + \value OtherFocusReason Another reason, usually application-specific. + + \omitvalue NoFocusReason + + \sa {Keyboard Focus} +*/ + +/*! + \enum Qt::WindowState + + \keyword window state + + This enum type is used to specify the current state of a top-level + window. + + The states are + + \value WindowNoState The window has no state set (in normal state). + \value WindowMinimized The window is minimized (i.e. iconified). + \value WindowMaximized The window is maximized with a frame around it. + \value WindowFullScreen The window fills the entire screen without any frame around it. + \value WindowActive The window is the active window, i.e. it has keyboard focus. + +*/ + +/*! + \enum Qt::ContextMenuPolicy + + This enum type defines the various policies a widget can have with + respect to showing a context menu. + + \value NoContextMenu the widget does not feature a context menu, + context menu handling is deferred to the widget's parent. + \value PreventContextMenu the widget does not feature a context + menu, and in contrast to \c NoContextMenu, the handling is \e not + deferred to the widget's parent. This means that all right mouse + button events are guaranteed to be delivered to the widget itself + through mousePressEvent(), and mouseReleaseEvent(). + \value DefaultContextMenu the widget's QWidget::contextMenuEvent() handler is called. + \value ActionsContextMenu the widget displays its QWidget::actions() as context menu. + \value CustomContextMenu the widget emits the QWidget::customContextMenuRequested() signal. +*/ + +/*! + \enum Qt::FocusPolicy + + This enum type defines the various policies a widget can have with + respect to acquiring keyboard focus. + + \value TabFocus the widget accepts focus by tabbing. + \value ClickFocus the widget accepts focus by clicking. + \value StrongFocus the widget accepts focus by both tabbing + and clicking. On Mac OS X this will also + be indicate that the widget accepts tab focus + when in 'Text/List focus mode'. + \value WheelFocus like Qt::StrongFocus plus the widget accepts + focus by using the mouse wheel. + \value NoFocus the widget does not accept focus. + +*/ + +/*! + \enum Qt::ShortcutContext + + For a QEvent::Shortcut event to occur, the shortcut's key sequence + must be entered by the user in a context where the shortcut is + active. The possible contexts are these: + + \value WidgetShortcut The shortcut is active when its + parent widget has focus. + \value WidgetWithChildrenShortcut The shortcut is active + when its parent widget, or any of its children has focus. + Children which are top-level widgets, except pop-ups, are + not affected by this shortcut context. + \value WindowShortcut The shortcut is active when its + parent widget is a logical subwidget of the + active top-level window. + \value ApplicationShortcut The shortcut is active when one of + the applications windows are active. +*/ + +/*! + \typedef Qt::WFlags + + Synonym for Qt::WindowFlags. +*/ + +/*! + \enum Qt::WindowType + + \keyword window flag + + This enum type is used to specify various window-system properties + for the widget. They are fairly unusual but necessary in a few + cases. Some of these flags depend on whether the underlying window + manager supports them. + + The main types are + + \value Widget This is the default type for QWidget. Widgets of + this type are child widgets if they have a parent, + and independent windows if they have no parent. + See also Qt::Window and Qt::SubWindow. + + \value Window Indicates that the widget is a window, usually + with a window system frame and a title bar, + irrespective of whether the widget has a parent or + not. Note that it is not possible to unset this + flag if the widget does not have a parent. + + \value Dialog Indicates that the widget is a window that should + be decorated as a dialog (i.e., typically no + maximize or minimize buttons in the title bar). + This is the default type for QDialog. If you want + to use it as a modal dialog, it should be launched + from another window, or have a parent and used + with the QWidget::windowModality property. If you make + it modal, the dialog will prevent other top-level + windows in the application from getting any input. + We refer to a top-level window that has a parent + as a \e secondary window. + + \value Sheet Indicates that the window is a Macintosh sheet. Since + using a sheet implies window modality, the recommended + way is to use QWidget::setWindowModality(), or + QDialog::open(), instead. + + \value Drawer Indicates that the widget is a Macintosh drawer. + + \value Popup Indicates that the widget is a pop-up top-level + window, i.e. that it is modal, but has a window + system frame appropriate for pop-up menus. + + \value Tool Indicates that the widget is a tool window. A tool + window is often a small window with a smaller than + usual title bar and decoration, typically used for + collections of tool buttons. It there is a parent, + the tool window will always be kept on top of it. + If there isn't a parent, you may consider using + Qt::WindowStaysOnTopHint as well. If the window + system supports it, a tool window can be decorated + with a somewhat lighter frame. It can also be + combined with Qt::FramelessWindowHint. + \br + \br + On Mac OS X, tool windows correspond to the + \l{http://developer.apple.com/documentation/Carbon/Conceptual/HandlingWindowsControls/hitb-wind_cont_concept/chapter_2_section_2.html}{Floating} + class of windows. This means that the window lives on a + level above normal windows; it impossible to put a normal + window on top of it. By default, tool windows will disappear + when the application is inactive. This can be controlled by + the Qt::WA_MacAlwaysShowToolWindow attribute. + + \value ToolTip Indicates that the widget is a tooltip. This is + used internally to implement + \l{QWidget::toolTip}{tooltips}. + + \value SplashScreen Indicates that the window is a splash screen. + This is the default type for QSplashScreen. + + \value Desktop Indicates that this widget is the desktop. This + is the type for QDesktopWidget. + + \value SubWindow Indicates that this widget is a sub-window, such + as a QMdiSubWindow widget. + + There are also a number of flags which you can use to customize + the appearance of top-level windows. These have no effect on other + windows: + + \value MSWindowsFixedSizeDialogHint Gives the window a thin dialog border on Windows. + This style is traditionally used for fixed-size dialogs. + + \value MSWindowsOwnDC Gives the window its own display + context on Windows. + + \value X11BypassWindowManagerHint Bypass the window + manager completely. This results in a borderless window + that is not managed at all (i.e., no keyboard input unless + you call QWidget::activateWindow() manually). + + \value FramelessWindowHint Produces a borderless window. + The user cannot move or resize a borderless window via the window + system. On X11, the result of the flag is dependent on the window manager and its + ability to understand Motif and/or NETWM hints. Most existing + modern window managers can handle this. + + The \c CustomizeWindowHint flag is used to enable customization of + the window controls. This flag must be set to allow the \c + WindowTitleHint, \c WindowSystemMenuHint, \c + WindowMinimizeButtonHint, \c WindowMaximizeButtonHint and \c + WindowCloseButtonHint flags to be changed. + + \value CustomizeWindowHint Turns off the default window title hints. + + \value WindowTitleHint Gives the window a title bar. + + \value WindowSystemMenuHint Adds a window system menu, and + possibly a close button (for example on Mac). If you need to hide + or show a close button, it is more portable to use \c + WindowCloseButtonHint. + + \value WindowMinimizeButtonHint Adds a minimize button. On + some platforms this implies Qt::WindowSystemMenuHint for it to work. + + \value WindowMaximizeButtonHint Adds a maximize button. On + some platforms this implies Qt::WindowSystemMenuHint for it to work. + + \value WindowMinMaxButtonsHint Adds a minimize and a maximize + button. On some platforms this implies Qt::WindowSystemMenuHint for it to work. + + \value WindowCloseButtonHint Adds a close button. On + some platforms this implies Qt::WindowSystemMenuHint for it + to work. + + \value WindowContextHelpButtonHint Adds a context help button to dialogs. + On some platforms this implies Qt::WindowSystemMenuHint for it to work. + + \value MacWindowToolBarButtonHint On Mac OS X adds a tool bar button (i.e., + the oblong button that is on the top right of windows that have toolbars. + + \value BypassGraphicsProxyWidget Prevents the window and its children from + automatically embedding themselves into a QGraphicsProxyWidget if the + parent widget is already embedded. You can set this flag if you + want your widget to always be a toplevel widget on the desktop, + regardless of whether the parent widget is embedded in a scene or + not. + + \value WindowShadeButtonHint + + \value WindowStaysOnTopHint Informs the window system that the + window should stay on top of all other windows. Note that + on some window managers on X11 you also have to pass + Qt::X11BypassWindowManagerHint for this flag to work + correctly. + + \value WindowStaysOnBottomHint Informs the window system that the + window should stay on bottom of all other windows. Note + that on X11 this hint will work only in window managers + that support _NET_WM_STATE_BELOW atom. If a window always + on the bottom has a parent, the parent will also be left on + the bottom. This window hint is currently not implemented + for Mac OS X. + + \value WindowOkButtonHint Adds an OK button to the window decoration of a dialog. + Only supported for Windows CE. + + \value WindowCancelButtonHint Adds a Cancel button to the window decoration of a dialog. + Only supported for Windows CE. + + \value WindowType_Mask A mask for extracting the window type + part of the window flags. + + Obsolete flags: + + \value WMouseNoMask Use Qt::WA_MouseNoMask instead. + \value WDestructiveClose Use Qt::WA_DeleteOnClose instead. + \value WStaticContents Use Qt::WA_StaticContents instead. + \value WGroupLeader No longer needed. + \value WShowModal Use QWidget::windowModality instead. + \value WNoMousePropagation Use Qt::WA_NoMousePropagation instead. + \value WType_TopLevel Use Qt::Window instead. + \value WType_Dialog Use Qt::Dialog instead. + \value WType_Popup Use Qt::Popup instead. + \value WType_Desktop Use Qt::Desktop instead. + \value WType_Mask Use Qt::WindowType_Mask instead. + + \value WStyle_Customize No longer needed. + \value WStyle_NormalBorder No longer needed. + \value WStyle_DialogBorder Use Qt::MSWindowsFixedSizeDialogHint instead. + \value WStyle_NoBorder Use Qt::FramelessWindowHint instead. + \value WStyle_Title Use Qt::WindowTitleHint instead. + \value WStyle_SysMenu Use Qt::WindowSystemMenuHint instead. + \value WStyle_Minimize Use Qt::WindowMinimizeButtonHint instead. + \value WStyle_Maximize Use Qt::WindowMaximizeButtonHint instead. + \value WStyle_MinMax Use Qt::WindowMinMaxButtonsHint instead. + \value WStyle_Tool Use Qt::Tool instead. + \value WStyle_StaysOnTop Use Qt::WindowStaysOnTopHint instead. + \value WStyle_ContextHelp Use Qt::WindowContextHelpButtonHint instead. + + \value WPaintDesktop No longer needed. + \value WPaintClever No longer needed. + + \value WX11BypassWM Use Qt::X11BypassWindowManagerHint instead. + \value WWinOwnDC Use Qt::MSWindowsOwnDC instead. + \value WMacSheet Use Qt::Sheet instead. + \value WMacDrawer Use Qt::Drawer instead. + + \value WStyle_Splash Use Qt::SplashScreen instead. + + \value WNoAutoErase No longer needed. + \value WRepaintNoErase No longer needed. + \value WNorthWestGravity Use Qt::WA_StaticContents instead. + \value WType_Modal Use Qt::Dialog and QWidget::windowModality instead. + \value WStyle_Dialog Use Qt::Dialog instead. + \value WStyle_NoBorderEx Use Qt::FramelessWindowHint instead. + \value WResizeNoErase No longer needed. + \value WMacNoSheet No longer needed. + + \sa QWidget::windowFlags, {Window Flags Example} +*/ + +/*! + \enum Qt::DropAction + + \value CopyAction Copy the data to the target. + \value MoveAction Move the data from the source to the target. + \value LinkAction Create a link from the source to the target. + \value ActionMask + \value IgnoreAction Ignore the action (do nothing with the data). + \value TargetMoveAction On Windows, this value is used when the ownership of the D&D data + should be taken over by the target application, + i.e., the source application should not delete + the data. + \br + On X11 this value is used to do a move. + \br + TargetMoveAction is not used on the Mac. +*/ + +#if defined(Q_OS_WIN) && defined(QT3_SUPPORT) +/*! + \enum Qt::WindowsVersion + \compat + + \value WV_32s + \value WV_95 + \value WV_98 + \value WV_Me + \value WV_DOS_based + \value WV_NT + \value WV_2000 + \value WV_XP + \value WV_2003 + \value WV_NT_based + \value WV_CE + \value WV_CENET + \value WV_CE_based + \value WV_CE_5 + \value WV_CE_6 +*/ +#endif + +#if defined(Q_OS_MAC) && defined(QT3_SUPPORT) +/*! + \enum Qt::MacintoshVersion + \compat + + \value MV_Unknown Use QSysInfo::MV_Unknown instead. + \value MV_9 Use QSysInfo::MV_9 instead. + \value MV_10_DOT_0 Use QSysInfo::MV_10_0 instead. + \value MV_10_DOT_1 Use QSysInfo::MV_10_1 instead. + \value MV_10_DOT_2 Use QSysInfo::MV_10_2 instead. + \value MV_10_DOT_3 Use QSysInfo::MV_10_3 instead. + \value MV_10_DOT_4 Use QSysInfo::MV_10_4 instead. + + \value MV_CHEETAH Use QSysInfo::MV_10_0 instead. + \value MV_PUMA Use QSysInfo::MV_10_1 instead. + \value MV_JAGUAR Use QSysInfo::MV_10_2 instead. + \value MV_PANTHER Use QSysInfo::MV_10_3 instead. + \value MV_TIGER Use QSysInfo::MV_10_4 instead. + + \sa QSysInfo::MacVersion +*/ +#endif + +/*! \typedef Qt::ToolBarDock + \compat + + Use Qt::Dock instead. +*/ + +/*! + \enum Qt::Dock + \compat + + Each dock window can be in one of the following positions: + + \value DockUnmanaged not managed by a Q3MainWindow. + + \value DockTornOff the dock window floats as its own top level + window which always stays on top of the main window. + + \value DockTop above the central widget, below the menu bar. + + \value DockBottom below the central widget, above the status bar. + + \value DockRight to the right of the central widget. + + \value DockLeft to the left of the central widget. + + \value DockMinimized the dock window is not shown (this is + effectively a 'hidden' dock area); the handles of all minimized + dock windows are drawn in one row below the menu bar. + + \omitvalue Bottom + \omitvalue Left + \omitvalue Minimized + \omitvalue Right + \omitvalue Top + \omitvalue TornOff + \omitvalue Unmanaged +*/ + +/*! + \enum Qt::AnchorAttribute + + An anchor has one or more of the following attributes: + + \value AnchorName the name attribute of the anchor. This attribute is + used when scrolling to an anchor in the document. + + \value AnchorHref the href attribute of the anchor. This attribute is + used when a link is clicked to determine what content to load. +*/ + +/*! + \enum Qt::SortOrder + + This enum describes how the items in a widget are sorted. + + \value AscendingOrder The items are sorted ascending e.g. starts with + 'AAA' ends with 'ZZZ' in Latin-1 locales + + \value DescendingOrder The items are sorted descending e.g. starts with + 'ZZZ' ends with 'AAA' in Latin-1 locales + + \omitvalue Ascending + \omitvalue Descending +*/ + +/*! + \enum Qt::ClipOperation + + \value NoClip This operation turns clipping off. + + \value ReplaceClip Replaces the current clip path/rect/region with + the one supplied in the function call. + + \value IntersectClip Intersects the current clip path/rect/region + with the one supplied in the function call. + + \value UniteClip Unites the current clip path/rect/region with the + one supplied in the function call. +*/ + +/*! + \enum Qt::ItemSelectionMode + + This enum is used in QGraphicsItem, QGraphicsScene and QGraphicsView to + specify how items are selected, or how to determine if a shapes and items + collide. + + \value ContainsItemShape The output list contains only items whose + \l{QGraphicsItem::shape()}{shape} is fully contained inside the + selection area. Items that intersect with the area's outline are + not included. + + \value IntersectsItemShape The output list contains both items whose + \l{QGraphicsItem::shape()}{shape} is fully contained inside the + selection area, and items that intersect with the area's + outline. This is a common mode for rubber band selection. + + \value ContainsItemBoundingRect The output list contains only items whose + \l{QGraphicsItem::boundingRect()}{bounding rectangle} is fully + contained inside the selection area. Items that intersect with the + area's outline are not included. + + \value IntersectsItemBoundingRect The output list contains both items + whose \l{QGraphicsItem::boundingRect()}{bounding rectangle} is + fully contained inside the selection area, and items that intersect + with the area's outline. This method is commonly used for + determining areas that need redrawing. + + \sa QGraphicsScene::items(), QGraphicsScene::collidingItems(), + QGraphicsView::items(), QGraphicsItem::collidesWithItem(), + QGraphicsItem::collidesWithPath() +*/ + +/*! + \enum Qt::FillRule + + Specifies which method should be used to fill the paths and polygons. + + \value OddEvenFill Specifies that the region is filled using the + odd even fill rule. With this rule, we determine whether a point + is inside the shape by using the following method. + Draw a horizontal line from the point to a location outside the shape, + and count the number of intersections. If the number of intersections + is an odd number, the point is inside the shape. This mode is the + default. + + \value WindingFill Specifies that the region is filled using the + non zero winding rule. With this rule, we determine whether a + point is inside the shape by using the following method. + Draw a horizontal line from the point to a location outside the shape. + Determine whether the direction of the line at each intersection point + is up or down. The winding number is determined by summing the + direction of each intersection. If the number is non zero, the point + is inside the shape. This fill mode can also in most cases be considered + as the intersection of closed shapes. +*/ + +/*! + \enum Qt::PaintUnit + + \compat + + \value PixelUnit + \value LoMetricUnit Obsolete + \value HiMetricUnit Obsolete + \value LoEnglishUnit Obsolete + \value HiEnglishUnit Obsolete + \value TwipsUnit Obsolete +*/ + +/*! + \enum Qt::TextFormat + + This enum is used in widgets that can display both plain text and + rich text, e.g. QLabel. It is used for deciding whether a text + string should be interpreted as one or the other. This is normally + done by passing one of the enum values to a setTextFormat() + function. + + \value PlainText The text string is interpreted as a plain text + string. + + \value RichText The text string is interpreted as a rich text + string. + + \value AutoText The text string is interpreted as for + Qt::RichText if Qt::mightBeRichText() returns true, otherwise + as Qt::PlainText. + + \value LogText A special, limited text format which is only used + by Q3TextEdit in an optimized mode. +*/ + +/*! + \enum Qt::CursorShape + + This enum type defines the various cursors that can be used. + + The standard arrow cursor is the default for widgets in a normal state. + + \value ArrowCursor \inlineimage cursor-arrow.png + The standard arrow cursor. + \value UpArrowCursor \inlineimage cursor-uparrow.png + An arrow pointing upwards toward the top of the screen. + \value CrossCursor \inlineimage cursor-cross.png + A crosshair cursor, typically used to help the + user accurately select a point on the screen. + \value WaitCursor \inlineimage cursor-wait.png + An hourglass or watch cursor, usually shown during + operations that prevent the user from interacting with + the application. + \value IBeamCursor \inlineimage cursor-ibeam.png + A caret or ibeam cursor, indicating that a widget can + accept and display text input. + \value SizeVerCursor \inlineimage cursor-sizev.png + A cursor used for elements that are used to vertically + resize top-level windows. + \value SizeHorCursor \inlineimage cursor-sizeh.png + A cursor used for elements that are used to horizontally + resize top-level windows. + \value SizeBDiagCursor \inlineimage cursor-sizeb.png + A cursor used for elements that are used to diagonally + resize top-level windows at their top-right and + bottom-left corners. + \value SizeFDiagCursor \inlineimage cursor-sizef.png + A cursor used for elements that are used to diagonally + resize top-level windows at their top-left and + bottom-right corners. + \value SizeAllCursor \inlineimage cursor-sizeall.png + A cursor used for elements that are used to resize + top-level windows in any direction. + \value BlankCursor A blank/invisible cursor, typically used when the cursor + shape needs to be hidden. + \value SplitVCursor \inlineimage cursor-vsplit.png + A cursor used for vertical splitters, indicating that + a handle can be dragged horizontally to adjust the use + of available space. + \value SplitHCursor \inlineimage cursor-hsplit.png + A cursor used for horizontal splitters, indicating that + a handle can be dragged vertically to adjust the use + of available space. + \value PointingHandCursor \inlineimage cursor-hand.png + A pointing hand cursor that is typically used for + clickable elements such as hyperlinks. + \value ForbiddenCursor \inlineimage cursor-forbidden.png + A slashed circle cursor, typically used during drag + and drop operations to indicate that dragged content + cannot be dropped on particular widgets or inside + certain regions. + \value OpenHandCursor \inlineimage cursor-openhand.png + A cursor representing an open hand, typically used to + indicate that the area under the cursor is the visible + part of a canvas that the user can click and drag in + order to scroll around. + \value ClosedHandCursor \inlineimage cursor-closedhand.png + A cursor representing a closed hand, typically used to + indicate that a dragging operation is in progress that + involves scrolling. + \value WhatsThisCursor \inlineimage cursor-whatsthis.png + An arrow with a question mark, typically used to indicate + the presence of What's This? help for a widget. + \value BusyCursor \inlineimage cursor-wait.png + An hourglass or watch cursor, usually shown during + operations that allow the user to interact with + the application while they are performed in the + background. + \value BitmapCursor + \omitvalue LastCursor + \omitvalue CustomCursor + + \omitvalue arrowCursor + \omitvalue upArrowCursor + \omitvalue crossCursor + \omitvalue waitCursor + \omitvalue ibeamCursor + \omitvalue sizeVerCursor + \omitvalue sizeHorCursor + \omitvalue sizeBDiagCursor + \omitvalue sizeFDiagCursor + \omitvalue sizeAllCursor + \omitvalue blankCursor + \omitvalue splitVCursor + \omitvalue splitHCursor + \omitvalue pointingHandCursor + \omitvalue forbiddenCursor + \omitvalue whatsThisCursor +*/ + +/*! + \typedef Qt::TextFlags + \compat + + Use Qt::TextFlag instead. +*/ + +/*! + \enum Qt::LayoutDirection + + Specifies the direction of Qt's layouts: + + \value LeftToRight Left-to-right layout. + \value RightToLeft Right-to-left layout. + + Right-to-left layouts are necessary for certain languages, + notably Arabic and Hebrew. + + \sa QApplication::setLayoutDirection(), QWidget::setLayoutDirection() +*/ + +/*! + \enum Qt::InputMethodHint + + \value ImhNone No hints. + \value ImhHiddenText Characters should be hidden, as is typically used when entering passwords. + This is automatically set when setting QLineEdit::echoMode to \c Password. + \value ImhNumbersOnly Only number input is allowed. + \value ImhUppercaseOnly Only upper case letter input is allowed. + \value ImhLowercaseOnly Only lower case letter input is allowed. + \value ImhNoAutoUppercase The input method should not try to automatically switch to upper case + when a sentence ends. + \value ImhPreferNumbers Numbers are preferred (but not required). + \value ImhPreferUppercase Upper case letters are preferred (but not required). + \value ImhPreferLowercase Lower case letters are preferred (but not required). + \value ImhNoPredictiveText Do not use predictive text (i.e. dictionary lookup) while typing. + \value ImhDialableCharactersOnly Only characters suitable for phone dialling are allowed. + + \note If several flags ending with \c Only are ORed together, the resulting character set will + consist of the union of the specified sets. For instance specifying \c ImhNumbersOnly and + \c ImhUppercaseOnly would yield a set consisting of numbers and uppercase letters. + + \sa QGraphicsItem::inputMethodHints() +*/ + +/*! + \enum Qt::InputMethodQuery + + \value ImMicroFocus The rectangle covering the area of the input cursor in widget coordinates. + \value ImFont The currently used font for text input. + \value ImCursorPosition The logical position of the cursor within the text surrounding the input area (see \c ImSurroundingText). + \value ImSurroundingText The plain text around the input area, for example the current paragraph. + \value ImCurrentSelection The currently selected text. + \value ImMaximumTextLength The maximum number of characters that the widget can hold. If there is no limit, QVariant() is returned. + \value ImAnchorPosition The position of the selection anchor. This may be less or greater than \c ImCursorPosition, depending on which side of selection the cursor is. If there is no selection, it returns the same as \c ImCursorPosition. +*/ + +/*! + \enum Qt::ItemDataRole + + Each item in the model has a set of data elements associated with + it, each with its own role. The roles are used by the view to indicate + to the model which type of data it needs. Custom models should return + data in these types. + + The general purpose roles (and the associated types) are: + + \value DisplayRole The key data to be rendered in the form of text. (QString) + \value DecorationRole The data to be rendered as a decoration in the form + of an icon. (QColor) + \value EditRole The data in a form suitable for editing in an + editor. (QString) + \value ToolTipRole The data displayed in the item's tooltip. (QString) + \value StatusTipRole The data displayed in the status bar. (QString) + \value WhatsThisRole The data displayed for the item in "What's This?" + mode. (QString) + \value SizeHintRole The size hint for the item that will be supplied + to views. (QSize) + + Roles describing appearance and meta data (with associated types): + + \value FontRole The font used for items rendered with the default + delegate. (QFont) + \value TextAlignmentRole The alignment of the text for items rendered with the + default delegate. (Qt::AlignmentFlag) + \value BackgroundRole The background brush used for items rendered with + the default delegate. (QBrush) + \value BackgroundColorRole This role is obsolete. Use BackgroundRole instead. + \value ForegroundRole The foreground brush (text color, typically) + used for items rendered with the default delegate. + (QBrush) + \value TextColorRole This role is obsolete. Use ForegroundRole instead. + \value CheckStateRole This role is used to obtain the checked state of + an item. (Qt::CheckState) + + Accessibility roles (with associated types): + + \value AccessibleTextRole The text to be used by accessibility + extensions and plugins, such as screen + readers. (QString) + \value AccessibleDescriptionRole A description of the item for accessibility + purposes. (QString) + + User roles: + + \value UserRole The first role that can be used for application-specific purposes. + + \omitvalue DisplayPropertyRole + \omitvalue DecorationPropertyRole + \omitvalue ToolTipPropertyRole + \omitvalue StatusTipPropertyRole + \omitvalue WhatsThisPropertyRole + + For user roles, it is up to the developer to decide which types to use and ensure that + components use the correct types when accessing and setting data. +*/ + +/*! + \enum Qt::ItemFlag + + This enum describes the properties of an item: + + \value NoItemFlags It does not have any properties set. + \value ItemIsSelectable It can be selected. + \value ItemIsEditable It can be edited. + \value ItemIsDragEnabled It can be dragged. + \value ItemIsDropEnabled It can be used as a drop target. + \value ItemIsUserCheckable It can be checked or unchecked by the user. + \value ItemIsEnabled The user can interact with the item. + \value ItemIsTristate The item is checkable with three separate states. + + Note that checkable items need to be given both a suitable set of flags + and an initial state, indicating whether the item is checked or not. + This is handled automatically for model/view components, but needs + to be explicitly set for instances of QListWidgetItem, QTableWidgetItem, + and QTreeWidgetItem. + + \sa QAbstractItemModel +*/ + +/*! + \enum Qt::MatchFlag + + This enum describes the type of matches that can be used when searching + for items in a model. + + \value MatchExactly Performs QVariant-based matching. + \value MatchFixedString Performs string-based matching. + String-based comparisons are case-insensitive unless the + \c MatchCaseSensitive flag is also specified. + \value MatchContains The search term is contained in the item. + \value MatchStartsWith The search term matches the start of the item. + \value MatchEndsWith The search term matches the end of the item. + \value MatchCaseSensitive The search is case sensitive. + \value MatchRegExp Performs string-based matching using a regular + expression as the search term. + \value MatchWildcard Performs string-based matching using a string with + wildcards as the search term. + \value MatchWrap Perform a search that wraps around, so that when + the search reaches the last item in the model, it begins again at + the first item and continues until all items have been examined. + \value MatchRecursive Searches the entire hierarchy. + + \sa QString::compare(), QRegExp +*/ + +/*! + \enum Qt::TextElideMode + + This enum specifies where the ellipsis should appear when + displaying texts that don't fit: + + \value ElideLeft The ellipsis should appear at the beginning of the text. + \value ElideRight The ellipsis should appear at the end of the text. + \value ElideMiddle The ellipsis should appear in the middle of the text. + \value ElideNone Ellipsis should NOT appear in the text. + + Qt::ElideMiddle is normally the most appropriate choice for URLs (e.g., + "\l{http://qt.nokia.com/careers/movingto/brisbane/}{http://qt.nok...ovingto/brisbane/}"), + whereas Qt::ElideRight is appropriate + for other strings (e.g., + "\l{http://qt.nokia.com/doc/qq/qq09-mac-deployment.html}{Deploying Applications on Ma...}"). + + \sa QAbstractItemView::textElideMode, QFontMetrics::elidedText(), AlignmentFlag QTabBar::elideMode +*/ + +/*! + \enum Qt::WindowModality + + \keyword modal + + This enum specifies the behavior of a modal window. A modal window + is one that blocks input to other windows. Note that windows that + are children of a modal window are not blocked. + + The values are: + \value NonModal The window is not modal and does not block input to other windows. + \value WindowModal The window is modal to a single window hierarchy and blocks input to its parent window, all grandparent windows, and all siblings of its parent and grandparent windows. + \value ApplicationModal The window is modal to the application and blocks input to all windows. + + \sa QWidget::windowModality, QDialog +*/ + +/*! + \enum Qt::TextInteractionFlag + + This enum specifies how a text displaying widget reacts to user input. + + \value NoTextInteraction No interaction with the text is possible. + \value TextSelectableByMouse Text can be selected with the mouse and copied to the clipboard using + a context menu or standard keyboard shortcuts. + \value TextSelectableByKeyboard Text can be selected with the cursor keys on the keyboard. A text cursor is shown. + \value LinksAccessibleByMouse Links can be highlighted and activated with the mouse. + \value LinksAccessibleByKeyboard Links can be focused using tab and activated with enter. + \value TextEditable The text is fully editable. + + \value TextEditorInteraction The default for a text editor. + \value TextBrowserInteraction The default for QTextBrowser. +*/ + +/*! + \enum Qt::MaskMode + + This enum specifies the behavior of the + QPixmap::createMaskFromColor() and QImage::createMaskFromColor() + functions. + + \value MaskInColor Creates a mask where all pixels matching the given color are opaque. + \value MaskOutColor Creates a mask where all pixels matching the given color are transparent. +*/ + +/*! + \enum Qt::DockWidgetAreaSizes + \internal +*/ + +/*! + \enum Qt::ToolBarAreaSizes + \internal +*/ + +/*! + \enum Qt::EventPriority + + This enum can be used to specify event priorities. + + \value HighEventPriority Events with this priority are sent before + events with NormalEventPriority or LowEventPriority. + + \value NormalEventPriority Events with this priority are sent + after events with HighEventPriority, but before events with + LowEventPriority. + + \value LowEventPriority Events with this priority are sent after + events with HighEventPriority or NormalEventPriority. + + Note that these values are provided purely for convenience, since + event priorities can be any value between \c INT_MAX and \c + INT_MIN, inclusive. For example, you can define custom priorities + as being relative to each other: + + \snippet doc/src/snippets/code/doc_src_qnamespace.qdoc 1 + + \sa QCoreApplication::postEvent() +*/ +/*! + \enum Qt::SizeHint + \since 4.4 + + This enum is used by QGraphicsLayoutItem::sizeHint() + + \value MinimumSize is used to specify the minimum size of a graphics layout item. + \value PreferredSize is used to specify the preferred size of a graphics layout item. + \value MaximumSize is used to specify the maximum size of a graphics layout item. + \value MinimumDescent is used to specify the minimum descent of a text string in a graphics layout item. + \omitvalue NSizeHints + + \sa QGraphicsLayoutItem::sizeHint() +*/ + +/*! + \enum Qt::SizeMode + \since 4.4 + + This enum is used by QPainter::drawRoundedRect() and QPainterPath::addRoundedRect() + functions to specify the radii of rectangle corners with respect to the dimensions + of the bounding rectangles specified. + + \value AbsoluteSize Specifies the size using absolute measurements. + \value RelativeSize Specifies the size relative to the bounding rectangle, + typically using percentage measurements. +*/ + +/*! + \enum Qt::WindowFrameSection + \since 4.4 + + This enum is used to describe parts of a window frame. It is returned by + QGraphicsWidget::windowFrameSectionAt() to describe what section of the window + frame is under the mouse. + + \value NoSection + \value LeftSection + \value TopLeftSection + \value TopSection + \value TopRightSection + \value RightSection + \value BottomRightSection + \value BottomSection + \value BottomLeftSection + \value TitleBarArea + + \sa QGraphicsWidget::windowFrameEvent() + \sa QGraphicsWidget::paintWindowFrame() + \sa QGraphicsWidget::windowFrameSectionAt() + +*/ + +/*! + \enum Qt::TileRule + \since 4.6 + + This enum describes how to repeat or stretch the parts of an image + when drawing. + + \value Stretch Scale the image to fit to the available area. + + \value Repeat Tile the image until there is no more space. May crop + the last image. + + \value Round Like Repeat, but scales the images down to ensure that + the last image is not cropped. +*/ + +/*! + \enum Qt::Initialization + \internal +*/ + +/*! + \enum Qt::GestureState + \since 4.6 + + This enum type describes the state of a gesture. + + \value NoGesture Initial state + \value GestureStarted A continuous gesture has started. + \value GestureUpdated A gesture continues. + \value GestureFinished A gesture has finished. + + \sa QGesture +*/ diff --git a/src/corelib/io/qdatastream.cpp b/src/corelib/io/qdatastream.cpp index 572b8a1..52902d0 100644 --- a/src/corelib/io/qdatastream.cpp +++ b/src/corelib/io/qdatastream.cpp @@ -57,7 +57,7 @@ QT_BEGIN_NAMESPACE to a QIODevice. \ingroup io - \mainclass + A data stream is a binary stream of encoded information which is 100% independent of the host computer's operating system, CPU or diff --git a/src/corelib/io/qdebug.cpp b/src/corelib/io/qdebug.cpp index 6dd2640..1545082 100644 --- a/src/corelib/io/qdebug.cpp +++ b/src/corelib/io/qdebug.cpp @@ -52,8 +52,7 @@ /*! \class QDebug - \ingroup io - \mainclass + \brief The QDebug class provides an output stream for debugging information. QDebug is used whenever the developer needs to write out debugging or tracing diff --git a/src/corelib/io/qdir.cpp b/src/corelib/io/qdir.cpp index 8eb1ce7..91d41f1 100644 --- a/src/corelib/io/qdir.cpp +++ b/src/corelib/io/qdir.cpp @@ -58,7 +58,7 @@ #include "qvarlengtharray.h" -#include "../kernel/qcoreglobaldata_p.h" +#include "private/qcoreglobaldata_p.h" #include <stdlib.h> QT_BEGIN_NAMESPACE @@ -346,7 +346,7 @@ void QDirPrivate::detach(bool createFileEngine) \ingroup io \ingroup shared \reentrant - \mainclass + A QDir is used to manipulate path names, access information regarding paths and files, and manipulate the underlying file diff --git a/src/corelib/io/qfile.cpp b/src/corelib/io/qfile.cpp index 69f1ff5..5e1a5e7 100644 --- a/src/corelib/io/qfile.cpp +++ b/src/corelib/io/qfile.cpp @@ -174,7 +174,7 @@ QFilePrivate::setError(QFile::FileError err, int errNum) \brief The QFile class provides an interface for reading from and writing to files. \ingroup io - \mainclass + \reentrant QFile is an I/O device for reading and writing text and binary diff --git a/src/corelib/io/qfileinfo_p.h b/src/corelib/io/qfileinfo_p.h index d64a5c4..d92090c 100644 --- a/src/corelib/io/qfileinfo_p.h +++ b/src/corelib/io/qfileinfo_p.h @@ -81,11 +81,11 @@ public: CachedSize =0x08 }; struct Data { inline Data() - : ref(1), fileEngine(0), cache_enabled(1) + : ref(1), fileEngine(0), cache_enabled(1), fileSize(0) { clear(); } inline Data(const Data ©) : ref(1), fileEngine(QAbstractFileEngine::create(copy.fileName)), - fileName(copy.fileName), cache_enabled(copy.cache_enabled) + fileName(copy.fileName), cache_enabled(copy.cache_enabled), fileSize(copy.fileSize) { clear(); } inline ~Data() { delete fileEngine; } inline void clearFlags() { diff --git a/src/corelib/io/qfilesystemwatcher_fsevents_p.h b/src/corelib/io/qfilesystemwatcher_fsevents_p.h index b93d711..317c149 100644 --- a/src/corelib/io/qfilesystemwatcher_fsevents_p.h +++ b/src/corelib/io/qfilesystemwatcher_fsevents_p.h @@ -59,8 +59,8 @@ #include <QtCore/qmutex.h> #include <QtCore/qwaitcondition.h> #include <QtCore/qthread.h> -#include <QtCore/QHash> -#include <QtCore/QLinkedList> +#include <QtCore/qhash.h> +#include <QtCore/qlinkedlist.h> #include <private/qcore_mac_p.h> #include <sys/stat.h> diff --git a/src/corelib/io/qfsfileengine_win.cpp b/src/corelib/io/qfsfileengine_win.cpp index b7f4e48..e01b42b 100644 --- a/src/corelib/io/qfsfileengine_win.cpp +++ b/src/corelib/io/qfsfileengine_win.cpp @@ -107,24 +107,15 @@ typedef DWORD (WINAPI *PtrGetNamedSecurityInfoW)(LPWSTR, SE_OBJECT_TYPE, SECURIT static PtrGetNamedSecurityInfoW ptrGetNamedSecurityInfoW = 0; typedef BOOL (WINAPI *PtrLookupAccountSidW)(LPCWSTR, PSID, LPWSTR, LPDWORD, LPWSTR, LPDWORD, PSID_NAME_USE); static PtrLookupAccountSidW ptrLookupAccountSidW = 0; -typedef BOOL (WINAPI *PtrAllocateAndInitializeSid)(PSID_IDENTIFIER_AUTHORITY, BYTE, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, PSID*); -static PtrAllocateAndInitializeSid ptrAllocateAndInitializeSid = 0; typedef VOID (WINAPI *PtrBuildTrusteeWithSidW)(PTRUSTEE_W, PSID); static PtrBuildTrusteeWithSidW ptrBuildTrusteeWithSidW = 0; -typedef VOID (WINAPI *PtrBuildTrusteeWithNameW)(PTRUSTEE_W, unsigned short*); -static PtrBuildTrusteeWithNameW ptrBuildTrusteeWithNameW = 0; typedef DWORD (WINAPI *PtrGetEffectiveRightsFromAclW)(PACL, PTRUSTEE_W, OUT PACCESS_MASK); static PtrGetEffectiveRightsFromAclW ptrGetEffectiveRightsFromAclW = 0; -typedef PVOID (WINAPI *PtrFreeSid)(PSID); -static PtrFreeSid ptrFreeSid = 0; static TRUSTEE_W currentUserTrusteeW; +static TRUSTEE_W worldTrusteeW; -typedef BOOL (WINAPI *PtrOpenProcessToken)(HANDLE, DWORD, PHANDLE ); -static PtrOpenProcessToken ptrOpenProcessToken = 0; typedef BOOL (WINAPI *PtrGetUserProfileDirectoryW)(HANDLE, LPWSTR, LPDWORD); static PtrGetUserProfileDirectoryW ptrGetUserProfileDirectoryW = 0; -typedef BOOL (WINAPI *PtrSetFilePointerEx)(HANDLE, LARGE_INTEGER, PLARGE_INTEGER, DWORD); -static PtrSetFilePointerEx ptrSetFilePointerEx = 0; QT_END_INCLUDE_NAMESPACE @@ -152,67 +143,37 @@ void QFSFileEnginePrivate::resolveLibs() if (advapiHnd) { ptrGetNamedSecurityInfoW = (PtrGetNamedSecurityInfoW)GetProcAddress(advapiHnd, "GetNamedSecurityInfoW"); ptrLookupAccountSidW = (PtrLookupAccountSidW)GetProcAddress(advapiHnd, "LookupAccountSidW"); - ptrAllocateAndInitializeSid = (PtrAllocateAndInitializeSid)GetProcAddress(advapiHnd, "AllocateAndInitializeSid"); ptrBuildTrusteeWithSidW = (PtrBuildTrusteeWithSidW)GetProcAddress(advapiHnd, "BuildTrusteeWithSidW"); - ptrBuildTrusteeWithNameW = (PtrBuildTrusteeWithNameW)GetProcAddress(advapiHnd, "BuildTrusteeWithNameW"); ptrGetEffectiveRightsFromAclW = (PtrGetEffectiveRightsFromAclW)GetProcAddress(advapiHnd, "GetEffectiveRightsFromAclW"); - ptrFreeSid = (PtrFreeSid)GetProcAddress(advapiHnd, "FreeSid"); } - if (ptrBuildTrusteeWithNameW) { - HINSTANCE versionHnd = LoadLibraryW(L"version"); - if (versionHnd) { - typedef DWORD (WINAPI *PtrGetFileVersionInfoSizeW)(LPCWSTR lptstrFilename,LPDWORD lpdwHandle); - PtrGetFileVersionInfoSizeW ptrGetFileVersionInfoSizeW = (PtrGetFileVersionInfoSizeW)GetProcAddress(versionHnd, "GetFileVersionInfoSizeW"); - typedef BOOL (WINAPI *PtrGetFileVersionInfoW)(LPCWSTR lptstrFilename,DWORD dwHandle,DWORD dwLen,LPVOID lpData); - PtrGetFileVersionInfoW ptrGetFileVersionInfoW = (PtrGetFileVersionInfoW)GetProcAddress(versionHnd, "GetFileVersionInfoW"); - typedef BOOL (WINAPI *PtrVerQueryValueW)(const LPVOID pBlock,LPCWSTR lpSubBlock,LPVOID *lplpBuffer,PUINT puLen); - PtrVerQueryValueW ptrVerQueryValueW = (PtrVerQueryValueW)GetProcAddress(versionHnd, "VerQueryValueW"); - if(ptrGetFileVersionInfoSizeW && ptrGetFileVersionInfoW && ptrVerQueryValueW) { - DWORD fakeHandle; - DWORD versionSize = ptrGetFileVersionInfoSizeW(L"secur32.dll", &fakeHandle); - if(versionSize) { - LPVOID versionData; - versionData = malloc(versionSize); - if(ptrGetFileVersionInfoW(L"secur32.dll", 0, versionSize, versionData)) { - UINT puLen; - VS_FIXEDFILEINFO *pLocalInfo; - if(ptrVerQueryValueW(versionData, L"\\", (void**)&pLocalInfo, &puLen)) { - WORD wVer1, wVer2, wVer3, wVer4; - wVer1 = HIWORD(pLocalInfo->dwFileVersionMS); - wVer2 = LOWORD(pLocalInfo->dwFileVersionMS); - wVer3 = HIWORD(pLocalInfo->dwFileVersionLS); - wVer4 = LOWORD(pLocalInfo->dwFileVersionLS); - // It will not work with secur32.dll version 5.0.2195.2862 - if(!(wVer1 == 5 && wVer2 == 0 && wVer3 == 2195 && (wVer4 == 2862 || wVer4 == 4587))) { - HINSTANCE userHnd = LoadLibraryW(L"secur32"); - if (userHnd) { - typedef BOOL (WINAPI *PtrGetUserNameExW)(EXTENDED_NAME_FORMAT nameFormat, ushort* lpBuffer, LPDWORD nSize); - PtrGetUserNameExW ptrGetUserNameExW = (PtrGetUserNameExW)GetProcAddress(userHnd, "GetUserNameExW"); - if(ptrGetUserNameExW) { - static wchar_t buffer[258]; - DWORD bufferSize = 257; - ptrGetUserNameExW(NameSamCompatible, (ushort*)buffer, &bufferSize); - ptrBuildTrusteeWithNameW(¤tUserTrusteeW, (ushort*)buffer); - } - FreeLibrary(userHnd); - } - } - } - } - free(versionData); - } - } - FreeLibrary(versionHnd); + if (ptrBuildTrusteeWithSidW) { + // Create TRUSTEE for current user + HANDLE hnd = ::GetCurrentProcess(); + HANDLE token = 0; + if (::OpenProcessToken(hnd, TOKEN_QUERY, &token)) { + TOKEN_USER tu; + DWORD retsize; + if (::GetTokenInformation(token, TokenUser, &tu, sizeof(tu), &retsize)) + ptrBuildTrusteeWithSidW(¤tUserTrusteeW, tu.User.Sid); + ::CloseHandle(token); } - ptrOpenProcessToken = (PtrOpenProcessToken)GetProcAddress(advapiHnd, "OpenProcessToken"); - HINSTANCE userenvHnd = LoadLibraryW(L"userenv"); - if (userenvHnd) { - ptrGetUserProfileDirectoryW = (PtrGetUserProfileDirectoryW)GetProcAddress(userenvHnd, "GetUserProfileDirectoryW"); + + typedef BOOL (WINAPI *PtrAllocateAndInitializeSid)(PSID_IDENTIFIER_AUTHORITY, BYTE, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, PSID*); + PtrAllocateAndInitializeSid ptrAllocateAndInitializeSid = (PtrAllocateAndInitializeSid)GetProcAddress(advapiHnd, "AllocateAndInitializeSid"); + typedef PVOID (WINAPI *PtrFreeSid)(PSID); + PtrFreeSid ptrFreeSid = (PtrFreeSid)GetProcAddress(advapiHnd, "FreeSid"); + if (ptrAllocateAndInitializeSid && ptrFreeSid) { + // Create TRUSTEE for Everyone (World) + SID_IDENTIFIER_AUTHORITY worldAuth = { SECURITY_WORLD_SID_AUTHORITY }; + PSID pWorld = 0; + if (ptrAllocateAndInitializeSid(&worldAuth, 1, SECURITY_WORLD_RID, 0, 0, 0, 0, 0, 0, 0, &pWorld)) + ptrBuildTrusteeWithSidW(&worldTrusteeW, pWorld); + ptrFreeSid(pWorld); } - HINSTANCE kernelHnd = LoadLibraryW(L"kernel32"); - if (kernelHnd) - ptrSetFilePointerEx = (PtrSetFilePointerEx)GetProcAddress(kernelHnd, "SetFilePointerEx"); } + HINSTANCE userenvHnd = LoadLibraryW(L"userenv"); + if (userenvHnd) + ptrGetUserProfileDirectoryW = (PtrGetUserProfileDirectoryW)GetProcAddress(userenvHnd, "GetUserProfileDirectoryW"); #endif } } @@ -596,34 +557,27 @@ qint64 QFSFileEnginePrivate::nativePos() const if (fileHandle == INVALID_HANDLE_VALUE) return 0; -#if !defined(QT_NO_LIBRARY) && !defined(Q_OS_WINCE) - QFSFileEnginePrivate::resolveLibs(); - if (!ptrSetFilePointerEx) { -#endif - LARGE_INTEGER filepos; - filepos.HighPart = 0; - DWORD newFilePointer = SetFilePointer(fileHandle, 0, &filepos.HighPart, FILE_CURRENT); - if (newFilePointer == 0xFFFFFFFF && GetLastError() != NO_ERROR) { - thatQ->setError(QFile::UnspecifiedError, qt_error_string()); - return 0; - } - - // Note: This is the case for MOC, UIC, qmake and other - // bootstrapped tools, and for Windows CE. - filepos.LowPart = newFilePointer; - return filepos.QuadPart; -#if !defined(QT_NO_LIBRARY) && !defined(Q_OS_WINCE) - } - +#if !defined(Q_OS_WINCE) LARGE_INTEGER currentFilePos; LARGE_INTEGER offset; offset.QuadPart = 0; - if (!ptrSetFilePointerEx(fileHandle, offset, ¤tFilePos, FILE_CURRENT)) { + if (!::SetFilePointerEx(fileHandle, offset, ¤tFilePos, FILE_CURRENT)) { thatQ->setError(QFile::UnspecifiedError, qt_error_string()); return 0; } return qint64(currentFilePos.QuadPart); +#else + LARGE_INTEGER filepos; + filepos.HighPart = 0; + DWORD newFilePointer = SetFilePointer(fileHandle, 0, &filepos.HighPart, FILE_CURRENT); + if (newFilePointer == 0xFFFFFFFF && GetLastError() != NO_ERROR) { + thatQ->setError(QFile::UnspecifiedError, qt_error_string()); + return 0; + } + + filepos.LowPart = newFilePointer; + return filepos.QuadPart; #endif } @@ -632,39 +586,32 @@ qint64 QFSFileEnginePrivate::nativePos() const */ bool QFSFileEnginePrivate::nativeSeek(qint64 pos) { - Q_Q(const QFSFileEngine); - QFSFileEngine *thatQ = const_cast<QFSFileEngine *>(q); + Q_Q(QFSFileEngine); if (fh || fd != -1) { // stdlib / stdio mode. return seekFdFh(pos); } -#if !defined(QT_NO_LIBRARY) && !defined(Q_OS_WINCE) - QFSFileEnginePrivate::resolveLibs(); - if (!ptrSetFilePointerEx) { -#endif - DWORD newFilePointer; - LARGE_INTEGER *li = reinterpret_cast<LARGE_INTEGER*>(&pos); - newFilePointer = SetFilePointer(fileHandle, li->LowPart, &li->HighPart, FILE_BEGIN); - if (newFilePointer == 0xFFFFFFFF && GetLastError() != NO_ERROR) { - thatQ->setError(QFile::PositionError, qt_error_string()); - return false; - } - - // Note: This is the case for MOC, UIC, qmake and other - // bootstrapped tools, and for Windows CE. - return true; -#if !defined(QT_NO_LIBRARY) && !defined(Q_OS_WINCE) - } - +#if !defined(Q_OS_WINCE) LARGE_INTEGER currentFilePos; LARGE_INTEGER offset; offset.QuadPart = pos; - if (ptrSetFilePointerEx(fileHandle, offset, ¤tFilePos, FILE_BEGIN) == 0) { - thatQ->setError(QFile::UnspecifiedError, qt_error_string()); + if (!::SetFilePointerEx(fileHandle, offset, ¤tFilePos, FILE_BEGIN)) { + q->setError(QFile::UnspecifiedError, qt_error_string()); return false; } + + return true; +#else + DWORD newFilePointer; + LARGE_INTEGER *li = reinterpret_cast<LARGE_INTEGER*>(&pos); + newFilePointer = SetFilePointer(fileHandle, li->LowPart, &li->HighPart, FILE_BEGIN); + if (newFilePointer == 0xFFFFFFFF && GetLastError() != NO_ERROR) { + q->setError(QFile::PositionError, qt_error_string()); + return false; + } + return true; #endif } @@ -1044,10 +991,10 @@ QString QFSFileEngine::homePath() QString ret; #if !defined(QT_NO_LIBRARY) QFSFileEnginePrivate::resolveLibs(); - if (ptrOpenProcessToken && ptrGetUserProfileDirectoryW) { + if (ptrGetUserProfileDirectoryW) { HANDLE hnd = ::GetCurrentProcess(); HANDLE token = 0; - BOOL ok = ::ptrOpenProcessToken(hnd, TOKEN_QUERY, &token); + BOOL ok = ::OpenProcessToken(hnd, TOKEN_QUERY, &token); if (ok) { DWORD dwBufferSize = 0; // First call, to determine size of the strings (with '\0'). @@ -1393,7 +1340,7 @@ QAbstractFileEngine::FileFlags QFSFileEnginePrivate::getPermissions() const enum { ReadMask = 0x00000001, WriteMask = 0x00000002, ExecMask = 0x00000020 }; resolveLibs(); - if(ptrGetNamedSecurityInfoW && ptrAllocateAndInitializeSid && ptrBuildTrusteeWithSidW && ptrGetEffectiveRightsFromAclW && ptrFreeSid) { + if(ptrGetNamedSecurityInfoW && ptrBuildTrusteeWithSidW && ptrGetEffectiveRightsFromAclW) { QString fname = filePath.endsWith(QLatin1String(".lnk")) ? readLink(filePath) : filePath; DWORD res = ptrGetNamedSecurityInfoW((wchar_t*)fname.utf16(), SE_FILE_OBJECT, @@ -1435,21 +1382,14 @@ QAbstractFileEngine::FileFlags QFSFileEnginePrivate::getPermissions() const ret |= QAbstractFileEngine::ExeGroupPerm; } { //other (world) - // Create SID for Everyone (World) - SID_IDENTIFIER_AUTHORITY worldAuth = { SECURITY_WORLD_SID_AUTHORITY }; - PSID pWorld = 0; - if(ptrAllocateAndInitializeSid(&worldAuth, 1, SECURITY_WORLD_RID, 0,0,0,0,0,0,0, &pWorld)) { - ptrBuildTrusteeWithSidW(&trustee, pWorld); - if(ptrGetEffectiveRightsFromAclW(pDacl, &trustee, &access_mask) != ERROR_SUCCESS) - access_mask = (ACCESS_MASK)-1; // ### - if(access_mask & ReadMask) - ret |= QAbstractFileEngine::ReadOtherPerm; - if(access_mask & WriteMask) - ret |= QAbstractFileEngine::WriteOtherPerm; - if(access_mask & ExecMask) - ret |= QAbstractFileEngine::ExeOtherPerm; - } - ptrFreeSid(pWorld); + if(ptrGetEffectiveRightsFromAclW(pDacl, &worldTrusteeW, &access_mask) != ERROR_SUCCESS) + access_mask = (ACCESS_MASK)-1; // ### + if(access_mask & ReadMask) + ret |= QAbstractFileEngine::ReadOtherPerm; + if(access_mask & WriteMask) + ret |= QAbstractFileEngine::WriteOtherPerm; + if(access_mask & ExecMask) + ret |= QAbstractFileEngine::ExeOtherPerm; } LocalFree(pSD); } @@ -1703,12 +1643,8 @@ bool QFSFileEngine::setPermissions(uint perms) if (mode == 0) // not supported return false; -#if !defined(Q_OS_WINCE) - ret = ::_wchmod((wchar_t*)d->filePath.utf16(), mode) == 0; -#else - ret = ::_wchmod((wchar_t*)d->longFileName(d->filePath).utf16(), mode); -#endif - return ret; + ret = ::_wchmod((wchar_t*)d->longFileName(d->filePath).utf16(), mode) == 0; + return ret; } bool QFSFileEngine::setSize(qint64 size) diff --git a/src/corelib/io/qiodevice.cpp b/src/corelib/io/qiodevice.cpp index 2df7a27..4f66edd 100644 --- a/src/corelib/io/qiodevice.cpp +++ b/src/corelib/io/qiodevice.cpp @@ -811,7 +811,7 @@ qint64 QIODevice::read(char *data, qint64 maxSize) #endif if (readFromDevice < bytesToBuffer) - d->buffer.truncate(readFromDevice < 0 ? 0 : int(readFromDevice)); + d->buffer.truncate(int(readFromDevice)); if (!d->buffer.isEmpty()) { lastReadChunkSize = d->buffer.read(data + readSoFar, maxSize - readSoFar); readSoFar += lastReadChunkSize; diff --git a/src/corelib/io/qnoncontiguousbytedevice.cpp b/src/corelib/io/qnoncontiguousbytedevice.cpp index 89ed041..185d961 100644 --- a/src/corelib/io/qnoncontiguousbytedevice.cpp +++ b/src/corelib/io/qnoncontiguousbytedevice.cpp @@ -40,10 +40,9 @@ ****************************************************************************/ #include "qnoncontiguousbytedevice_p.h" -#include <QObject> -#include <QBuffer> -#include <QDebug> -#include <QFile> +#include <qbuffer.h> +#include <qdebug.h> +#include <qfile.h> QT_BEGIN_NAMESPACE diff --git a/src/corelib/io/qnoncontiguousbytedevice_p.h b/src/corelib/io/qnoncontiguousbytedevice_p.h index dd34c67..ecf9b9c 100644 --- a/src/corelib/io/qnoncontiguousbytedevice_p.h +++ b/src/corelib/io/qnoncontiguousbytedevice_p.h @@ -53,7 +53,7 @@ // We mean it. // -#include <QObject> +#include <QtCore/qobject.h> #include <QtCore/qbytearray.h> #include <QtCore/qbuffer.h> #include <QtCore/qiodevice.h> diff --git a/src/corelib/io/qprocess.cpp b/src/corelib/io/qprocess.cpp index 6fc6710..18ed676 100644 --- a/src/corelib/io/qprocess.cpp +++ b/src/corelib/io/qprocess.cpp @@ -151,12 +151,19 @@ void QProcessPrivate::Channel::clear() to communicate with them. \ingroup io - \ingroup misc - \mainclass + \reentrant + \section1 Running a Process + To start a process, pass the name and command line arguments of - the program you want to run as arguments to start(). For example: + the program you want to run as arguments to start(). Arguments + are supplied as individual strings in a QStringList. + + For example, the following code snippet runs the analog clock + example in the Motif style on X11 platforms by passing strings + containing "-style" and "motif" as two items in the list of + arguments: \snippet doc/src/snippets/qprocess/qprocess-simpleexecution.cpp 0 \dots @@ -1585,16 +1592,16 @@ QByteArray QProcess::readAllStandardError() process, a warning may be printed at the console, and the existing process will continue running. - Note that arguments that contain spaces are not passed to the + \note Arguments that contain spaces are not passed to the process as separate arguments. - \bold{Windows:} Arguments that contain spaces are wrapped in quotes. - \note Processes are started asynchronously, which means the started() and error() signals may be delayed. Call waitForStarted() to make sure the process has started (or has failed to start) and those signals have been emitted. + \bold{Windows:} Arguments that contain spaces are wrapped in quotes. + \sa pid(), started(), waitForStarted() */ void QProcess::start(const QString &program, const QStringList &arguments, OpenMode mode) @@ -1860,7 +1867,7 @@ bool QProcess::startDetached(const QString &program, otherwise returns false. If the calling process exits, the detached process will continue to live. - Note that arguments that contain spaces are not passed to the + \note Arguments that contain spaces are not passed to the process as separate arguments. \bold{Unix:} The started process will run in its own session and act diff --git a/src/corelib/io/qresource.cpp b/src/corelib/io/qresource.cpp index 34c21d7..ab4a7b7 100644 --- a/src/corelib/io/qresource.cpp +++ b/src/corelib/io/qresource.cpp @@ -169,7 +169,7 @@ Q_GLOBAL_STATIC(QStringList, resourceSearchPaths) \brief The QResource class provides an interface for reading directly from resources. \ingroup io - \mainclass + \reentrant \since 4.2 diff --git a/src/corelib/io/qsettings.cpp b/src/corelib/io/qsettings.cpp index d7cf561..4c19cbf 100644 --- a/src/corelib/io/qsettings.cpp +++ b/src/corelib/io/qsettings.cpp @@ -2011,8 +2011,7 @@ void QConfFileSettingsPrivate::ensureSectionParsed(QConfFile *confFile, \brief The QSettings class provides persistent platform-independent application settings. \ingroup io - \ingroup misc - \mainclass + \reentrant Users normally expect an application to remember its settings diff --git a/src/corelib/io/qtemporaryfile.cpp b/src/corelib/io/qtemporaryfile.cpp index 13a0e4c..d76e99b 100644 --- a/src/corelib/io/qtemporaryfile.cpp +++ b/src/corelib/io/qtemporaryfile.cpp @@ -447,7 +447,7 @@ QTemporaryFilePrivate::~QTemporaryFilePrivate() \brief The QTemporaryFile class is an I/O device that operates on temporary files. \ingroup io - \mainclass + QTemporaryFile is used to create unique temporary files safely. The file itself is created by calling open(). The name of the diff --git a/src/corelib/io/qtextstream.cpp b/src/corelib/io/qtextstream.cpp index 3b94c03..ad0a67d 100644 --- a/src/corelib/io/qtextstream.cpp +++ b/src/corelib/io/qtextstream.cpp @@ -49,7 +49,7 @@ static const int QTEXTSTREAM_BUFFERSIZE = 16384; reading and writing text. \ingroup io - \ingroup text + \ingroup string-processing \reentrant QTextStream can operate on a QIODevice, a QByteArray or a @@ -3085,8 +3085,6 @@ QLocale QTextStream::locale() const \compat \reentrant - \ingroup io - \ingroup text Use QTextStream instead. */ @@ -3113,8 +3111,6 @@ QLocale QTextStream::locale() const \compat \reentrant - \ingroup io - \ingroup text Use QTextStream instead. */ diff --git a/src/corelib/io/qurl.cpp b/src/corelib/io/qurl.cpp index 77df601..acbac36 100644 --- a/src/corelib/io/qurl.cpp +++ b/src/corelib/io/qurl.cpp @@ -47,9 +47,9 @@ \reentrant \ingroup io - \ingroup misc + \ingroup network \ingroup shared - \mainclass + It can parse and construct URLs in both encoded and unencoded form. QUrl also has support for internationalized domain names @@ -4024,6 +4024,29 @@ QString QUrlPrivate::createErrorString() } /*! + \macro QT_NO_URL_CAST_FROM_STRING + \relates QUrl + + Disables automatic conversions from QString (or char *) to QUrl. + + Compiling your code with this define is useful when you have a lot of + code that uses QString for file names and you wish to convert it to + use QUrl for network transparency. In any code that uses QUrl, it can + help avoid missing QUrl::resolved() calls, and other misuses of + QString to QUrl conversions. + + \oldcode + url = filename; // probably not what you want + \newcode + url = QUrl::fromLocalFile(filename); + url = baseurl.resolved(QUrl(filename)); + \endcode + + \sa QT_NO_CAST_FROM_ASCII +*/ + + +/*! Constructs a URL by parsing \a url. \a url is assumed to be in human readable representation, with no percent encoding. QUrl will automatically percent encode all characters that are not allowed in a URL. diff --git a/src/corelib/io/qurl.h b/src/corelib/io/qurl.h index febaf4a..65da5bf 100644 --- a/src/corelib/io/qurl.h +++ b/src/corelib/io/qurl.h @@ -81,12 +81,17 @@ public: Q_DECLARE_FLAGS(FormattingOptions, FormattingOption) QUrl(); +#ifdef QT_NO_URL_CAST_FROM_STRING + explicit +#endif QUrl(const QString &url); QUrl(const QString &url, ParsingMode mode); // ### Qt 5: merge the two constructors, with mode = TolerantMode QUrl(const QUrl ©); QUrl &operator =(const QUrl ©); +#ifndef QT_NO_URL_CAST_FROM_STRING QUrl &operator =(const QString &url); +#endif ~QUrl(); void setUrl(const QString &url); diff --git a/src/corelib/kernel/kernel.pri b/src/corelib/kernel/kernel.pri index 124b2b3..003693b 100644 --- a/src/corelib/kernel/kernel.pri +++ b/src/corelib/kernel/kernel.pri @@ -103,7 +103,7 @@ unix:!symbian { HEADERS += \ kernel/qeventdispatcher_glib_p.h QMAKE_CXXFLAGS += $$QT_CFLAGS_GLIB - LIBS +=$$QT_LIBS_GLIB + LIBS_PRIVATE +=$$QT_LIBS_GLIB } SOURCES += \ kernel/qeventdispatcher_unix.cpp diff --git a/src/corelib/kernel/qabstracteventdispatcher.cpp b/src/corelib/kernel/qabstracteventdispatcher.cpp index a414862..4fa0cd2 100644 --- a/src/corelib/kernel/qabstracteventdispatcher.cpp +++ b/src/corelib/kernel/qabstracteventdispatcher.cpp @@ -168,7 +168,6 @@ void QAbstractEventDispatcherPrivate::releaseTimerId(int timerId) \class QAbstractEventDispatcher \brief The QAbstractEventDispatcher class provides an interface to manage Qt's event queue. - \ingroup application \ingroup events An event dispatcher receives events from the window system and other diff --git a/src/corelib/kernel/qabstractitemmodel.cpp b/src/corelib/kernel/qabstractitemmodel.cpp index cfc961c..d6d1bcf 100644 --- a/src/corelib/kernel/qabstractitemmodel.cpp +++ b/src/corelib/kernel/qabstractitemmodel.cpp @@ -488,35 +488,48 @@ const QHash<int,QByteArray> &QAbstractItemModelPrivate::defaultRoleNames() return *qDefaultRoleNames(); } -/*! - \internal - return true if \a value contains a numerical type - This function is used by our Q{Tree,Widget,Table}WidgetModel classes to sort. - We cannot rely on QVariant::canConvert because this would take strings as double - and then not sort strings correctly -*/ -bool QAbstractItemModelPrivate::canConvertToDouble(const QVariant &value) +static uint typeOfVariant(const QVariant &value) { + //return 0 for integer, 1 for floating point and 2 for other switch (value.userType()) { case QVariant::Bool: case QVariant::Int: case QVariant::UInt: case QVariant::LongLong: case QVariant::ULongLong: - case QVariant::Double: case QVariant::Char: - case QMetaType::Float: case QMetaType::Short: case QMetaType::UShort: case QMetaType::UChar: case QMetaType::ULong: case QMetaType::Long: - return true; + return 0; + case QVariant::Double: + case QMetaType::Float: + return 1; default: - return false; + return 2; + } +} + +/*! + \internal + return true if \a value contains a numerical type + + This function is used by our Q{Tree,Widget,Table}WidgetModel classes to sort. +*/ +bool QAbstractItemModelPrivate::variantLessThan(const QVariant &v1, const QVariant &v2) +{ + switch(qMax(typeOfVariant(v1), typeOfVariant(v2))) + { + case 0: //integer type + return v1.toLongLong() < v2.toLongLong(); + case 1: //floating point + return v1.toReal() < v2.toReal(); + default: + return v1.toString() < v2.toString(); } - return false; } void QAbstractItemModelPrivate::removePersistentIndexData(QPersistentModelIndexData *data) @@ -740,7 +753,7 @@ void QAbstractItemModelPrivate::columnsRemoved(const QModelIndex &parent, \brief The QModelIndex class is used to locate data in a data model. \ingroup model-view - \mainclass + This class is used as an index into item models derived from QAbstractItemModel. The index is used by item views, delegates, and @@ -928,7 +941,7 @@ void QAbstractItemModelPrivate::columnsRemoved(const QModelIndex &parent, item model classes. \ingroup model-view - \mainclass + The QAbstractItemModel class defines the standard interface that item models must use to be able to interoperate with other components in the diff --git a/src/corelib/kernel/qabstractitemmodel_p.h b/src/corelib/kernel/qabstractitemmodel_p.h index 76c2d70..e81e627 100644 --- a/src/corelib/kernel/qabstractitemmodel_p.h +++ b/src/corelib/kernel/qabstractitemmodel_p.h @@ -89,7 +89,7 @@ public: void columnsAboutToBeRemoved(const QModelIndex &parent, int first, int last); void columnsRemoved(const QModelIndex &parent, int first, int last); static QAbstractItemModel *staticEmptyModel(); - static bool canConvertToDouble(const QVariant &value); + static bool variantLessThan(const QVariant &v1, const QVariant &v2); inline QModelIndex createIndex(int row, int column, void *data = 0) const { return q_func()->createIndex(row, column, data); diff --git a/src/corelib/kernel/qbasictimer.cpp b/src/corelib/kernel/qbasictimer.cpp index df5941f..7fd975d 100644 --- a/src/corelib/kernel/qbasictimer.cpp +++ b/src/corelib/kernel/qbasictimer.cpp @@ -49,7 +49,6 @@ QT_BEGIN_NAMESPACE \class QBasicTimer \brief The QBasicTimer class provides timer events for objects. - \ingroup time \ingroup events This is a fast, lightweight, and low-level class used by Qt diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp index 4e9096a..875c3cc 100644 --- a/src/corelib/kernel/qcoreapplication.cpp +++ b/src/corelib/kernel/qcoreapplication.cpp @@ -382,9 +382,6 @@ QString qAppName() \brief The QCoreApplication class provides an event loop for console Qt applications. - \ingroup application - \mainclass - This class is used by non-GUI applications to provide their event loop. For non-GUI application that uses Qt, there should be exactly one QCoreApplication object. For GUI applications, see diff --git a/src/corelib/kernel/qcoreevent.cpp b/src/corelib/kernel/qcoreevent.cpp index ed896a6..04301f6 100644 --- a/src/corelib/kernel/qcoreevent.cpp +++ b/src/corelib/kernel/qcoreevent.cpp @@ -54,7 +54,6 @@ QT_BEGIN_NAMESPACE event classes. Event objects contain event parameters. \ingroup events - \ingroup environment Qt's main event loop (QCoreApplication::exec()) fetches native window system events from the event queue, translates them into diff --git a/src/corelib/kernel/qcoreglobaldata.cpp b/src/corelib/kernel/qcoreglobaldata.cpp index c2a226d..6b90ed7 100644 --- a/src/corelib/kernel/qcoreglobaldata.cpp +++ b/src/corelib/kernel/qcoreglobaldata.cpp @@ -41,8 +41,6 @@ #include "qcoreglobaldata_p.h" -#include <QtDebug> - QT_BEGIN_NAMESPACE Q_GLOBAL_STATIC(QCoreGlobalData, globalInstance) diff --git a/src/corelib/kernel/qfunctions_wince.cpp b/src/corelib/kernel/qfunctions_wince.cpp index 2b5d4fe..77f680a 100644 --- a/src/corelib/kernel/qfunctions_wince.cpp +++ b/src/corelib/kernel/qfunctions_wince.cpp @@ -292,13 +292,14 @@ bool qt_wince__chmod(const char *file, int mode) bool qt_wince__wchmod(const wchar_t *file, int mode) { + BOOL success = FALSE; // ### Does not work properly, what about just adding one property? if(mode&_S_IWRITE) { - return SetFileAttributes(file, FILE_ATTRIBUTE_NORMAL); + success = SetFileAttributes(file, FILE_ATTRIBUTE_NORMAL); } else if((mode&_S_IREAD) && !(mode&_S_IWRITE)) { - return SetFileAttributes(file, FILE_ATTRIBUTE_READONLY); + success = SetFileAttributes(file, FILE_ATTRIBUTE_READONLY); } - return false; + return success ? 0 : -1; } HANDLE qt_wince_CreateFileA(LPCSTR filename, DWORD access, DWORD share, LPSECURITY_ATTRIBUTES attr, DWORD dispo, DWORD flags, HANDLE tempFile) diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp index 6384d17..55c8e12 100644 --- a/src/corelib/kernel/qobject.cpp +++ b/src/corelib/kernel/qobject.cpp @@ -538,7 +538,7 @@ int QMetaCallEvent::placeMetaCall(QObject *object) \brief The QObject class is the base class of all Qt objects. \ingroup objectmodel - \mainclass + \reentrant QObject is the heart of the \l{Qt object model}. The central diff --git a/src/corelib/kernel/qpointer.cpp b/src/corelib/kernel/qpointer.cpp index fb7a81e..624336f 100644 --- a/src/corelib/kernel/qpointer.cpp +++ b/src/corelib/kernel/qpointer.cpp @@ -44,7 +44,7 @@ \brief The QPointer class is a template class that provides guarded pointers to QObjects. \ingroup objectmodel - \mainclass + A guarded pointer, QPointer<T>, behaves like a normal C++ pointer \c{T *}, except that it is automatically set to 0 when the diff --git a/src/corelib/kernel/qsharedmemory.cpp b/src/corelib/kernel/qsharedmemory.cpp index cd69b59..593912c 100644 --- a/src/corelib/kernel/qsharedmemory.cpp +++ b/src/corelib/kernel/qsharedmemory.cpp @@ -91,7 +91,6 @@ QSharedMemoryPrivate::makePlatformSafeKey(const QString &key, /*! \class QSharedMemory - \ingroup ipc \since 4.4 \brief The QSharedMemory class provides access to a shared memory segment. diff --git a/src/corelib/kernel/qsignalmapper.cpp b/src/corelib/kernel/qsignalmapper.cpp index 5e89da2..7b2097d 100644 --- a/src/corelib/kernel/qsignalmapper.cpp +++ b/src/corelib/kernel/qsignalmapper.cpp @@ -66,8 +66,8 @@ public: \class QSignalMapper \brief The QSignalMapper class bundles signals from identifiable senders. - \ingroup io - \mainclass + \ingroup objectmodel + This class collects a set of parameterless signals, and re-emits them with integer, string or widget parameters corresponding to diff --git a/src/corelib/kernel/qsocketnotifier.cpp b/src/corelib/kernel/qsocketnotifier.cpp index 4ac1cbb..85a3ea3 100644 --- a/src/corelib/kernel/qsocketnotifier.cpp +++ b/src/corelib/kernel/qsocketnotifier.cpp @@ -56,6 +56,7 @@ QT_BEGIN_NAMESPACE \brief The QSocketNotifier class provides support for monitoring activity on a file descriptor. + \ingroup network \ingroup io The QSocketNotifier makes it possible to integrate Qt's event diff --git a/src/corelib/kernel/qsystemsemaphore.cpp b/src/corelib/kernel/qsystemsemaphore.cpp index f885662..07647d0 100644 --- a/src/corelib/kernel/qsystemsemaphore.cpp +++ b/src/corelib/kernel/qsystemsemaphore.cpp @@ -49,7 +49,6 @@ QT_BEGIN_NAMESPACE /*! \class QSystemSemaphore - \ingroup ipc \since 4.4 \brief The QSystemSemaphore class provides a general counting system semaphore. diff --git a/src/corelib/kernel/qtimer.cpp b/src/corelib/kernel/qtimer.cpp index f40f491..6c4eb1b 100644 --- a/src/corelib/kernel/qtimer.cpp +++ b/src/corelib/kernel/qtimer.cpp @@ -50,9 +50,8 @@ QT_BEGIN_NAMESPACE \class QTimer \brief The QTimer class provides repetitive and single-shot timers. - \ingroup time \ingroup events - \mainclass + The QTimer class provides a high-level programming interface for timers. To use it, create a QTimer, connect its timeout() signal @@ -101,10 +100,22 @@ QT_BEGIN_NAMESPACE more and more platforms, and we expect that zero-millisecond QTimers will gradually be replaced by \l{QThread}s. - Note that QTimer's accuracy depends on the underlying operating - system and hardware. Most platforms support an accuracy of - 1 millisecond. If Qt is unable to deliver the requested number of - timer clicks, it will silently discard some. + \section1 Accuracy and Timer Resolution + + Timers will never time out earlier than the specified timeout value + and they are not guaranteed to time out at the exact value specified. + In many situations, they may time out late by a period of time that + depends on the accuracy of the system timers. + + The accuracy of timers depends on the underlying operating system + and hardware. Most platforms support a resolution of 1 millisecond, + though the accuracy of the timer will not equal this resolution + in many real-world situations. + + If Qt is unable to deliver the requested number of timer clicks, + it will silently discard some. + + \section1 Alternatives to QTimer An alternative to using QTimer is to call QObject::startTimer() for your object and reimplement the QObject::timerEvent() event diff --git a/src/corelib/kernel/qtranslator.cpp b/src/corelib/kernel/qtranslator.cpp index de1157c..b9e6e14 100644 --- a/src/corelib/kernel/qtranslator.cpp +++ b/src/corelib/kernel/qtranslator.cpp @@ -249,8 +249,6 @@ public: output. \ingroup i18n - \ingroup environment - \mainclass An object of this class contains a set of translations from a source language to a target language. QTranslator provides diff --git a/src/corelib/kernel/qvariant.cpp b/src/corelib/kernel/qvariant.cpp index 54b4f67..d5b2d16 100644 --- a/src/corelib/kernel/qvariant.cpp +++ b/src/corelib/kernel/qvariant.cpp @@ -685,6 +685,7 @@ static bool convert(const QVariant::Private *d, QVariant::Type t, void *result, break; case QVariant::Url: *str = v_cast<QUrl>(d)->toString(); + break; default: return false; } @@ -962,10 +963,10 @@ static bool convert(const QVariant::Private *d, QVariant::Type t, void *result, float *f = static_cast<float *>(result); switch (d->type) { case QVariant::String: - *f = float(v_cast<QString>(d)->toDouble(ok)); + *f = v_cast<QString>(d)->toFloat(ok); break; case QVariant::ByteArray: - *f = float(v_cast<QByteArray>(d)->toDouble(ok)); + *f = v_cast<QByteArray>(d)->toFloat(ok); break; case QVariant::Bool: *f = float(d->data.b); @@ -1080,7 +1081,7 @@ static void streamDebug(QDebug dbg, const QVariant &v) dbg.nospace() << v.toULongLong(); break; case QMetaType::Float: - dbg.nospace() << qVariantValue<float>(v); + dbg.nospace() << v.toFloat(); break; case QMetaType::QObjectStar: dbg.nospace() << qVariantValue<QObject *>(v); @@ -1190,9 +1191,8 @@ const QVariant::Handler *QVariant::handler = &qt_kernel_variant_handler; \brief The QVariant class acts like a union for the most common Qt data types. \ingroup objectmodel - \ingroup misc \ingroup shared - \mainclass + Because C++ forbids unions from including types that have non-default constructors or destructors, most interesting Qt @@ -2357,16 +2357,17 @@ QBitArray QVariant::toBitArray() const } template <typename T> -inline T qNumVariantToHelper(const QVariant::Private &d, QVariant::Type t, +inline T qNumVariantToHelper(const QVariant::Private &d, const QVariant::Handler *handler, bool *ok, const T& val) { + uint t = qMetaTypeId<T>(); if (ok) *ok = true; if (d.type == t) return val; T ret; - if (!handler->convert(&d, t, &ret, ok) && ok) + if (!handler->convert(&d, QVariant::Type(t), &ret, ok) && ok) *ok = false; return ret; } @@ -2388,7 +2389,7 @@ inline T qNumVariantToHelper(const QVariant::Private &d, QVariant::Type t, */ int QVariant::toInt(bool *ok) const { - return qNumVariantToHelper<int>(d, Int, handler, ok, d.data.i); + return qNumVariantToHelper<int>(d, handler, ok, d.data.i); } /*! @@ -2408,7 +2409,7 @@ int QVariant::toInt(bool *ok) const */ uint QVariant::toUInt(bool *ok) const { - return qNumVariantToHelper<uint>(d, UInt, handler, ok, d.data.u); + return qNumVariantToHelper<uint>(d, handler, ok, d.data.u); } /*! @@ -2423,7 +2424,7 @@ uint QVariant::toUInt(bool *ok) const */ qlonglong QVariant::toLongLong(bool *ok) const { - return qNumVariantToHelper<qlonglong>(d, LongLong, handler, ok, d.data.ll); + return qNumVariantToHelper<qlonglong>(d, handler, ok, d.data.ll); } /*! @@ -2439,7 +2440,7 @@ qlonglong QVariant::toLongLong(bool *ok) const */ qulonglong QVariant::toULongLong(bool *ok) const { - return qNumVariantToHelper<qulonglong>(d, ULongLong, handler, ok, d.data.ull); + return qNumVariantToHelper<qulonglong>(d, handler, ok, d.data.ull); } /*! @@ -2466,7 +2467,7 @@ bool QVariant::toBool() const /*! Returns the variant as a double if the variant has type() \l - Double, \l Bool, \l ByteArray, \l Int, \l LongLong, \l String, \l + Double, \l QMetaType::Float, \l Bool, \l ByteArray, \l Int, \l LongLong, \l String, \l UInt, or \l ULongLong; otherwise returns 0.0. If \a ok is non-null: \c{*}\a{ok} is set to true if the value could be @@ -2476,7 +2477,41 @@ bool QVariant::toBool() const */ double QVariant::toDouble(bool *ok) const { - return qNumVariantToHelper<double>(d, Double, handler, ok, d.data.d); + return qNumVariantToHelper<double>(d, handler, ok, d.data.d); +} + +/*! + Returns the variant as a float if the variant has type() \l + Double, \l QMetaType::Float, \l Bool, \l ByteArray, \l Int, \l LongLong, \l String, \l + UInt, or \l ULongLong; otherwise returns 0.0. + + \since 4.6 + + If \a ok is non-null: \c{*}\a{ok} is set to true if the value could be + converted to a double; otherwise \c{*}\a{ok} is set to false. + + \sa canConvert(), convert() +*/ +float QVariant::toFloat(bool *ok) const +{ + return qNumVariantToHelper<float>(d, handler, ok, d.data.d); +} + +/*! + Returns the variant as a qreal if the variant has type() \l + Double, \l QMetaType::Float, \l Bool, \l ByteArray, \l Int, \l LongLong, \l String, \l + UInt, or \l ULongLong; otherwise returns 0.0. + + \since 4.6 + + If \a ok is non-null: \c{*}\a{ok} is set to true if the value could be + converted to a double; otherwise \c{*}\a{ok} is set to false. + + \sa canConvert(), convert() +*/ +qreal QVariant::toReal(bool *ok) const +{ + return qNumVariantToHelper<qreal>(d, handler, ok, d.data.d); } /*! @@ -2767,7 +2802,7 @@ bool QVariant::cmp(const QVariant &v) const if (d.type != v2.d.type) { if (qIsNumericType(d.type) && qIsNumericType(v.d.type)) { if (qIsFloatingPoint(d.type) || qIsFloatingPoint(v.d.type)) - return qFuzzyCompare(toDouble(), v.toDouble()); + return qFuzzyCompare(toReal(), v.toReal()); else return toLongLong() == v.toLongLong(); } diff --git a/src/corelib/kernel/qvariant.h b/src/corelib/kernel/qvariant.h index 569355a..79bd5b8 100644 --- a/src/corelib/kernel/qvariant.h +++ b/src/corelib/kernel/qvariant.h @@ -250,6 +250,8 @@ class Q_CORE_EXPORT QVariant qulonglong toULongLong(bool *ok = 0) const; bool toBool() const; double toDouble(bool *ok = 0) const; + float toFloat(bool *ok = 0) const; + qreal toReal(bool *ok = 0) const; QByteArray toByteArray() const; QBitArray toBitArray() const; QString toString() const; diff --git a/src/corelib/kernel/qwineventnotifier_p.cpp b/src/corelib/kernel/qwineventnotifier_p.cpp index f54d564..e5ce02c 100644 --- a/src/corelib/kernel/qwineventnotifier_p.cpp +++ b/src/corelib/kernel/qwineventnotifier_p.cpp @@ -52,8 +52,6 @@ QT_BEGIN_NAMESPACE \class QWinEventNotifier \brief The QWinEventNotifier class provides support for the Windows Wait functions. - \ingroup io - The QWinEventNotifier class makes it possible to use the wait functions on windows in a asynchronous manner. With this class you can register a HANDLE to an event and get notification when diff --git a/src/corelib/plugin/plugin.pri b/src/corelib/plugin/plugin.pri index aaecec9..c05ff48 100644 --- a/src/corelib/plugin/plugin.pri +++ b/src/corelib/plugin/plugin.pri @@ -22,3 +22,5 @@ win32 { unix { SOURCES += plugin/qlibrary_unix.cpp } + +LIBS_PRIVATE += $$QMAKE_LIBS_DYNLOAD diff --git a/src/corelib/plugin/qlibrary.cpp b/src/corelib/plugin/qlibrary.cpp index 5d2ed13..4cd3386 100644 --- a/src/corelib/plugin/qlibrary.cpp +++ b/src/corelib/plugin/qlibrary.cpp @@ -85,7 +85,7 @@ Q_GLOBAL_STATIC(QMutex, qt_library_mutex) \reentrant \brief The QLibrary class loads shared libraries at runtime. - \mainclass + \ingroup plugins An instance of a QLibrary object operates on a single shared diff --git a/src/corelib/plugin/qplugin.qdoc b/src/corelib/plugin/qplugin.qdoc new file mode 100644 index 0000000..3b8f1b0 --- /dev/null +++ b/src/corelib/plugin/qplugin.qdoc @@ -0,0 +1,135 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \headerfile <QtPlugin> + \title Macros for Defining Plugins + + \brief The <QtPlugin> header files defines macros for defining plugins. + + \sa {How to Create Qt Plugins} +*/ + +/*! + \macro Q_DECLARE_INTERFACE(ClassName, Identifier) + \relates <QtPlugin> + + This macro associates the given \a Identifier (a string literal) + to the interface class called \a ClassName. The \a Identifier must + be unique. For example: + + \snippet examples/tools/plugandpaint/interfaces.h 3 + + This macro is normally used right after the class definition for + \a ClassName, in a header file. See the + \l{tools/plugandpaint}{Plug & Paint} example for details. + + If you want to use Q_DECLARE_INTERFACE with interface classes + declared in a namespace then you have to make sure the Q_DECLARE_INTERFACE + is not inside a namespace though. For example: + \snippet doc/src/snippets/code/doc_src_qplugin.qdoc 0 + + \sa Q_INTERFACES(), Q_EXPORT_PLUGIN2(), {How to Create Qt Plugins} +*/ + +/*! + \macro Q_EXPORT_PLUGIN(ClassName) + \relates <QtPlugin> + \obsolete + + Use Q_EXPORT_PLUGIN2() instead. This macro is equivalent to + Q_EXPORT_PLUGIN2(\a ClassName, \a ClassName). +*/ + +/*! + \macro Q_EXPORT_PLUGIN2(PluginName, ClassName) + \relates <QtPlugin> + \since 4.1 + \keyword Q_EXPORT_PLUGIN2 + + This macro exports the plugin class \a ClassName for the plugin specified + by \a PluginName. The value of \a PluginName should correspond to the + \l{qmake Variable Reference#TARGET}{TARGET} specified in the plugin's + project file. + + There should be exactly one occurrence of this macro in the source code + for a Qt plugin, and it should be used where the implementation is written + rather than in a header file. + + Example: + + \snippet doc/src/snippets/code/doc_src_qplugin.qdoc 1 + + See the \l{tools/plugandpaint}{Plug & Paint} example for details. + + \sa Q_DECLARE_INTERFACE(), {How to Create Qt Plugins} +*/ + +/*! + \macro Q_IMPORT_PLUGIN(PluginName) + \relates <QtPlugin> + + This macro imports the plugin named \a PluginName, corresponding + to the \l{qmake Variable Reference#TARGET}{TARGET} specified in the + plugin's project file. + + Inserting this macro into your application's source code will allow + you to make use of a static plugin. + + Example: + + \snippet doc/src/snippets/code/doc_src_qplugin.qdoc 2 + + Static plugins must also be included by the linker when your + application is built. For Qt's predefined plugins, + you can use the \c QTPLUGIN to add + the required plugins to your build. For example: + + \snippet doc/src/snippets/code/doc_src_qplugin.qdoc 3 + + \sa {Static Plugins}, {How to Create Qt Plugins}, {Using qmake} +*/ + +/*! + \macro Q_EXPORT_STATIC_PLUGIN(ClassName) + \relates <QtPlugin> + \internal +*/ diff --git a/src/corelib/plugin/qpluginloader.cpp b/src/corelib/plugin/qpluginloader.cpp index 33972f2..971cc2b 100644 --- a/src/corelib/plugin/qpluginloader.cpp +++ b/src/corelib/plugin/qpluginloader.cpp @@ -57,7 +57,7 @@ QT_BEGIN_NAMESPACE \reentrant \brief The QPluginLoader class loads a plugin at run-time. - \mainclass + \ingroup plugins QPluginLoader provides access to a \l{How to Create Qt diff --git a/src/corelib/plugin/quuid.cpp b/src/corelib/plugin/quuid.cpp index 3d11f53..7e0e242 100644 --- a/src/corelib/plugin/quuid.cpp +++ b/src/corelib/plugin/quuid.cpp @@ -50,7 +50,6 @@ QT_BEGIN_NAMESPACE \brief The QUuid class stores a Universally Unique Identifier (UUID). \reentrant - \ingroup misc Using \e{U}niversally \e{U}nique \e{ID}entifiers (UUID) is a standard way to uniquely identify entities in a distributed diff --git a/src/corelib/thread/qmutex.cpp b/src/corelib/thread/qmutex.cpp index eaa7308..db9a415 100644 --- a/src/corelib/thread/qmutex.cpp +++ b/src/corelib/thread/qmutex.cpp @@ -56,8 +56,6 @@ QT_BEGIN_NAMESPACE \threadsafe \ingroup thread - \ingroup environment - \mainclass The purpose of a QMutex is to protect an object, data structure or section of code so that only one thread can access it at a time @@ -416,7 +414,6 @@ void QMutex::unlock() \threadsafe \ingroup thread - \ingroup environment Locking and unlocking a QMutex in complex functions and statements or in exception handling code is error-prone and diff --git a/src/corelib/thread/qreadwritelock.cpp b/src/corelib/thread/qreadwritelock.cpp index 6db10a0..8ce58e9 100644 --- a/src/corelib/thread/qreadwritelock.cpp +++ b/src/corelib/thread/qreadwritelock.cpp @@ -57,7 +57,6 @@ QT_BEGIN_NAMESPACE \threadsafe \ingroup thread - \ingroup environment A read-write lock is a synchronization tool for protecting resources that can be accessed for reading and writing. This type @@ -441,7 +440,6 @@ void QReadWriteLock::unlock() \threadsafe \ingroup thread - \ingroup environment The purpose of QReadLocker (and QWriteLocker) is to simplify QReadWriteLock locking and unlocking. Locking and unlocking @@ -514,7 +512,6 @@ void QReadWriteLock::unlock() \threadsafe \ingroup thread - \ingroup environment The purpose of QWriteLocker (and QReadLocker is to simplify QReadWriteLock locking and unlocking. Locking and unlocking diff --git a/src/corelib/thread/qsemaphore.cpp b/src/corelib/thread/qsemaphore.cpp index 38e800d..df8036f 100644 --- a/src/corelib/thread/qsemaphore.cpp +++ b/src/corelib/thread/qsemaphore.cpp @@ -54,7 +54,6 @@ QT_BEGIN_NAMESPACE \threadsafe \ingroup thread - \ingroup environment A semaphore is a generalization of a mutex. While a mutex can only be locked once, it's possible to acquire a semaphore diff --git a/src/corelib/thread/qthread.cpp b/src/corelib/thread/qthread.cpp index 80954c7..929b45c 100644 --- a/src/corelib/thread/qthread.cpp +++ b/src/corelib/thread/qthread.cpp @@ -202,8 +202,6 @@ QThreadPrivate::~QThreadPrivate() \brief The QThread class provides platform-independent threads. \ingroup thread - \ingroup environment - \mainclass A QThread represents a separate thread of control within the program; it shares data with all the other threads within the diff --git a/src/corelib/thread/qthreadstorage.cpp b/src/corelib/thread/qthreadstorage.cpp index fa77fe8..7a5f76f 100644 --- a/src/corelib/thread/qthreadstorage.cpp +++ b/src/corelib/thread/qthreadstorage.cpp @@ -191,8 +191,6 @@ void QThreadStorageData::finish(void **p) \threadsafe \ingroup thread - \ingroup environment - \mainclass QThreadStorage is a template class that provides per-thread data storage. diff --git a/src/corelib/thread/qwaitcondition.qdoc b/src/corelib/thread/qwaitcondition.qdoc new file mode 100644 index 0000000..ae2de6c --- /dev/null +++ b/src/corelib/thread/qwaitcondition.qdoc @@ -0,0 +1,187 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \class QWaitCondition + \brief The QWaitCondition class provides a condition variable for + synchronizing threads. + + \threadsafe + + \ingroup thread + + QWaitCondition allows a thread to tell other threads that some + sort of condition has been met. One or many threads can block + waiting for a QWaitCondition to set a condition with wakeOne() or + wakeAll(). Use wakeOne() to wake one randomly selected condition or + wakeAll() to wake them all. + + For example, let's suppose that we have three tasks that should + be performed whenever the user presses a key. Each task could be + split into a thread, each of which would have a + \l{QThread::run()}{run()} body like this: + + \snippet doc/src/snippets/code/src_corelib_thread_qwaitcondition_unix.cpp 0 + + Here, the \c keyPressed variable is a global variable of type + QWaitCondition. + + A fourth thread would read key presses and wake the other three + threads up every time it receives one, like this: + + \snippet doc/src/snippets/code/src_corelib_thread_qwaitcondition_unix.cpp 1 + + The order in which the three threads are woken up is undefined. + Also, if some of the threads are still in \c do_something() when + the key is pressed, they won't be woken up (since they're not + waiting on the condition variable) and so the task will not be + performed for that key press. This issue can be solved using a + counter and a QMutex to guard it. For example, here's the new + code for the worker threads: + + \snippet doc/src/snippets/code/src_corelib_thread_qwaitcondition_unix.cpp 2 + + Here's the code for the fourth thread: + + \snippet doc/src/snippets/code/src_corelib_thread_qwaitcondition_unix.cpp 3 + + The mutex is necessary because the results of two threads + attempting to change the value of the same variable + simultaneously are unpredictable. + + Wait conditions are a powerful thread synchronization primitive. + The \l{threads/waitconditions}{Wait Conditions} example shows how + to use QWaitCondition as an alternative to QSemaphore for + controlling access to a circular buffer shared by a producer + thread and a consumer thread. + + \sa QMutex, QSemaphore, QThread, {Wait Conditions Example} +*/ + +/*! + \fn QWaitCondition::QWaitCondition() + + Constructs a new wait condition object. +*/ + +/*! + \fn QWaitCondition::~QWaitCondition() + + Destroys the wait condition object. +*/ + +/*! + \fn void QWaitCondition::wakeOne() + + Wakes one thread waiting on the wait condition. The thread that + is woken up depends on the operating system's scheduling + policies, and cannot be controlled or predicted. + + If you want to wake up a specific thread, the solution is + typically to use different wait conditions and have different + threads wait on different conditions. + + \sa wakeAll() +*/ + +/*! + \fn void QWaitCondition::wakeAll() + + Wakes all threads waiting on the wait condition. The order in + which the threads are woken up depends on the operating system's + scheduling policies and cannot be controlled or predicted. + + \sa wakeOne() +*/ + +/*! + \fn bool QWaitCondition::wait(QMutex *mutex, unsigned long time) + + Releases the locked \a mutex and waits on the wait condition. The + \a mutex must be initially locked by the calling thread. If \a + mutex is not in a locked state, this function returns + immediately. If \a mutex is a recursive mutex, this function + returns immediately. The \a mutex will be unlocked, and the + calling thread will block until either of these conditions is met: + + \list + \o Another thread signals it using wakeOne() or wakeAll(). This + function will return true in this case. + \o \a time milliseconds has elapsed. If \a time is \c ULONG_MAX + (the default), then the wait will never timeout (the event + must be signalled). This function will return false if the + wait timed out. + \endlist + + The mutex will be returned to the same locked state. This + function is provided to allow the atomic transition from the + locked state to the wait state. + + \sa wakeOne(), wakeAll() +*/ + +/*! + \fn bool QWaitCondition::wait(QReadWriteLock *readWriteLock, unsigned long time) + \since 4.4 + + Releases the locked \a readWriteLock and waits on the wait + condition. The \a readWriteLock must be initially locked by the + calling thread. If \a readWriteLock is not in a locked state, this + function returns immediately. The \a readWriteLock must not be + locked recursively, otherwise this function will not release the + lock properly. The \a readWriteLock will be unlocked, and the + calling thread will block until either of these conditions is met: + + \list + \o Another thread signals it using wakeOne() or wakeAll(). This + function will return true in this case. + \o \a time milliseconds has elapsed. If \a time is \c ULONG_MAX + (the default), then the wait will never timeout (the event + must be signalled). This function will return false if the + wait timed out. + \endlist + + The \a readWriteLock will be returned to the same locked + state. This function is provided to allow the atomic transition + from the locked state to the wait state. + + \sa wakeOne(), wakeAll() +*/ diff --git a/src/corelib/tools/qalgorithms.h b/src/corelib/tools/qalgorithms.h index d334a03..3e5c3cc 100644 --- a/src/corelib/tools/qalgorithms.h +++ b/src/corelib/tools/qalgorithms.h @@ -141,23 +141,6 @@ inline void qCount(const Container &container, const T &value, Size &n) qCount(container.constBegin(), container.constEnd(), value, n); } - -#if (defined Q_CC_MSVC && _MSC_VER < 1300) || defined(Q_CC_MWERKS) -template <typename T> -inline void qSwap(T &value1, T &value2) -{ - qSwap_helper<T>(value1, value2, (T *)0); -} -#else -template <typename T> -inline void qSwap(T &value1, T &value2) -{ - T t = value1; - value1 = value2; - value2 = t; -} -#endif - #ifdef qdoc template <typename T> LessThan qLess() diff --git a/src/corelib/tools/qalgorithms.qdoc b/src/corelib/tools/qalgorithms.qdoc new file mode 100644 index 0000000..f7b7798 --- /dev/null +++ b/src/corelib/tools/qalgorithms.qdoc @@ -0,0 +1,651 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \headerfile <QtAlgorithms> + \title Generic Algorithms + \ingroup classlists + + \brief The <QtAlgorithms> header provides generic template-based algorithms. + + Qt provides a number of global template functions in \c + <QtAlgorithms> that work on containers and perform well-know + algorithms. You can use these algorithms with any \l {container + class} that provides STL-style iterators, including Qt's QList, + QLinkedList, QVector, QMap, and QHash classes. + + These functions have taken their inspiration from similar + functions available in the STL \c <algorithm> header. Most of them + have a direct STL equivalent; for example, qCopyBackward() is the + same as STL's copy_backward() algorithm. + + If STL is available on all your target platforms, you can use the + STL algorithms instead of their Qt counterparts. One reason why + you might want to use the STL algorithms is that STL provides + dozens and dozens of algorithms, whereas Qt only provides the most + important ones, making no attempt to duplicate functionality that + is already provided by the C++ standard. + + Most algorithms take \l {STL-style iterators} as parameters. The + algorithms are generic in the sense that they aren't bound to a + specific iterator class; you can use them with any iterators that + meet a certain set of requirements. + + Let's take the qFill() algorithm as an example. Unlike QVector, + QList has no fill() function that can be used to fill a list with + a particular value. If you need that functionality, you can use + qFill(): + + \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 0 + + qFill() takes a begin iterator, an end iterator, and a value. + In the example above, we pass \c list.begin() and \c list.end() + as the begin and end iterators, but this doesn't have to be + the case: + + \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 1 + + Different algorithms can have different requirements for the + iterators they accept. For example, qFill() accepts two + \l {forward iterators}. The iterator types required are specified + for each algorithm. If an iterator of the wrong type is passed (for + example, if QList::ConstIterator is passed as an \l {output + iterator}), you will always get a compiler error, although not + necessarily a very informative one. + + Some algorithms have special requirements on the value type + stored in the containers. For example, qEqual() requires that the + value type supports operator==(), which it uses to compare items. + Similarly, qDeleteAll() requires that the value type is a + non-const pointer type (for example, QWidget *). The value type + requirements are specified for each algorithm, and the compiler + will produce an error if a requirement isn't met. + + \target binaryFind example + + The generic algorithms can be used on other container classes + than those provided by Qt and STL. The syntax of STL-style + iterators is modeled after C++ pointers, so it's possible to use + plain arrays as containers and plain pointers as iterators. A + common idiom is to use qBinaryFind() together with two static + arrays: one that contains a list of keys, and another that + contains a list of associated values. For example, the following + code will look up an HTML entity (e.g., \c &) in the \c + name_table array and return the corresponding Unicode value from + the \c value_table if the entity is recognized: + + \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 2 + + This kind of code is for advanced users only; for most + applications, a QMap- or QHash-based approach would work just as + well: + + \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 3 + + \section1 Types of Iterators + + The algorithms have certain requirements on the iterator types + they accept, and these are specified individually for each + function. The compiler will produce an error if a requirement + isn't met. + + \section2 Input Iterators + + An \e{input iterator} is an iterator that can be used for reading + data sequentially from a container. It must provide the following + operators: \c{==} and \c{!=} for comparing two iterators, unary + \c{*} for retrieving the value stored in the item, and prefix + \c{++} for advancing to the next item. + + The Qt containers' iterator types (const and non-const) are all + input iterators. + + \section2 Output Iterators + + An \e{output iterator} is an iterator that can be used for + writing data sequentially to a container or to some output + stream. It must provide the following operators: unary \c{*} for + writing a value (i.e., \c{*it = val}) and prefix \c{++} for + advancing to the next item. + + The Qt containers' non-const iterator types are all output + iterators. + + \section2 Forward Iterators + + A \e{forward iterator} is an iterator that meets the requirements + of both input iterators and output iterators. + + The Qt containers' non-const iterator types are all forward + iterators. + + \section2 Bidirectional Iterators + + A \e{bidirectional iterator} is an iterator that meets the + requirements of forward iterators but that in addition supports + prefix \c{--} for iterating backward. + + The Qt containers' non-const iterator types are all bidirectional + iterators. + + \section2 Random Access Iterators + + The last category, \e{random access iterators}, is the most + powerful type of iterator. It supports all the requirements of a + bidirectional iterator, and supports the following operations: + + \table + \row \i \c{i += n} \i advances iterator \c i by \c n positions + \row \i \c{i -= n} \i moves iterator \c i back by \c n positions + \row \i \c{i + n} or \c{n + i} \i returns the iterator for the item \c + n positions ahead of iterator \c i + \row \i \c{i - n} \i returns the iterator for the item \c n positions behind of iterator \c i + \row \i \c{i - j} \i returns the number of items between iterators \c i and \c j + \row \i \c{i[n]} \i same as \c{*(i + n)} + \row \i \c{i < j} \i returns true if iterator \c j comes after iterator \c i + \endtable + + QList and QVector's non-const iterator types are random access iterators. + + \sa {container classes}, <QtGlobal> +*/ + +/*! \fn OutputIterator qCopy(InputIterator begin1, InputIterator end1, OutputIterator begin2) + \relates <QtAlgorithms> + + Copies the items from range [\a begin1, \a end1) to range [\a + begin2, ...), in the order in which they appear. + + The item at position \a begin1 is assigned to that at position \a + begin2; the item at position \a begin1 + 1 is assigned to that at + position \a begin2 + 1; and so on. + + Example: + \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 4 + + \sa qCopyBackward(), {input iterators}, {output iterators} +*/ + +/*! \fn BiIterator2 qCopyBackward(BiIterator1 begin1, BiIterator1 end1, BiIterator2 end2) + \relates <QtAlgorithms> + + Copies the items from range [\a begin1, \a end1) to range [..., + \a end2). + + The item at position \a end1 - 1 is assigned to that at position + \a end2 - 1; the item at position \a end1 - 2 is assigned to that + at position \a end2 - 2; and so on. + + Example: + \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 5 + + \sa qCopy(), {bidirectional iterators} +*/ + +/*! \fn bool qEqual(InputIterator1 begin1, InputIterator1 end1, InputIterator2 begin2) + \relates <QtAlgorithms> + + Compares the items in the range [\a begin1, \a end1) with the + items in the range [\a begin2, ...). Returns true if all the + items compare equal; otherwise returns false. + + Example: + \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 6 + + This function requires the item type (in the example above, + QString) to implement \c operator==(). + + \sa {input iterators} +*/ + +/*! \fn void qFill(ForwardIterator begin, ForwardIterator end, const T &value) + \relates <QtAlgorithms> + + Fills the range [\a begin, \a end) with \a value. + + Example: + \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 7 + + \sa qCopy(), {forward iterators} +*/ + +/*! \fn void qFill(Container &container, const T &value) + \relates <QtAlgorithms> + + \overload + + This is the same as qFill(\a{container}.begin(), \a{container}.end(), \a value); +*/ + +/*! \fn InputIterator qFind(InputIterator begin, InputIterator end, const T &value) + \relates <QtAlgorithms> + + Returns an iterator to the first occurrence of \a value in a + container in the range [\a begin, \a end). Returns \a end if \a + value isn't found. + + Example: + \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 8 + + This function requires the item type (in the example above, + QString) to implement \c operator==(). + + If the items in the range are in ascending order, you can get + faster results by using qLowerBound() or qBinaryFind() instead of + qFind(). + + \sa qBinaryFind(), {input iterators} +*/ + +/*! \fn void qFind(const Container &container, const T &value) + \relates <QtAlgorithms> + + \overload + + This is the same as qFind(\a{container}.begin(), \a{container}.end(), value); +*/ + +/*! \fn void qCount(InputIterator begin, InputIterator end, const T &value, Size &n) + \relates <QtAlgorithms> + + Returns the number of occurrences of \a value in the range [\a begin, \a end), + which is returned in \a n. \a n is never initialized, the count is added to \a n. + It is the caller's responsibility to initialize \a n. + + Example: + + \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 9 + + This function requires the item type (in the example above, + \c int) to implement \c operator==(). + + \sa {input iterators} +*/ + +/*! \fn void qCount(const Container &container, const T &value, Size &n) +\relates <QtAlgorithms> + +\overload + +Instead of operating on iterators, as in the other overload, this function +operates on the specified \a container to obtain the number of instances +of \a value in the variable passed as a reference in argument \a n. +*/ + +/*! \fn void qSwap(T &var1, T &var2) + \relates <QtAlgorithms> + + Exchanges the values of variables \a var1 and \a var2. + + Example: + \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 10 +*/ + +/*! \fn void qSort(RandomAccessIterator begin, RandomAccessIterator end) + \relates <QtAlgorithms> + + Sorts the items in range [\a begin, \a end) in ascending order + using the quicksort algorithm. + + Example: + \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 11 + + The sort algorithm is efficient on large data sets. It operates + in \l {linear-logarithmic time}, O(\e{n} log \e{n}). + + This function requires the item type (in the example above, + \c{int}) to implement \c operator<(). + + If neither of the two items is "less than" the other, the items are + taken to be equal. It is then undefined which one of the two + items will appear before the other after the sort. + + \sa qStableSort(), {random access iterators} +*/ + +/*! \fn void qSort(RandomAccessIterator begin, RandomAccessIterator end, LessThan lessThan) + \relates <QtAlgorithms> + + \overload + + Uses the \a lessThan function instead of \c operator<() to + compare the items. + + For example, here's how to sort the strings in a QStringList + in case-insensitive alphabetical order: + + \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 12 + + To sort values in reverse order, pass + \l{qGreater()}{qGreater<T>()} as the \a lessThan parameter. For + example: + + \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 13 + + If neither of the two items is "less than" the other, the items are + taken to be equal. It is then undefined which one of the two + items will appear before the other after the sort. + + An alternative to using qSort() is to put the items to sort in a + QMap, using the sort key as the QMap key. This is often more + convenient than defining a \a lessThan function. For example, the + following code shows how to sort a list of strings case + insensitively using QMap: + + \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 14 + + \sa QMap +*/ + +/*! \fn void qSort(Container &container) + \relates <QtAlgorithms> + + \overload + + This is the same as qSort(\a{container}.begin(), \a{container}.end()); +*/ + +/*! + \fn void qStableSort(RandomAccessIterator begin, RandomAccessIterator end) + \relates <QtAlgorithms> + + Sorts the items in range [\a begin, \a end) in ascending order + using a stable sorting algorithm. + + If neither of the two items is "less than" the other, the items are + taken to be equal. The item that appeared before the other in the + original container will still appear first after the sort. This + property is often useful when sorting user-visible data. + + Example: + \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 15 + + The sort algorithm is efficient on large data sets. It operates + in \l {linear-logarithmic time}, O(\e{n} log \e{n}). + + This function requires the item type (in the example above, + \c{int}) to implement \c operator<(). + + \sa qSort(), {random access iterators} +*/ + +/*! + \fn void qStableSort(RandomAccessIterator begin, RandomAccessIterator end, LessThan lessThan) + \relates <QtAlgorithms> + + \overload + + Uses the \a lessThan function instead of \c operator<() to + compare the items. + + For example, here's how to sort the strings in a QStringList + in case-insensitive alphabetical order: + + \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 16 + + Note that earlier versions of Qt allowed using a lessThan function that took its + arguments by non-const reference. From 4.3 and on this is no longer possible, + the arguments has to be passed by const reference or value. + + To sort values in reverse order, pass + \l{qGreater()}{qGreater<T>()} as the \a lessThan parameter. For + example: + + \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 17 + + If neither of the two items is "less than" the other, the items are + taken to be equal. The item that appeared before the other in the + original container will still appear first after the sort. This + property is often useful when sorting user-visible data. +*/ + +/*! + \fn void qStableSort(Container &container) + \relates <QtAlgorithms> + + \overload + + This is the same as qStableSort(\a{container}.begin(), \a{container}.end()); +*/ + +/*! \fn RandomAccessIterator qLowerBound(RandomAccessIterator begin, RandomAccessIterator end, const T &value) + \relates <QtAlgorithms> + + Performs a binary search of the range [\a begin, \a end) and + returns the position of the first ocurrence of \a value. If no + such item is found, returns the position where it should be + inserted. + + The items in the range [\a begin, \e end) must be sorted in + ascending order; see qSort(). + + Example: + \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 18 + + This function requires the item type (in the example above, + \c{int}) to implement \c operator<(). + + qLowerBound() can be used in conjunction with qUpperBound() to + iterate over all occurrences of the same value: + + \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 19 + + \sa qUpperBound(), qBinaryFind() +*/ + +/*! + \fn RandomAccessIterator qLowerBound(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan) + \relates <QtAlgorithms> + + \overload + + Uses the \a lessThan function instead of \c operator<() to + compare the items. + + Note that the items in the range must be sorted according to the order + specified by the \a lessThan object. +*/ + +/*! + \fn void qLowerBound(const Container &container, const T &value) + \relates <QtAlgorithms> + + \overload + + For read-only iteration over containers, this function is broadly equivalent to + qLowerBound(\a{container}.begin(), \a{container}.end(), value). However, since it + returns a const iterator, you cannot use it to modify the container; for example, + to insert items. +*/ + +/*! \fn RandomAccessIterator qUpperBound(RandomAccessIterator begin, RandomAccessIterator end, const T &value) + \relates <QtAlgorithms> + + Performs a binary search of the range [\a begin, \a end) and + returns the position of the one-past-the-last occurrence of \a + value. If no such item is found, returns the position where the + item should be inserted. + + The items in the range [\a begin, \e end) must be sorted in + ascending order; see qSort(). + + Example: + \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 20 + + This function requires the item type (in the example above, + \c{int}) to implement \c operator<(). + + qUpperBound() can be used in conjunction with qLowerBound() to + iterate over all occurrences of the same value: + + \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 21 + + \sa qLowerBound(), qBinaryFind() +*/ + +/*! + \fn RandomAccessIterator qUpperBound(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan) + \relates <QtAlgorithms> + + \overload + + Uses the \a lessThan function instead of \c operator<() to + compare the items. + + Note that the items in the range must be sorted according to the order + specified by the \a lessThan object. +*/ + +/*! + \fn void qUpperBound(const Container &container, const T &value) + \relates <QtAlgorithms> + + \overload + + This is the same as qUpperBound(\a{container}.begin(), \a{container}.end(), value); +*/ + + +/*! \fn RandomAccessIterator qBinaryFind(RandomAccessIterator begin, RandomAccessIterator end, const T &value) + \relates <QtAlgorithms> + + Performs a binary search of the range [\a begin, \a end) and + returns the position of an occurrence of \a value. If there are + no occurrences of \a value, returns \a end. + + The items in the range [\a begin, \a end) must be sorted in + ascending order; see qSort(). + + If there are many occurrences of the same value, any one of them + could be returned. Use qLowerBound() or qUpperBound() if you need + finer control. + + Example: + \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 22 + + This function requires the item type (in the example above, + QString) to implement \c operator<(). + + See the \l{<QtAlgorithms>#binaryFind example}{detailed + description} for an example usage. + + \sa qLowerBound(), qUpperBound(), {random access iterators} +*/ + +/*! \fn RandomAccessIterator qBinaryFind(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan) + \relates <QtAlgorithms> + + \overload + + Uses the \a lessThan function instead of \c operator<() to + compare the items. + + Note that the items in the range must be sorted according to the order + specified by the \a lessThan object. +*/ + +/*! + \fn void qBinaryFind(const Container &container, const T &value) + \relates <QtAlgorithms> + + \overload + + This is the same as qBinaryFind(\a{container}.begin(), \a{container}.end(), value); +*/ + + +/*! + \fn void qDeleteAll(ForwardIterator begin, ForwardIterator end) + \relates <QtAlgorithms> + + Deletes all the items in the range [\a begin, \a end) using the + C++ \c delete operator. The item type must be a pointer type (for + example, \c{QWidget *}). + + Example: + \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 23 + + Notice that qDeleteAll() doesn't remove the items from the + container; it merely calls \c delete on them. In the example + above, we call clear() on the container to remove the items. + + This function can also be used to delete items stored in + associative containers, such as QMap and QHash. Only the objects + stored in each container will be deleted by this function; objects + used as keys will not be deleted. + + \sa {forward iterators} +*/ + +/*! + \fn void qDeleteAll(const Container &c) + \relates <QtAlgorithms> + + \overload + + This is the same as qDeleteAll(\a{c}.begin(), \a{c}.end()). +*/ + +/*! \fn LessThan qLess() + \relates <QtAlgorithms> + + Returns a functional object, or functor, that can be passed to qSort() + or qStableSort(). + + Example: + + \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 24 + + \sa {qGreater()}{qGreater<T>()} +*/ + +/*! \fn LessThan qGreater() + \relates <QtAlgorithms> + + Returns a functional object, or functor, that can be passed to qSort() + or qStableSort(). + + Example: + + \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 25 + + \sa {qLess()}{qLess<T>()} +*/ diff --git a/src/corelib/tools/qbytearray.cpp b/src/corelib/tools/qbytearray.cpp index 9600579..316aab7 100644 --- a/src/corelib/tools/qbytearray.cpp +++ b/src/corelib/tools/qbytearray.cpp @@ -594,8 +594,8 @@ QByteArray::Data QByteArray::shared_empty = { Q_BASIC_ATOMIC_INITIALIZER(1), \ingroup tools \ingroup shared - \ingroup text - \mainclass + \ingroup string-processing + \reentrant QByteArray can be used to store both raw bytes (including '\\0's) diff --git a/src/corelib/tools/qbytearraymatcher.cpp b/src/corelib/tools/qbytearraymatcher.cpp index 1c10a4f..37cb9bb 100644 --- a/src/corelib/tools/qbytearraymatcher.cpp +++ b/src/corelib/tools/qbytearraymatcher.cpp @@ -94,7 +94,7 @@ static inline int bm_find(const uchar *cc, int l, int index, const uchar *puc, u can be quickly matched in a byte array. \ingroup tools - \ingroup text + \ingroup string-processing This class is useful when you have a sequence of bytes that you want to repeatedly match against some byte arrays (perhaps in a diff --git a/src/corelib/tools/qcache.qdoc b/src/corelib/tools/qcache.qdoc new file mode 100644 index 0000000..4c008fa --- /dev/null +++ b/src/corelib/tools/qcache.qdoc @@ -0,0 +1,244 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \class QCache + \brief The QCache class is a template class that provides a cache. + + \ingroup tools + \ingroup shared + + \reentrant + + QCache\<Key, T\> defines a cache that stores objects of type T + associated with keys of type Key. For example, here's the + definition of a cache that stores objects of type Employee + associated with an integer key: + + \snippet doc/src/snippets/code/doc_src_qcache.qdoc 0 + + Here's how to insert an object in the cache: + + \snippet doc/src/snippets/code/doc_src_qcache.qdoc 1 + + The advantage of using QCache over some other key-based data + structure (such as QMap or QHash) is that QCache automatically + takes ownership of the objects that are inserted into the cache and + deletes them to make room for new objects, if necessary. When + inserting an object into the cache, you can specify a \e{cost}, + which should bear some approximate relationship to the amount of + memory taken by the object. When the sum of all objects' costs + (totalCost()) exceeds the cache's limit (maxCost()), QCache starts + deleting objects in the cache to keep under the limit, starting with + less recently accessed objects. + + By default, QCache's maxCost() is 100. You can specify a + different value in the QCache constructor: + + \snippet doc/src/snippets/code/doc_src_qcache.qdoc 2 + + Each time you call insert(), you can specify a cost as third + argument (after the key and a pointer to the object to insert). + After the call, the inserted object is owned by the QCache, which + may delete it at any time to make room for other objects. + + To look up objects in the cache, use object() or + operator[](). This function looks up an object by its key, and + returns either a pointer to the cached object (which is owned by + the cache) or 0. + + If you want to remove an object from the cache for a particular key, + call remove(). This will also delete the object. If you want to + remove an object from the cache without the QCache deleting it, use + take(). + + \sa QPixmapCache, QHash, QMap +*/ + +/*! \fn QCache::QCache(int maxCost = 100) + + Constructs a cache whose contents will never have a total cost + greater than \a maxCost. +*/ + +/*! \fn QCache::~QCache() + + Destroys the cache. Deletes all the objects in the cache. +*/ + +/*! \fn int QCache::maxCost() const + + Returns the maximum allowed total cost of the cache. + + \sa setMaxCost(), totalCost() +*/ + +/*! \fn void QCache::setMaxCost(int cost) + + Sets the maximum allowed total cost of the cache to \a cost. If + the current total cost is greater than \a cost, some objects are + deleted immediately. + + \sa maxCost(), totalCost() +*/ + +/*! \fn int QCache::totalCost() const + + Returns the total cost of the objects in the cache. + + This value is normally below maxCost(), but QCache makes an + exception for Qt's \l{implicitly shared} classes. If a cached + object shares its internal data with another instance, QCache may + keep the object lying around, possibly contributing to making + totalCost() larger than maxCost(). + + \sa setMaxCost() +*/ + +/*! \fn int QCache::size() const + + Returns the number of objects in the cache. + + \sa isEmpty() +*/ + +/*! \fn int QCache::count() const + + Same as size(). +*/ + +/*! \fn bool QCache::isEmpty() const + + Returns true if the cache contains no objects; otherwise + returns false. + + \sa size() +*/ + +/*! \fn QList<Key> QCache::keys() const + + Returns a list of the keys in the cache. +*/ + +/*! \fn void QCache::clear(); + + Deletes all the objects in the cache. + + \sa remove(), take() +*/ + + +/*! \fn bool QCache::insert(const Key &key, T *object, int cost = 1) + + Inserts \a object into the cache with key \a key and + associated cost \a cost. Any object with the same key already in + the cache will be removed. + + After this call, \a object is owned by the QCache and may be + deleted at any time. In particular, if \a cost is greater than + maxCost(), the object will be deleted immediately. + + The function returns true if the object was inserted into the + cache; otherwise it returns false. + + \sa take(), remove() +*/ + +/*! \fn T *QCache::object(const Key &key) const + + Returns the object associated with key \a key, or 0 if the key does + not exist in the cache. + + \warning The returned object is owned by QCache and may be + deleted at any time. + + \sa take(), remove() +*/ + +/*! \fn bool QCache::contains(const Key &key) const + + Returns true if the cache contains an object associated with key \a + key; otherwise returns false. + + \sa take(), remove() +*/ + +/*! \fn T *QCache::operator[](const Key &key) const + + Returns the object associated with key \a key, or 0 if the key does + not exist in the cache. + + This is the same as object(). + + \warning The returned object is owned by QCache and may be + deleted at any time. +*/ + +/*! \fn bool QCache::remove(const Key &key) + + Deletes the object associated with key \a key. Returns true if the + object was found in the cache; otherwise returns false. + + \sa take(), clear() +*/ + +/*! \fn T *QCache::take(const Key &key) + + Takes the object associated with key \a key out of the cache + without deleting it. Returns a pointer to the object taken out, or + 0 if the key does not exist in the cache. + + The ownership of the returned object is passed to the caller. + + \sa remove() +*/ + +/*! + \fn QCache::QCache(int maxCost, int dummy) + + Use QCache(int) instead. +*/ + +/*! + \fn T *QCache::find(const Key &key) const + + Use object() instead. +*/ diff --git a/src/corelib/tools/qchar.cpp b/src/corelib/tools/qchar.cpp index ab84603..e9f9552 100644 --- a/src/corelib/tools/qchar.cpp +++ b/src/corelib/tools/qchar.cpp @@ -70,7 +70,7 @@ QT_BEGIN_NAMESPACE /*! \class QLatin1Char \brief The QLatin1Char class provides an 8-bit ASCII/Latin-1 character. - \ingroup text + \ingroup string-processing This class is only useful to avoid the codec for C strings business in the QChar(ch) constructor. You can avoid it by writing @@ -104,7 +104,7 @@ QT_BEGIN_NAMESPACE \class QChar \brief The QChar class provides a 16-bit Unicode character. - \ingroup text + \ingroup string-processing \reentrant In Qt, Unicode characters are 16-bit entities without any markup diff --git a/src/corelib/tools/qdatetime.cpp b/src/corelib/tools/qdatetime.cpp index 0758afa..8b9d202 100644 --- a/src/corelib/tools/qdatetime.cpp +++ b/src/corelib/tools/qdatetime.cpp @@ -193,8 +193,6 @@ static QString fmtDateTime(const QString& f, const QTime* dt = 0, const QDate* d \reentrant \brief The QDate class provides date functions. - \ingroup time - \mainclass A QDate object contains a calendar date, i.e. year, month, and day numbers, in the Gregorian calendar. (see \l{QDate G and J} {Use of @@ -1411,8 +1409,6 @@ void QDate::julianToGregorian(uint jd, int &y, int &m, int &d) \brief The QTime class provides clock time functions. - \ingroup time - \mainclass A QTime object contains a clock time, i.e. the number of hours, minutes, seconds, and milliseconds since midnight. It can read the @@ -2075,8 +2071,6 @@ int QTime::elapsed() const \reentrant \brief The QDateTime class provides date and time functions. - \ingroup time - \mainclass A QDateTime object contains a calendar date and a clock time (a "datetime"). It is a combination of the QDate and QTime classes. diff --git a/src/corelib/tools/qeasingcurve.cpp b/src/corelib/tools/qeasingcurve.cpp index 5cc8080..e84e3f0 100644 --- a/src/corelib/tools/qeasingcurve.cpp +++ b/src/corelib/tools/qeasingcurve.cpp @@ -301,7 +301,7 @@ #ifndef QT_NO_DEBUG_STREAM #include <QtCore/qdebug.h> -#include <QtCore/QString> +#include <QtCore/qstring.h> #endif QT_BEGIN_NAMESPACE diff --git a/src/corelib/tools/qhash.cpp b/src/corelib/tools/qhash.cpp index 308ba23..8bc9f29 100644 --- a/src/corelib/tools/qhash.cpp +++ b/src/corelib/tools/qhash.cpp @@ -539,7 +539,7 @@ void QHashData::checkSanity() \ingroup tools \ingroup shared - \mainclass + \reentrant QHash\<Key, T\> is one of Qt's generic \l{container classes}. It @@ -1672,7 +1672,7 @@ void QHashData::checkSanity() \ingroup tools \ingroup shared - \mainclass + \reentrant QMultiHash\<Key, T\> is one of Qt's generic \l{container classes}. diff --git a/src/corelib/tools/qiterator.qdoc b/src/corelib/tools/qiterator.qdoc new file mode 100644 index 0000000..c767be3 --- /dev/null +++ b/src/corelib/tools/qiterator.qdoc @@ -0,0 +1,1431 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \class QListIterator + \inmodule QtCore + + \brief The QListIterator class provides a Java-style const iterator for QList and QQueue. + + QList has both \l{Java-style iterators} and \l{STL-style + iterators}. The Java-style iterators are more high-level and + easier to use than the STL-style iterators; on the other hand, + they are slightly less efficient. + + An alternative to using iterators is to use index positions. Most + QList member functions take an index as their first parameter, + making it possible to access, modify, and remove items without + using iterators. + + QListIterator\<T\> allows you to iterate over a QList\<T\> (or a + QQueue\<T\>). If you want to modify the list as you iterate over + it, use QMutableListIterator\<T\> instead. + + The QListIterator constructor takes a QList as argument. After + construction, the iterator is located at the very beginning of + the list (before the first item). Here's how to iterate over all + the elements sequentially: + + \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 0 + + The next() function returns the next item in the list and + advances the iterator. Unlike STL-style iterators, Java-style + iterators point \e between items rather than directly \e at + items. The first call to next() advances the iterator to the + position between the first and second item, and returns the first + item; the second call to next() advances the iterator to the + position between the second and third item, and returns the second + item; and so on. + + \img javaiterators1.png + + Here's how to iterate over the elements in reverse order: + + \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 1 + + If you want to find all occurrences of a particular value, use + findNext() or findPrevious() in a loop. + + Multiple iterators can be used on the same list. If the list is + modified while a QListIterator is active, the QListIterator will + continue iterating over the original list, ignoring the modified + copy. + + \sa QMutableListIterator, QList::const_iterator +*/ + +/*! + \class QLinkedListIterator + \inmodule QtCore + + \brief The QLinkedListIterator class provides a Java-style const iterator for QLinkedList. + + QLinkedList has both \l{Java-style iterators} and + \l{STL-style iterators}. The Java-style iterators are more + high-level and easier to use than the STL-style iterators; on the + other hand, they are slightly less efficient. + + QLinkedListIterator\<T\> allows you to iterate over a + QLinkedList\<T\>. If you want to modify the list as you iterate + over it, use QMutableLinkedListIterator\<T\> instead. + + The QLinkedListIterator constructor takes a QLinkedList as + argument. After construction, the iterator is located at the very + beginning of the list (before the first item). Here's how to + iterate over all the elements sequentially: + + \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 2 + + The next() function returns the next item in the list and + advances the iterator. Unlike STL-style iterators, Java-style + iterators point \e between items rather than directly \e at + items. The first call to next() advances the iterator to the + position between the first and second item, and returns the first + item; the second call to next() advances the iterator to the + position between the second and third item, and returns the second + item; and so on. + + \img javaiterators1.png + + Here's how to iterate over the elements in reverse order: + + \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 3 + + If you want to find all occurrences of a particular value, use + findNext() or findPrevious() in a loop. + + Multiple iterators can be used on the same list. If the list is + modified while a QLinkedListIterator is active, the + QLinkedListIterator will continue iterating over the original + list, ignoring the modified copy. + + \sa QMutableLinkedListIterator, QLinkedList::const_iterator +*/ + +/*! + \class QVectorIterator + \inmodule QtCore + \brief The QVectorIterator class provides a Java-style const iterator for QVector and QStack. + + QVector has both \l{Java-style iterators} and \l{STL-style + iterators}. The Java-style iterators are more high-level and + easier to use than the STL-style iterators; on the other hand, + they are slightly less efficient. + + An alternative to using iterators is to use index positions. Most + QVector member functions take an index as their first parameter, + making it possible to access, insert, and remove items without + using iterators. + + QVectorIterator\<T\> allows you to iterate over a QVector\<T\> + (or a QStack\<T\>). If you want to modify the vector as you + iterate over it, use QMutableVectorIterator\<T\> instead. + + The QVectorIterator constructor takes a QVector as argument. + After construction, the iterator is located at the very beginning + of the vector (before the first item). Here's how to iterate over + all the elements sequentially: + + \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 4 + + The next() function returns the next item in the vector and + advances the iterator. Unlike STL-style iterators, Java-style + iterators point \e between items rather than directly \e at + items. The first call to next() advances the iterator to the + position between the first and second item, and returns the first + item; the second call to next() advances the iterator to the + position between the second and third item, returning the second + item; and so on. + + \img javaiterators1.png + + Here's how to iterate over the elements in reverse order: + + \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 5 + + If you want to find all occurrences of a particular value, use + findNext() or findPrevious() in a loop. + + Multiple iterators can be used on the same vector. If the vector + is modified while a QVectorIterator is active, the QVectorIterator + will continue iterating over the original vector, ignoring the + modified copy. + + \sa QMutableVectorIterator, QVector::const_iterator +*/ + +/*! + \class QSetIterator + \inmodule QtCore + \brief The QSetIterator class provides a Java-style const iterator for QSet. + + QSet supports both \l{Java-style iterators} and \l{STL-style + iterators}. The Java-style iterators are more high-level and + easier to use than the STL-style iterators; on the other hand, + they are slightly less efficient. + + QSetIterator\<T\> allows you to iterate over a QSet\<T\>. If you + want to modify the set as you iterate over it, use + QMutableSetIterator\<T\> instead. + + The constructor takes a QSet as argument. After construction, the + iterator is located at the very beginning of the set (before + the first item). Here's how to iterate over all the elements + sequentially: + + \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 6 + + The next() function returns the next item in the set and + advances the iterator. Unlike STL-style iterators, Java-style + iterators point \e between items rather than directly \e at + items. The first call to next() advances the iterator to the + position between the first and second item, and returns the first + item; the second call to next() advances the iterator to the + position between the second and third item, returning the second + item; and so on. + + \img javaiterators1.png + + Here's how to iterate over the elements in reverse order: + + \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 7 + + If you want to find all occurrences of a particular value, use + findNext() or findPrevious() in a loop. + + Multiple iterators can be used on the same set. If the set + is modified while a QSetIterator is active, the QSetIterator + will continue iterating over the original set, ignoring the + modified copy. + + \sa QMutableSetIterator, QSet::const_iterator +*/ + +/*! + \class QMutableListIterator + \inmodule QtCore + + \brief The QMutableListIterator class provides a Java-style non-const iterator for QList and QQueue. + + QList has both \l{Java-style iterators} and \l{STL-style + iterators}. The Java-style iterators are more high-level and + easier to use than the STL-style iterators; on the other hand, + they are slightly less efficient. + + An alternative to using iterators is to use index positions. Most + QList member functions take an index as their first parameter, + making it possible to access, insert, and remove items without + using iterators. + + QMutableListIterator\<T\> allows you to iterate over a QList\<T\> + (or a QQueue\<T\>) and modify the list. If you don't want to + modify the list (or have a const QList), use the slightly faster + QListIterator\<T\> instead. + + The QMutableListIterator constructor takes a QList as argument. + After construction, the iterator is located at the very beginning + of the list (before the first item). Here's how to iterate over + all the elements sequentially: + + \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 8 + + The next() function returns the next item in the list and + advances the iterator. Unlike STL-style iterators, Java-style + iterators point \e between items rather than directly \e at + items. The first call to next() advances the iterator to the + position between the first and second item, and returns the first + item; the second call to next() advances the iterator to the + position between the second and third item, returning the second + item; and so on. + + \img javaiterators1.png + + Here's how to iterate over the elements in reverse order: + + \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 9 + + If you want to find all occurrences of a particular value, use + findNext() or findPrevious() in a loop. + + If you want to remove items as you iterate over the list, use + remove(). If you want to modify the value of an item, use + setValue(). If you want to insert a new item in the list, use + insert(). + + Example: + \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 10 + + The example traverses a list, replacing negative numbers with + their absolute values, and eliminating zeroes. + + Only one mutable iterator can be active on a given list at any + time. Furthermore, no changes should be done directly to the list + while the iterator is active (as opposed to through the + iterator), since this could invalidate the iterator and lead to + undefined behavior. + + \sa QListIterator, QList::iterator +*/ + +/*! + \class QMutableLinkedListIterator + \inmodule QtCore + + \brief The QMutableLinkedListIterator class provides a Java-style non-const iterator for QLinkedList. + + QLinkedList has both \l{Java-style iterators} and + \l{STL-style iterators}. The Java-style iterators are more + high-level and easier to use than the STL-style iterators; on the + other hand, they are slightly less efficient. + + QMutableLinkedListIterator\<T\> allows you to iterate over a + QLinkedList\<T\> and modify the list. If you don't want to modify + the list (or have a const QLinkedList), use the slightly faster + QLinkedListIterator\<T\> instead. + + The QMutableLinkedListIterator constructor takes a QLinkedList as + argument. After construction, the iterator is located at the very + beginning of the list (before the first item). Here's how to + iterate over all the elements sequentially: + + \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 11 + + The next() function returns the next item in the list and + advances the iterator. Unlike STL-style iterators, Java-style + iterators point \e between items rather than directly \e at + items. The first call to next() advances the iterator to the + position between the first and second item, and returns the first + item; the second call to next() advances the iterator to the + position between the second and third item, returning the second + item; and so on. + + \img javaiterators1.png + + Here's how to iterate over the elements in reverse order: + + \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 12 + + If you want to find all occurrences of a particular value, use + findNext() or findPrevious() in a loop. + + If you want to remove items as you iterate over the list, use + remove(). If you want to modify the value of an item, use + setValue(). If you want to insert a new item in the list, use + insert(). + + Example: + \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 13 + + The example traverses a list, replacing negative numbers with + their absolute values, and eliminating zeroes. + + Only one mutable iterator can be active on a given list at any + time. Furthermore, no changes should be done directly to the list + while the iterator is active (as opposed to through the + iterator), since this could invalidate the iterator and lead to + undefined behavior. + + \sa QLinkedListIterator, QLinkedList::iterator +*/ + +/*! + \class QMutableVectorIterator + \inmodule QtCore + + \brief The QMutableVectorIterator class provides a Java-style non-const iterator for QVector and QStack. + + QVector has both \l{Java-style iterators} and \l{STL-style + iterators}. The Java-style iterators are more high-level and + easier to use than the STL-style iterators; on the other hand, + they are slightly less efficient. + + An alternative to using iterators is to use index positions. Most + QVector member functions take an index as their first parameter, + making it possible to access, insert, and remove items without + using iterators. + + QMutableVectorIterator\<T\> allows you to iterate over a + QVector\<T\> and modify the vector. If you don't want to modify + the vector (or have a const QVector), use the slightly faster + QVectorIterator\<T\> instead. + + The QMutableVectorIterator constructor takes a QVector as + argument. After construction, the iterator is located at the very + beginning of the list (before the first item). Here's how to + iterate over all the elements sequentially: + + \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 14 + + The next() function returns the next item in the vector and + advances the iterator. Unlike STL-style iterators, Java-style + iterators point \e between items rather than directly \e at + items. The first call to next() advances the iterator to the + position between the first and second item, and returns the first + item; the second call to next() advances the iterator to the + position between the second and third item, returning the second + item; and so on. + + \img javaiterators1.png + + Here's how to iterate over the elements in reverse order: + + \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 15 + + If you want to find all occurrences of a particular value, use + findNext() or findPrevious() in a loop. + + If you want to remove items as you iterate over the vector, use + remove(). If you want to modify the value of an item, use + setValue(). If you want to insert a new item in the vector, use + insert(). + + Example: + \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 16 + + The example traverses a vector, replacing negative numbers with + their absolute values, and eliminating zeroes. + + Only one mutable iterator can be active on a given vector at any + time. Furthermore, no changes should be done directly to the + vector while the iterator is active (as opposed to through the + iterator), since this could invalidate the iterator and lead to + undefined behavior. + + \sa QVectorIterator, QVector::iterator +*/ + +/*! + \class QMutableSetIterator + \inmodule QtCore + \since 4.2 + + \brief The QMutableSetIterator class provides a Java-style non-const iterator for QSet. + + QSet has both \l{Java-style iterators} and \l{STL-style + iterators}. The Java-style iterators are more high-level and + easier to use than the STL-style iterators; on the other hand, + they are slightly less efficient. + + QMutableSetIterator\<T\> allows you to iterate over a QSet\<T\> + and remove items from the set as you iterate. If you don't want + to modify the set (or have a const QSet), use the slightly faster + QSetIterator\<T\> instead. + + The QMutableSetIterator constructor takes a QSet as argument. + After construction, the iterator is located at the very beginning + of the set (before the first item). Here's how to iterate over + all the elements sequentially: + + \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 17 + + The next() function returns the next item in the set and + advances the iterator. Unlike STL-style iterators, Java-style + iterators point \e between items rather than directly \e at + items. The first call to next() advances the iterator to the + position between the first and second item, and returns the first + item; the second call to next() advances the iterator to the + position between the second and third item, returning the second + item; and so on. + + \img javaiterators1.png + + Here's how to iterate over the elements in reverse order: + + \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 18 + + If you want to remove items as you iterate over the set, use + remove(). + + Only one mutable iterator can be active on a given set at any + time. Furthermore, no changes should be done directly to the set + while the iterator is active (as opposed to through the + iterator), since this could invalidate the iterator and lead to + undefined behavior. + + \sa QSetIterator, QSet::iterator +*/ + +/*! + \fn QListIterator::QListIterator(const QList<T> &list) + \fn QLinkedListIterator::QLinkedListIterator(const QLinkedList<T> &list) + \fn QMutableListIterator::QMutableListIterator(QList<T> &list) + \fn QMutableLinkedListIterator::QMutableLinkedListIterator(QLinkedList<T> &list) + + Constructs an iterator for traversing \a list. The iterator is + set to be at the front of the list (before the first item). + + \sa operator=() +*/ + +/*! + \fn QVectorIterator::QVectorIterator(const QVector<T> &vector) + \fn QMutableVectorIterator::QMutableVectorIterator(QVector<T> &vector) + + Constructs an iterator for traversing \a vector. The iterator is + set to be at the front of the vector (before the first item). + + \sa operator=() +*/ + +/*! + \fn QSetIterator::QSetIterator(const QSet<T> &set) + \fn QMutableSetIterator::QMutableSetIterator(QSet<T> &set) + + Constructs an iterator for traversing \a set. The iterator is + set to be at the front of the set (before the first item). + + \sa operator=() +*/ + +/*! + \fn QMutableListIterator::~QMutableListIterator() + \fn QMutableLinkedListIterator::~QMutableLinkedListIterator() + \fn QMutableVectorIterator::~QMutableVectorIterator() + \fn QMutableSetIterator::~QMutableSetIterator() + + Destroys the iterator. + + \sa operator=() +*/ + +/*! \fn QMutableListIterator &QMutableListIterator::operator=(QList<T> &list) + \fn QMutableLinkedListIterator &QMutableLinkedListIterator::operator=(QLinkedList<T> &list) + \fn QListIterator &QListIterator::operator=(const QList<T> &list) + \fn QLinkedListIterator &QLinkedListIterator::operator=(const QLinkedList<T> &list) + + Makes the iterator operate on \a list. The iterator is set to be + at the front of the list (before the first item). + + \sa toFront(), toBack() +*/ + +/*! \fn QVectorIterator &QVectorIterator::operator=(const QVector<T> &vector) + \fn QMutableVectorIterator &QMutableVectorIterator::operator=(QVector<T> &vector) + + Makes the iterator operate on \a vector. The iterator is set to be + at the front of the vector (before the first item). + + \sa toFront(), toBack() +*/ + +/*! \fn QSetIterator &QSetIterator::operator=(const QSet<T> &set) + \fn QMutableSetIterator &QMutableSetIterator::operator=(QSet<T> &set) + + Makes the iterator operate on \a set. The iterator is set to be + at the front of the set (before the first item). + + \sa toFront(), toBack() +*/ + +/*! \fn void QListIterator::toFront() + \fn void QLinkedListIterator::toFront() + \fn void QVectorIterator::toFront() + \fn void QSetIterator::toFront() + \fn void QMutableListIterator::toFront() + \fn void QMutableLinkedListIterator::toFront() + \fn void QMutableVectorIterator::toFront() + \fn void QMutableSetIterator::toFront() + + Moves the iterator to the front of the container (before the + first item). + + \sa toBack(), next() +*/ + +/*! \fn void QListIterator::toBack() + \fn void QLinkedListIterator::toBack() + \fn void QVectorIterator::toBack() + \fn void QSetIterator::toBack() + \fn void QMutableListIterator::toBack() + \fn void QMutableLinkedListIterator::toBack() + \fn void QMutableVectorIterator::toBack() + \fn void QMutableSetIterator::toBack() + + Moves the iterator to the back of the container (after the last + item). + + \sa toFront(), previous() +*/ + +/*! \fn bool QListIterator::hasNext() const + \fn bool QLinkedListIterator::hasNext() const + \fn bool QVectorIterator::hasNext() const + \fn bool QSetIterator::hasNext() const + \fn bool QMutableListIterator::hasNext() const + \fn bool QMutableLinkedListIterator::hasNext() const + \fn bool QMutableVectorIterator::hasNext() const + \fn bool QMutableSetIterator::hasNext() const + + Returns true if there is at least one item ahead of the iterator, + i.e. the iterator is \e not at the back of the container; + otherwise returns false. + + \sa hasPrevious(), next() +*/ + +/*! \fn const T &QListIterator::next() + \fn const T &QLinkedListIterator::next() + \fn const T &QVectorIterator::next() + \fn const T &QSetIterator::next() + \fn const T &QMutableSetIterator::next() + + Returns the next item and advances the iterator by one position. + + Calling this function on an iterator located at the back of the + container leads to undefined results. + + \sa hasNext(), peekNext(), previous() +*/ + +/*! \fn T &QMutableListIterator::next() + \fn T &QMutableLinkedListIterator::next() + \fn T &QMutableVectorIterator::next() + + Returns a reference to the next item, and advances the iterator + by one position. + + Calling this function on an iterator located at the back of the + container leads to undefined results. + + \sa hasNext(), peekNext(), previous() +*/ + +/*! \fn const T &QListIterator::peekNext() const + \fn const T &QLinkedListIterator::peekNext() const + \fn const T &QVectorIterator::peekNext() const + \fn const T &QSetIterator::peekNext() const + \fn const T &QMutableSetIterator::peekNext() const + + Returns the next item without moving the iterator. + + Calling this function on an iterator located at the back of the + container leads to undefined results. + + \sa hasNext(), next(), peekPrevious() +*/ + +/*! \fn T &QMutableListIterator::peekNext() const + \fn T &QMutableLinkedListIterator::peekNext() const + \fn T &QMutableVectorIterator::peekNext() const + + Returns a reference to the next item, without moving the iterator. + + Calling this function on an iterator located at the back of the + container leads to undefined results. + + \sa hasNext(), next(), peekPrevious() +*/ + +/*! \fn bool QListIterator::hasPrevious() const + \fn bool QLinkedListIterator::hasPrevious() const + \fn bool QVectorIterator::hasPrevious() const + \fn bool QSetIterator::hasPrevious() const + \fn bool QMutableListIterator::hasPrevious() const + \fn bool QMutableLinkedListIterator::hasPrevious() const + \fn bool QMutableVectorIterator::hasPrevious() const + \fn bool QMutableSetIterator::hasPrevious() const + + Returns true if there is at least one item behind the iterator, + i.e. the iterator is \e not at the front of the container; + otherwise returns false. + + \sa hasNext(), previous() +*/ + +/*! \fn const T &QListIterator::previous() + \fn const T &QLinkedListIterator::previous() + \fn const T &QVectorIterator::previous() + \fn const T &QSetIterator::previous() + \fn const T &QMutableSetIterator::previous() + + Returns the previous item and moves the iterator back by one + position. + + Calling this function on an iterator located at the front of the + container leads to undefined results. + + \sa hasPrevious(), peekPrevious(), next() +*/ + +/*! \fn T &QMutableListIterator::previous() + \fn T &QMutableLinkedListIterator::previous() + \fn T &QMutableVectorIterator::previous() + + Returns a reference to the previous item and moves the iterator + back by one position. + + Calling this function on an iterator located at the front of the + container leads to undefined results. + + \sa hasPrevious(), peekPrevious(), next() +*/ + +/*! \fn const T &QListIterator::peekPrevious() const + \fn const T &QLinkedListIterator::peekPrevious() const + \fn const T &QVectorIterator::peekPrevious() const + \fn const T &QSetIterator::peekPrevious() const + \fn const T &QMutableSetIterator::peekPrevious() const + + Returns the previous item without moving the iterator. + + Calling this function on an iterator located at the front of the + container leads to undefined results. + + \sa hasPrevious(), previous(), peekNext() +*/ + +/*! \fn T &QMutableListIterator::peekPrevious() const + \fn T &QMutableLinkedListIterator::peekPrevious() const + \fn T &QMutableVectorIterator::peekPrevious() const + + Returns a reference to the previous item, without moving the iterator. + + Calling this function on an iterator located at the front of the + container leads to undefined results. + + \sa hasPrevious(), previous(), peekNext() +*/ + +/*! \fn bool QListIterator::findNext(const T &value) + \fn bool QLinkedListIterator::findNext(const T &value) + \fn bool QVectorIterator::findNext(const T &value) + \fn bool QSetIterator::findNext(const T &value) + \fn bool QMutableListIterator::findNext(const T &value) + \fn bool QMutableLinkedListIterator::findNext(const T &value) + \fn bool QMutableVectorIterator::findNext(const T &value) + \fn bool QMutableSetIterator::findNext(const T &value) + + Searches for \a value starting from the current iterator position + forward. Returns true if \a value is found; otherwise returns false. + + After the call, if \a value was found, the iterator is positioned + just after the matching item; otherwise, the iterator is + positioned at the back of the container. + + \sa findPrevious() +*/ + +/*! \fn bool QListIterator::findPrevious(const T &value) + \fn bool QLinkedListIterator::findPrevious(const T &value) + \fn bool QVectorIterator::findPrevious(const T &value) + \fn bool QSetIterator::findPrevious(const T &value) + \fn bool QMutableListIterator::findPrevious(const T &value) + \fn bool QMutableLinkedListIterator::findPrevious(const T &value) + \fn bool QMutableVectorIterator::findPrevious(const T &value) + \fn bool QMutableSetIterator::findPrevious(const T &value) + + Searches for \a value starting from the current iterator position + backward. Returns true if \a value is found; otherwise returns + false. + + After the call, if \a value was found, the iterator is positioned + just before the matching item; otherwise, the iterator is + positioned at the front of the container. + + \sa findNext() +*/ + +/*! \fn void QMutableListIterator::remove() + + Removes the last item that was jumped over using one of the + traversal functions (next(), previous(), findNext(), findPrevious()). + + Example: + \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 19 + + \sa insert(), setValue() +*/ + +/*! \fn void QMutableLinkedListIterator::remove() + + Removes the last item that was jumped over using one of the + traversal functions (next(), previous(), findNext(), findPrevious()). + + Example: + \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 20 + + \sa insert(), setValue() +*/ + +/*! \fn void QMutableVectorIterator::remove() + + Removes the last item that was jumped over using one of the + traversal functions (next(), previous(), findNext(), findPrevious()). + + Example: + \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 21 + + \sa insert(), setValue() +*/ + +/*! \fn void QMutableSetIterator::remove() + + Removes the last item that was jumped over using one of the + traversal functions (next(), previous(), findNext(), findPrevious()). + + Example: + \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 22 + + \sa value() +*/ + +/*! \fn void QMutableListIterator::setValue(const T &value) const + + Replaces the value of the last item that was jumped over using + one of the traversal functions with \a value. + + The traversal functions are next(), previous(), findNext(), and + findPrevious(). + + Example: + \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 23 + + \sa value(), remove(), insert() +*/ + +/*! \fn void QMutableLinkedListIterator::setValue(const T &value) const + + Replaces the value of the last item that was jumped over using + one of the traversal functions with \a value. + + The traversal functions are next(), previous(), findNext(), and + findPrevious(). + + Example: + \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 24 + + \sa value(), remove(), insert() +*/ + +/*! \fn void QMutableVectorIterator::setValue(const T &value) const + + Replaces the value of the last item that was jumped over using + one of the traversal functions with \a value. + + The traversal functions are next(), previous(), findNext(), and + findPrevious(). + + Example: + \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 25 + + \sa value(), remove(), insert() +*/ + +/*! \fn const T &QMutableListIterator::value() const + \fn const T &QMutableLinkedListIterator::value() const + \fn const T &QMutableVectorIterator::value() const + \fn const T &QMutableSetIterator::value() const + + Returns the value of the last item that was jumped over using one + of the traversal functions (next(), previous(), findNext(), + findPrevious()). + + After a call to next() or findNext(), value() is equivalent to + peekPrevious(). After a call to previous() or findPrevious(), value() is + equivalent to peekNext(). +*/ + +/*! + \fn T &QMutableListIterator::value() + \fn T &QMutableLinkedListIterator::value() + \fn T &QMutableVectorIterator::value() + \overload + + Returns a non-const reference to the value of the last item that + was jumped over using one of the traversal functions. +*/ + +/*! \fn void QMutableListIterator::insert(const T &value) + \fn void QMutableLinkedListIterator::insert(const T &value) + \fn void QMutableVectorIterator::insert(const T &value) + + Inserts \a value at the current iterator position. After the + call, the iterator is located just after the inserted item. + + \sa remove(), setValue() +*/ + +/*! + \class QMapIterator + \inmodule QtCore + + \brief The QMapIterator class provides a Java-style const iterator for QMap and QMultiMap. + + QMap has both \l{Java-style iterators} and \l{STL-style + iterators}. The Java-style iterators are more high-level and + easier to use than the STL-style iterators; on the other hand, + they are slightly less efficient. + + QMapIterator\<Key, T\> allows you to iterate over a QMap (or a + QMultiMap). If you want to modify the map as you iterate over + it, use QMutableMapIterator instead. + + The QMapIterator constructor takes a QMap as argument. After + construction, the iterator is located at the very beginning of + the map (before the first item). Here's how to iterate over all + the elements sequentially: + + \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 26 + + The next() function returns the next item in the map and + advances the iterator. The key() and value() functions return the + key and value of the last item that was jumped over. + + Unlike STL-style iterators, Java-style iterators point \e between + items rather than directly \e at items. The first call to next() + advances the iterator to the position between the first and + second item, and returns the first item; the second call to + next() advances the iterator to the position between the second + and third item; and so on. + + \img javaiterators1.png + + Here's how to iterate over the elements in reverse order: + + \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 27 + + If you want to find all occurrences of a particular value, use + findNext() or findPrevious() in a loop. For example: + + \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 28 + + Multiple iterators can be used on the same map. If the map is + modified while a QMapIterator is active, the QMapIterator will + continue iterating over the original map, ignoring the modified + copy. + + \sa QMutableMapIterator, QMap::const_iterator +*/ + +/*! + \class QHashIterator + \inmodule QtCore + + \brief The QHashIterator class provides a Java-style const iterator for QHash and QMultiHash. + + QHash has both \l{Java-style iterators} and \l{STL-style + iterators}. The Java-style iterators are more high-level and + easier to use than the STL-style iterators; on the other hand, + they are slightly less efficient. + + QHashIterator\<Key, T\> allows you to iterate over a QHash (or a + QMultiHash). If you want to modify the hash as you iterate over + it, use QMutableHashIterator instead. + + The QHashIterator constructor takes a QHash as argument. After + construction, the iterator is located at the very beginning of + the hash (before the first item). Here's how to iterate over all + the elements sequentially: + + \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 29 + + The next() function returns the next item in the hash and + advances the iterator. The key() and value() functions return the + key and value of the last item that was jumped over. + + Unlike STL-style iterators, Java-style iterators point \e between + items rather than directly \e at items. The first call to next() + advances the iterator to the position between the first and + second item, and returns the first item; the second call to + next() advances the iterator to the position between the second + and third item; and so on. + + \img javaiterators1.png + + Here's how to iterate over the elements in reverse order: + + \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 30 + + If you want to find all occurrences of a particular value, use + findNext() or findPrevious() in a loop. For example: + + \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 31 + + Multiple iterators can be used on the same hash. If the hash is + modified while a QHashIterator is active, the QHashIterator will + continue iterating over the original hash, ignoring the modified + copy. + + \sa QMutableHashIterator, QHash::const_iterator +*/ + +/*! + \class QMutableMapIterator + \inmodule QtCore + + \brief The QMutableMapIterator class provides a Java-style non-const iterator for QMap and QMultiMap. + + QMap has both \l{Java-style iterators} and \l{STL-style + iterators}. The Java-style iterators are more high-level and + easier to use than the STL-style iterators; on the other hand, + they are slightly less efficient. + + QMutableMapIterator\<Key, T\> allows you to iterate over a QMap + (or a QMultiMap) and modify the map. If you don't want to modify + the map (or have a const QMap), use the slightly faster + QMapIterator instead. + + The QMutableMapIterator constructor takes a QMap as argument. + After construction, the iterator is located at the very beginning + of the map (before the first item). Here's how to iterate over + all the elements sequentially: + + \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 32 + + The next() function returns the next item in the map and + advances the iterator. The key() and value() functions return the + key and value of the last item that was jumped over. + + Unlike STL-style iterators, Java-style iterators point \e between + items rather than directly \e at items. The first call to next() + advances the iterator to the position between the first and + second item, and returns the first item; the second call to + next() advances the iterator to the position between the second + and third item; and so on. + + \img javaiterators1.png + + Here's how to iterate over the elements in reverse order: + + \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 33 + + If you want to find all occurrences of a particular value, use + findNext() or findPrevious() in a loop. For example: + + \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 34 + + If you want to remove items as you iterate over the map, use + remove(). If you want to modify the value of an item, use + setValue(). + + Example: + + \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 35 + + The example removes all (key, value) pairs where the key and the + value are the same. + + Only one mutable iterator can be active on a given map at any + time. Furthermore, no changes should be done directly to the map + while the iterator is active (as opposed to through the + iterator), since this could invalidate the iterator and lead to + undefined behavior. + + \sa QMapIterator, QMap::iterator +*/ + +/*! + \class QMutableHashIterator + \inmodule QtCore + + \brief The QMutableHashIterator class provides a Java-style non-const iterator for QHash and QMultiHash. + + QHash has both \l{Java-style iterators} and \l{STL-style + iterators}. The Java-style iterators are more high-level and + easier to use than the STL-style iterators; on the other hand, + they are slightly less efficient. + + QMutableHashIterator\<Key, T\> allows you to iterate over a QHash + (or a QMultiHash) and modify the hash. If you don't want to modify + the hash (or have a const QHash), use the slightly faster + QHashIterator instead. + + The QMutableHashIterator constructor takes a QHash as argument. + After construction, the iterator is located at the very beginning + of the hash (before the first item). Here's how to iterate over + all the elements sequentially: + + \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 36 + + The next() function returns the next item in the hash and + advances the iterator. The key() and value() functions return the + key and value of the last item that was jumped over. + + Unlike STL-style iterators, Java-style iterators point \e between + items rather than directly \e at items. The first call to next() + advances the iterator to the position between the first and + second item, and returns the first item; the second call to + next() advances the iterator to the position between the second + and third item; and so on. + + \img javaiterators1.png + + Here's how to iterate over the elements in reverse order: + + \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 37 + + If you want to find all occurrences of a particular value, use + findNext() or findPrevious() in a loop. For example: + + \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 38 + + If you want to remove items as you iterate over the hash, use + remove(). If you want to modify the value of an item, use + setValue(). + + Example: + + \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 39 + + The example removes all (key, value) pairs where the key and the + value are the same. + + Only one mutable iterator can be active on a given hash at any + time. Furthermore, no changes should be done directly to the hash + while the iterator is active (as opposed to through the + iterator), since this could invalidate the iterator and lead to + undefined behavior. + + \sa QHashIterator, QHash::iterator +*/ + +/*! \fn QMapIterator::QMapIterator(const QMap<Key, T> &map) + \fn QMutableMapIterator::QMutableMapIterator(QMap<Key, T> &map) + + Constructs an iterator for traversing \a map. The iterator is set + to be at the front of the map (before the first item). + + \sa operator=() +*/ + +/*! \fn QHashIterator::QHashIterator(const QHash<Key, T> &hash) + \fn QMutableHashIterator::QMutableHashIterator(QHash<Key, T> &hash) + + Constructs an iterator for traversing \a hash. The iterator is + set to be at the front of the hash (before the first item). + + \sa operator=() +*/ + +/*! + \fn QMutableMapIterator::~QMutableMapIterator() + \fn QMutableHashIterator::~QMutableHashIterator() + + Destroys the iterator. + + \sa operator=() +*/ + +/*! \fn QMapIterator &QMapIterator::operator=(const QMap<Key, T> &map) + \fn QMutableMapIterator &QMutableMapIterator::operator=(QMap<Key, T> &map) + + Makes the iterator operate on \a map. The iterator is set to be + at the front of the map (before the first item). + + \sa toFront(), toBack() +*/ + +/*! \fn QHashIterator &QHashIterator::operator=(const QHash<Key, T> &hash) + \fn QMutableHashIterator &QMutableHashIterator::operator=(QHash<Key, T> &hash) + + Makes the iterator operate on \a hash. The iterator is set to be + at the front of the hash (before the first item). + + \sa toFront(), toBack() +*/ + +/*! \fn void QMapIterator::toFront() + \fn void QHashIterator::toFront() + \fn void QMutableMapIterator::toFront() + \fn void QMutableHashIterator::toFront() + + Moves the iterator to the front of the container (before the + first item). + + \sa toBack(), next() +*/ + +/*! \fn void QMapIterator::toBack() + \fn void QHashIterator::toBack() + \fn void QMutableMapIterator::toBack() + \fn void QMutableHashIterator::toBack() + + Moves the iterator to the back of the container (after the last + item). + + \sa toFront(), previous() +*/ + +/*! \fn bool QMapIterator::hasNext() const + \fn bool QHashIterator::hasNext() const + \fn bool QMutableMapIterator::hasNext() const + \fn bool QMutableHashIterator::hasNext() const + + Returns true if there is at least one item ahead of the iterator, + i.e. the iterator is \e not at the back of the container; + otherwise returns false. + + \sa hasPrevious(), next() +*/ + +/*! \fn QMapIterator::Item QMapIterator::next() + \fn QHashIterator::Item QHashIterator::next() + + Returns the next item and advances the iterator by one position. + + Call key() on the return value to obtain the item's key, and + value() to obtain the value. + + Calling this function on an iterator located at the back of the + container leads to undefined results. + + \sa hasNext(), peekNext(), previous() +*/ + +/*! \fn QMutableMapIterator::Item QMutableMapIterator::next() + \fn QMutableHashIterator::Item QMutableHashIterator::next() + + Returns the next item and advances the iterator by one position. + + Call key() on the return value to obtain the item's key, and + value() to obtain the value. + + Calling this function on an iterator located at the back of the + container leads to undefined results. + + \sa hasNext(), peekNext(), previous() +*/ + +/*! \fn QMapIterator::Item QMapIterator::peekNext() const + \fn QHashIterator::Item QHashIterator::peekNext() const + + Returns the next item without moving the iterator. + + Call key() on the return value to obtain the item's key, and + value() to obtain the value. + + Calling this function on an iterator located at the back of the + container leads to undefined results. + + \sa hasNext(), next(), peekPrevious() +*/ + +/*! \fn QMutableMapIterator::Item QMutableMapIterator::peekNext() const + \fn QMutableHashIterator::Item QMutableHashIterator::peekNext() const + + Returns a reference to the next item without moving the iterator. + + Call key() on the return value to obtain the item's key, and + value() to obtain the value. + + Calling this function on an iterator located at the back of the + container leads to undefined results. + + \sa hasNext(), next(), peekPrevious() +*/ + +/*! \fn bool QMapIterator::hasPrevious() const + \fn bool QHashIterator::hasPrevious() const + \fn bool QMutableMapIterator::hasPrevious() const + \fn bool QMutableHashIterator::hasPrevious() const + + Returns true if there is at least one item behind the iterator, + i.e. the iterator is \e not at the front of the container; + otherwise returns false. + + \sa hasNext(), previous() +*/ + +/*! \fn QMapIterator::Item QMapIterator::previous() + \fn QHashIterator::Item QHashIterator::previous() + + Returns the previous item and moves the iterator back by one + position. + + Call key() on the return value to obtain the item's key, and + value() to obtain the value. + + Calling this function on an iterator located at the front of the + container leads to undefined results. + + \sa hasPrevious(), peekPrevious(), next() +*/ + +/*! \fn QMutableMapIterator::Item QMutableMapIterator::previous() + \fn QMutableHashIterator::Item QMutableHashIterator::previous() + + Returns the previous item and moves the iterator back by one + position. + + Call key() on the return value to obtain the item's key, and + value() to obtain the value. + + Calling this function on an iterator located at the front of the + container leads to undefined results. + + \sa hasPrevious(), peekPrevious(), next() +*/ + +/*! \fn QMapIterator::Item QMapIterator::peekPrevious() const + \fn QHashIterator::Item QHashIterator::peekPrevious() const + + Returns the previous item without moving the iterator. + + Call key() on the return value to obtain the item's key, and + value() to obtain the value. + + Calling this function on an iterator located at the front of the + container leads to undefined results. + + \sa hasPrevious(), previous(), peekNext() +*/ + +/*! \fn QMutableMapIterator::Item QMutableMapIterator::peekPrevious() const + \fn QMutableHashIterator::Item QMutableHashIterator::peekPrevious() const + + Returns the previous item without moving the iterator. + + Call key() on the return value to obtain the item's key, and + value() to obtain the value. + + Calling this function on an iterator located at the front of the + container leads to undefined results. + + \sa hasPrevious(), previous(), peekNext() +*/ + +/*! \fn const T &QMapIterator::value() const + \fn const T &QHashIterator::value() const + + Returns the value of the last item that was jumped over using one + of the traversal functions (next(), previous(), findNext(), + findPrevious()). + + After a call to next() or findNext(), value() is + equivalent to peekPrevious().value(). After a call to previous() + or findPrevious(), value() is equivalent to peekNext().value(). + + \sa key() +*/ + +/*! + \fn const T &QMutableMapIterator::value() const + \fn const T &QMutableHashIterator::value() const + + Returns the value of the last item that was jumped over using one + of the traversal functions (next(), previous(), findNext(), + findPrevious()). + + After a call to next() or findNext(), value() is + equivalent to peekPrevious().value(). After a call to previous() + or findPrevious(), value() is equivalent to peekNext().value(). + + \sa key(), setValue() +*/ + +/*! + \fn T &QMutableMapIterator::value() + \fn T &QMutableHashIterator::value() + \overload + + Returns a non-const reference to the value of + the last item that was jumped over using one + of the traversal functions. +*/ + +/*! \fn const Key &QMapIterator::key() const + \fn const Key &QHashIterator::key() const + \fn const Key &QMutableMapIterator::key() const + \fn const Key &QMutableHashIterator::key() const + + Returns the key of the last item that was jumped over using one + of the traversal functions (next(), previous(), findNext(), + findPrevious()). + + After a call to next() or findNext(), key() is + equivalent to peekPrevious().key(). After a call to previous() or + findPrevious(), key() is equivalent to peekNext().key(). + + \sa value() +*/ + +/*! \fn bool QMapIterator::findNext(const T &value) + \fn bool QHashIterator::findNext(const T &value) + \fn bool QMutableMapIterator::findNext(const T &value) + \fn bool QMutableHashIterator::findNext(const T &value) + + Searches for \a value starting from the current iterator position + forward. Returns true if a (key, value) pair with value \a value + is found; otherwise returns false. + + After the call, if \a value was found, the iterator is positioned + just after the matching item; otherwise, the iterator is + positioned at the back of the container. + + \sa findPrevious() +*/ + +/*! \fn bool QMapIterator::findPrevious(const T &value) + \fn bool QHashIterator::findPrevious(const T &value) + \fn bool QMutableMapIterator::findPrevious(const T &value) + \fn bool QMutableHashIterator::findPrevious(const T &value) + + Searches for \a value starting from the current iterator position + backward. Returns true if a (key, value) pair with value \a value + is found; otherwise returns false. + + After the call, if \a value was found, the iterator is positioned + just before the matching item; otherwise, the iterator is + positioned at the front of the container. + + \sa findNext() +*/ + +/*! \fn void QMutableMapIterator::remove() + \fn void QMutableHashIterator::remove() + + Removes the last item that was jumped over using one of the + traversal functions (next(), previous(), findNext(), findPrevious()). + + \sa setValue() +*/ + +/*! \fn void QMutableMapIterator::setValue(const T &value) + \fn void QMutableHashIterator::setValue(const T &value) + + Replaces the value of the last item that was jumped over using + one of the traversal functions with \a value. + + The traversal functions are next(), previous(), findNext(), and + findPrevious(). + + \sa key(), value(), remove() +*/ diff --git a/src/corelib/tools/qline.cpp b/src/corelib/tools/qline.cpp index e6ad9d1..02c1128 100644 --- a/src/corelib/tools/qline.cpp +++ b/src/corelib/tools/qline.cpp @@ -49,7 +49,7 @@ QT_BEGIN_NAMESPACE /*! \class QLine - \ingroup multimedia + \ingroup painting \brief The QLine class provides a two-dimensional vector using integer precision. @@ -309,7 +309,7 @@ QDataStream &operator>>(QDataStream &stream, QLine &line) /*! \class QLineF - \ingroup multimedia + \ingroup painting \brief The QLineF class provides a two-dimensional vector using floating point precision. diff --git a/src/corelib/tools/qlinkedlist.cpp b/src/corelib/tools/qlinkedlist.cpp index e5c0145..39758ed 100644 --- a/src/corelib/tools/qlinkedlist.cpp +++ b/src/corelib/tools/qlinkedlist.cpp @@ -53,7 +53,7 @@ QLinkedListData QLinkedListData::shared_null = { \ingroup tools \ingroup shared - \mainclass + \reentrant QLinkedList\<T\> is one of Qt's generic \l{container classes}. It diff --git a/src/corelib/tools/qlistdata.cpp b/src/corelib/tools/qlist.cpp index be57359..d954160 100644 --- a/src/corelib/tools/qlistdata.cpp +++ b/src/corelib/tools/qlist.cpp @@ -304,7 +304,7 @@ void **QListData::erase(void **xi) \ingroup tools \ingroup shared - \mainclass + \reentrant QList\<T\> is one of Qt's generic \l{container classes}. It diff --git a/src/corelib/tools/qlocale.cpp b/src/corelib/tools/qlocale.cpp index 7c4d0c0..0881671 100644 --- a/src/corelib/tools/qlocale.cpp +++ b/src/corelib/tools/qlocale.cpp @@ -1479,9 +1479,9 @@ QDataStream &operator>>(QDataStream &ds, QLocale &l) \reentrant \ingroup i18n - \ingroup text + \ingroup string-processing \ingroup shared - \mainclass + QLocale is initialized with a language/country pair in its constructor and offers number-to-string and string-to-number diff --git a/src/corelib/tools/qmap.cpp b/src/corelib/tools/qmap.cpp index ed33764..e913232 100644 --- a/src/corelib/tools/qmap.cpp +++ b/src/corelib/tools/qmap.cpp @@ -207,7 +207,7 @@ void QMapData::dump() \ingroup tools \ingroup shared - \mainclass + \reentrant QMap\<Key, T\> is one of Qt's generic \l{container classes}. It @@ -1330,7 +1330,7 @@ void QMapData::dump() \ingroup tools \ingroup shared - \mainclass + \reentrant QMultiMap\<Key, T\> is one of Qt's generic \l{container classes}. diff --git a/src/corelib/tools/qpair.qdoc b/src/corelib/tools/qpair.qdoc new file mode 100644 index 0000000..9c8ac89 --- /dev/null +++ b/src/corelib/tools/qpair.qdoc @@ -0,0 +1,229 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \class QPair + \brief The QPair class is a template class that stores a pair of items. + + \ingroup tools + + QPair\<T1, T2\> can be used in your application if the STL \c + pair type is not available. It stores one value of type T1 and + one value of type T2. It can be used as a return value for a + function that needs to return two values, or as the value type of + a \l{generic container}. + + Here's an example of a QPair that stores one QString and one \c + double value: + + \snippet doc/src/snippets/code/doc_src_qpair.qdoc 0 + + The components are accessible as public data members called \l + first and \l second. For example: + + \snippet doc/src/snippets/code/doc_src_qpair.qdoc 1 + + QPair's template data types (T1 and T2) must be \l{assignable + data types}. You cannot, for example, store a QWidget as a value; + instead, store a QWidget *. A few functions have additional + requirements; these requirements are documented on a per-function + basis. + + \sa {Generic Containers} +*/ + +/*! \typedef QPair::first_type + + The type of the first element in the pair (T1). + + \sa first +*/ + +/*! \typedef QPair::second_type + + The type of the second element in the pair (T2). + + \sa second +*/ + +/*! \variable QPair::first + + The first element in the pair. +*/ + +/*! \variable QPair::second + + The second element in the pair. +*/ + +/*! \fn QPair::QPair() + + Constructs an empty pair. The \c first and \c second elements are + initialized with \l{default-constructed values}. +*/ + +/*! + \fn QPair::QPair(const T1 &value1, const T2 &value2) + + Constructs a pair and initializes the \c first element with \a + value1 and the \c second element with \a value2. + + \sa qMakePair() +*/ + +/*! + \fn QPair<T1, T2> &QPair::operator=(const QPair<T1, T2> &other) + + Assigns \a other to this pair. +*/ + +/*! \fn bool operator==(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2) + + \relates QPair + + Returns true if \a p1 is equal to \a p2; otherwise returns false. + Two pairs compare equal if their \c first data members compare + equal and if their \c second data members compare equal. + + This function requires the T1 and T2 types to have an + implementation of \c operator==(). +*/ + +/*! \fn bool operator!=(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2) + + \relates QPair + + Returns true if \a p1 is not equal to \a p2; otherwise returns + false. Two pairs compare as not equal if their \c first data + members are not equal or if their \c second data members are not + equal. + + This function requires the T1 and T2 types to have an + implementation of \c operator==(). +*/ + +/*! \fn bool operator<(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2) + + \relates QPair + + Returns true if \a p1 is less than \a p2; otherwise returns + false. The comparison is done on the \c first members of \a p1 + and \a p2; if they compare equal, the \c second members are + compared to break the tie. + + This function requires the T1 and T2 types to have an + implementation of \c operator<(). +*/ + +/*! \fn bool operator>(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2) + + \relates QPair + + Returns true if \a p1 is greater than \a p2; otherwise returns + false. The comparison is done on the \c first members of \a p1 + and \a p2; if they compare equal, the \c second members are + compared to break the tie. + + This function requires the T1 and T2 types to have an + implementation of \c operator<(). +*/ + +/*! \fn bool operator<=(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2) + + \relates QPair + + Returns true if \a p1 is less than or equal to \a p2; otherwise + returns false. The comparison is done on the \c first members of + \a p1 and \a p2; if they compare equal, the \c second members are + compared to break the tie. + + This function requires the T1 and T2 types to have an + implementation of \c operator<(). +*/ + +/*! \fn bool operator>=(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2) + + \relates QPair + + Returns true if \a p1 is greater than or equal to \a p2; + otherwise returns false. The comparison is done on the \c first + members of \a p1 and \a p2; if they compare equal, the \c second + members are compared to break the tie. + + This function requires the T1 and T2 types to have an + implementation of \c operator<(). +*/ + +/*! + \fn QPair<T1, T2> qMakePair(const T1 &value1, const T2 &value2) + + \relates QPair + + Returns a QPair\<T1, T2\> that contains \a value1 and \a value2. + Example: + + \snippet doc/src/snippets/code/doc_src_qpair.qdoc 2 + + This is equivalent to QPair<T1, T2>(\a value1, \a value2), but + usually requires less typing. +*/ + +/*! \fn QDataStream &operator>>(QDataStream &in, QPair<T1, T2> &pair) + + \relates QPair + + Reads a pair from stream \a in into \a pair. + + This function requires the T1 and T2 types to implement \c operator>>(). + + \sa {Format of the QDataStream operators} +*/ + +/*! \fn QDataStream &operator<<(QDataStream &out, const QPair<T1, T2> &pair) + + \relates QPair + + Writes the pair \a pair to stream \a out. + + This function requires the T1 and T2 types to implement \c operator<<(). + + \sa {Format of the QDataStream operators} +*/ diff --git a/src/corelib/tools/qpoint.cpp b/src/corelib/tools/qpoint.cpp index cba7fef..7c05eaa 100644 --- a/src/corelib/tools/qpoint.cpp +++ b/src/corelib/tools/qpoint.cpp @@ -47,7 +47,7 @@ QT_BEGIN_NAMESPACE /*! \class QPoint - \ingroup multimedia + \ingroup painting \brief The QPoint class defines a point in the plane using integer precision. @@ -380,7 +380,7 @@ QDebug operator<<(QDebug d, const QPointF &p) /*! \class QPointF - \ingroup multimedia + \ingroup painting \brief The QPointF class defines a point in the plane using floating point precision. diff --git a/src/corelib/tools/qqueue.cpp b/src/corelib/tools/qqueue.cpp index 108f103..1c1e6d2 100644 --- a/src/corelib/tools/qqueue.cpp +++ b/src/corelib/tools/qqueue.cpp @@ -45,7 +45,7 @@ \ingroup tools \ingroup shared - \mainclass + \reentrant QQueue\<T\> is one of Qt's generic \l{container classes}. It diff --git a/src/corelib/tools/qrect.cpp b/src/corelib/tools/qrect.cpp index eb493f0..bdd09a2 100644 --- a/src/corelib/tools/qrect.cpp +++ b/src/corelib/tools/qrect.cpp @@ -50,7 +50,7 @@ QT_BEGIN_NAMESPACE /*! \class QRect - \ingroup multimedia + \ingroup painting \brief The QRect class defines a rectangle in the plane using integer precision. @@ -1324,7 +1324,7 @@ QDebug operator<<(QDebug dbg, const QRect &r) { /*! \class QRectF - \ingroup multimedia + \ingroup painting \brief The QRectF class defines a rectangle in the plane using floating point precision. diff --git a/src/corelib/tools/qregexp.cpp b/src/corelib/tools/qregexp.cpp index fd3b33e..ed7fe9e 100644 --- a/src/corelib/tools/qregexp.cpp +++ b/src/corelib/tools/qregexp.cpp @@ -83,9 +83,8 @@ int qFindString(const QChar *haystack, int haystackLen, int from, \brief The QRegExp class provides pattern matching using regular expressions. \ingroup tools - \ingroup misc \ingroup shared - \mainclass + \keyword regular expression A regular expression, or "regexp", is a pattern for matching diff --git a/src/corelib/tools/qset.qdoc b/src/corelib/tools/qset.qdoc new file mode 100644 index 0000000..55baa18 --- /dev/null +++ b/src/corelib/tools/qset.qdoc @@ -0,0 +1,953 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \class QSet + \brief The QSet class is a template class that provides a hash-table-based set. + + \ingroup tools + \ingroup shared + \reentrant + + + QSet<T> is one of Qt's generic \l{container classes}. It stores + values in an unspecified order and provides very fast lookup of + the values. Internally, QSet<T> is implemented as a QHash. + + Here's an example QSet with QString values: + + \snippet doc/src/snippets/code/doc_src_qset.qdoc 0 + + To insert a value into the set, use insert(): + + \snippet doc/src/snippets/code/doc_src_qset.qdoc 1 + + Another way to insert items into the set is to use operator<<(): + + \snippet doc/src/snippets/code/doc_src_qset.qdoc 2 + + To test whether an item belongs to the set or not, use contains(): + + \snippet doc/src/snippets/code/doc_src_qset.qdoc 3 + + If you want to navigate through all the values stored in a QSet, + you can use an iterator. QSet supports both \l{Java-style + iterators} (QSetIterator and QMutableSetIterator) and \l{STL-style + iterators} (QSet::iterator and QSet::const_iterator). Here's how + to iterate over a QSet<QWidget *> using a Java-style iterator: + + \snippet doc/src/snippets/code/doc_src_qset.qdoc 4 + + Here's the same code, but using an STL-style iterator: + + \snippet doc/src/snippets/code/doc_src_qset.qdoc 5 + + QSet is unordered, so an iterator's sequence cannot be assumed to + be predictable. If ordering by key is required, use a QMap. + + To navigate through a QSet, you can also use \l{foreach}: + + \snippet doc/src/snippets/code/doc_src_qset.qdoc 6 + + Items can be removed from the set using remove(). There is also a + clear() function that removes all items. + + QSet's value data type must be an \l{assignable data type}. You + cannot, for example, store a QWidget as a value; instead, store a + QWidget *. In addition, the type must provide \c operator==(), and + there must also be a global qHash() function that returns a hash + value for an argument of the key's type. See the QHash + documentation for a list of types supported by qHash(). + + Internally, QSet uses a hash table to perform lookups. The hash + table automatically grows and shrinks to provide fast lookups + without wasting memory. You can still control the size of the hash + table by calling reserve(), if you already know approximately how + many elements the QSet will contain, but this isn't necessary to + obtain good performance. You can also call capacity() to retrieve + the hash table's size. + + \sa QSetIterator, QMutableSetIterator, QHash, QMap +*/ + +/*! + \fn QSet::QSet() + + Constructs an empty set. + + \sa clear() +*/ + +/*! + \fn QSet::QSet(const QSet<T> &other) + + Constructs a copy of \a other. + + This operation occurs in \l{constant time}, because QSet is + \l{implicitly shared}. This makes returning a QSet from a + function very fast. If a shared instance is modified, it will be + copied (copy-on-write), and this takes \l{linear time}. + + \sa operator=() +*/ + +/*! + \fn QSet<T> &QSet::operator=(const QSet<T> &other) + + Assigns the \a other set to this set and returns a reference to + this set. +*/ + +/*! + \fn bool QSet::operator==(const QSet<T> &other) const + + Returns true if the \a other set is equal to this set; otherwise + returns false. + + Two sets are considered equal if they contain the same elements. + + This function requires the value type to implement \c operator==(). + + \sa operator!=() +*/ + +/*! + \fn bool QSet::operator!=(const QSet<T> &other) const + + Returns true if the \a other set is not equal to this set; otherwise + returns false. + + Two sets are considered equal if they contain the same elements. + + This function requires the value type to implement \c operator==(). + + \sa operator==() +*/ + +/*! + \fn int QSet::size() const + + Returns the number of items in the set. + + \sa isEmpty(), count() +*/ + +/*! + \fn bool QSet::isEmpty() const + + Returns true if the set contains no elements; otherwise returns + false. + + \sa size() +*/ + +/*! + \fn int QSet::capacity() const + + Returns the number of buckets in the set's internal hash + table. + + The sole purpose of this function is to provide a means of fine + tuning QSet's memory usage. In general, you will rarely ever need + to call this function. If you want to know how many items are in + the set, call size(). + + \sa reserve(), squeeze() +*/ + +/*! \fn void QSet::reserve(int size) + + Ensures that the set's internal hash table consists of at + least \a size buckets. + + This function is useful for code that needs to build a huge set + and wants to avoid repeated reallocation. For example: + + \snippet doc/src/snippets/code/doc_src_qset.qdoc 7 + + Ideally, \a size should be slightly more than the maximum number + of elements expected in the set. \a size doesn't have to be prime, + because QSet will use a prime number internally anyway. If \a size + is an underestimate, the worst that will happen is that the QSet + will be a bit slower. + + In general, you will rarely ever need to call this function. + QSet's internal hash table automatically shrinks or grows to + provide good performance without wasting too much memory. + + \sa squeeze(), capacity() +*/ + +/*! + \fn void QSet::squeeze() + + Reduces the size of the set's internal hash table to save + memory. + + The sole purpose of this function is to provide a means of fine + tuning QSet's memory usage. In general, you will rarely ever + need to call this function. + + \sa reserve(), capacity() +*/ + +/*! + \fn void QSet::detach() + + \internal + + Detaches this set from any other sets with which it may share + data. + + \sa isDetached() +*/ + +/*! \fn bool QSet::isDetached() const + + \internal + + Returns true if the set's internal data isn't shared with any + other set object; otherwise returns false. + + \sa detach() +*/ + +/*! + \fn void QSet::setSharable(bool sharable) + \internal +*/ + +/*! + \fn void QSet::clear() + + Removes all elements from the set. + + \sa remove() +*/ + +/*! + \fn bool QSet::remove(const T &value) + + Removes any occurrence of item \a value from the set. Returns + true if an item was actually removed; otherwise returns false. + + \sa contains(), insert() +*/ + +/*! + \fn QSet::iterator QSet::erase(iterator pos) + \since 4.2 + + Removes the item at the iterator position \a pos from the set, and + returns an iterator positioned at the next item in the set. + + Unlike remove(), this function never causes QSet to rehash its + internal data structure. This means that it can safely be called + while iterating, and won't affect the order of items in the set. + + \sa remove(), find() +*/ + +/*! \fn QSet::const_iterator QSet::find(const T &value) const + \since 4.2 + + Returns a const iterator positioned at the item \a value in the + set. If the set contains no item \a value, the function returns + constEnd(). + + \sa constFind(), contains() +*/ + +/*! \fn QSet::iterator QSet::find(const T &value) + \since 4.2 + \overload + + Returns a non-const iterator positioned at the item \a value in + the set. If the set contains no item \a value, the function + returns end(). +*/ + +/*! \fn QSet::const_iterator QSet::constFind(const T &value) const + \since 4.2 + + Returns a const iterator positioned at the item \a value in the + set. If the set contains no item \a value, the function returns + constEnd(). + + \sa find(), contains() +*/ + +/*! + \fn bool QSet::contains(const T &value) const + + Returns true if the set contains item \a value; otherwise returns + false. + + \sa insert(), remove(), find() +*/ + +/*! + \fn bool QSet::contains(const QSet<T> &other) const + \since 4.6 + + Returns true if the set contains all items from the \a other set; + otherwise returns false. + + \sa insert(), remove(), find() +*/ + +/*! \fn QSet::const_iterator QSet::begin() const + + Returns a const \l{STL-style iterator} positioned at the first + item in the set. + + \sa constBegin(), end() +*/ + +/*! \fn QSet::iterator QSet::begin() + \since 4.2 + \overload + + Returns a non-const \l{STL-style iterator} positioned at the first + item in the set. +*/ + +/*! \fn QSet::const_iterator QSet::constBegin() const + + Returns a const \l{STL-style iterator} positioned at the first + item in the set. + + \sa begin(), constEnd() +*/ + +/*! \fn QSet::const_iterator QSet::end() const + + Returns a const \l{STL-style iterator} positioned at the imaginary + item after the last item in the set. + + \sa constEnd(), begin() +*/ + +/*! \fn QSet::iterator QSet::end() + \since 4.2 + \overload + + Returns a non-const \l{STL-style iterator} pointing to the + imaginary item after the last item in the set. +*/ + +/*! \fn QSet::const_iterator QSet::constEnd() const + + Returns a const \l{STL-style iterator} pointing to the imaginary + item after the last item in the set. + + \sa constBegin(), end() +*/ + +/*! + \typedef QSet::Iterator + \since 4.2 + + Qt-style synonym for QSet::iterator. +*/ + +/*! + \typedef QSet::ConstIterator + + Qt-style synonym for QSet::const_iterator. +*/ + +/*! + \typedef QSet::const_pointer + + Typedef for const T *. Provided for STL compatibility. +*/ + +/*! + \typedef QSet::const_reference + + Typedef for const T &. Provided for STL compatibility. +*/ + +/*! + \typedef QSet::difference_type + + Typedef for const ptrdiff_t. Provided for STL compatibility. +*/ + +/*! + \typedef QSet::key_type + + Typedef for T. Provided for STL compatibility. +*/ + +/*! + \typedef QSet::pointer + + Typedef for T *. Provided for STL compatibility. +*/ + +/*! + \typedef QSet::reference + + Typedef for T &. Provided for STL compatibility. +*/ + +/*! + \typedef QSet::size_type + + Typedef for int. Provided for STL compatibility. +*/ + +/*! + \typedef QSet::value_type + + Typedef for T. Provided for STL compatibility. +*/ + +/*! + \fn QSet::const_iterator QSet::insert(const T &value) + + Inserts item \a value into the set, if \a value isn't already + in the set, and returns an iterator pointing at the inserted + item. + + \sa operator<<(), remove(), contains() +*/ + +/*! + \fn QSet<T> &QSet::unite(const QSet<T> &other) + + Each item in the \a other set that isn't already in this set is + inserted into this set. A reference to this set is returned. + + \sa operator|=(), intersect(), subtract() +*/ + +/*! + \fn QSet<T> &QSet::intersect(const QSet<T> &other) + + Removes all items from this set that are not contained in the + \a other set. A reference to this set is returned. + + \sa operator&=(), unite(), subtract() +*/ + +/*! + \fn QSet<T> &QSet::subtract(const QSet<T> &other) + + Removes all items from this set that are contained in the + \a other set. Returns a reference to this set. + + \sa operator-=(), unite(), intersect() +*/ + +/*! + \fn bool QSet::empty() const + + Returns true if the set is empty. This function is provided + for STL compatibility. It is equivalent to isEmpty(). +*/ + +/*! + \fn bool QSet::count() const + + Same as size(). +*/ + +/*! + \fn QSet<T> &QSet::operator<<(const T &value) + \fn QSet<T> &QSet::operator+=(const T &value) + \fn QSet<T> &QSet::operator|=(const T &value) + + Inserts a new item \a value and returns a reference to the set. + If \a value already exists in the set, the set is left unchanged. + + \sa insert() +*/ + +/*! + \fn QSet<T> &QSet::operator-=(const T &value) + + Removes the occurrence of item \a value from the set, if + it is found, and returns a reference to the set. If the + \a value is not contained the set, nothing is removed. + + \sa remove() +*/ + +/*! + \fn QSet<T> &QSet::operator|=(const QSet<T> &other) + \fn QSet<T> &QSet::operator+=(const QSet<T> &other) + + Same as unite(\a other). + + \sa operator|(), operator&=(), operator-=() +*/ + +/*! + \fn QSet<T> &QSet::operator&=(const QSet<T> &other) + + Same as intersect(\a other). + + \sa operator&(), operator|=(), operator-=() +*/ + +/*! + \fn QSet<T> &QSet::operator&=(const T &value) + + \overload + + Same as intersect(\e{other}), if we consider \e{other} to be a set + that contains the singleton \a value. +*/ + + +/*! + \fn QSet<T> &QSet::operator-=(const QSet<T> &other) + + Same as subtract(\a{other}). + + \sa operator-(), operator|=(), operator&=() +*/ + +/*! + \fn QSet<T> QSet::operator|(const QSet<T> &other) const + \fn QSet<T> QSet::operator+(const QSet<T> &other) const + + Returns a new QSet that is the union of this set and the + \a other set. + + \sa unite(), operator|=(), operator&(), operator-() +*/ + +/*! + \fn QSet<T> QSet::operator&(const QSet<T> &other) const + + Returns a new QSet that is the intersection of this set and the + \a other set. + + \sa intersect(), operator&=(), operator|(), operator-() +*/ + +/*! + \fn QSet<T> QSet::operator-(const QSet<T> &other) const + + Returns a new QSet that is the set difference of this set and + the \a other set, i.e., this set - \a other set. + + \sa subtract(), operator-=(), operator|(), operator&() +*/ + +/*! + \fn QSet<T> QSet::operator-(const QSet<T> &other) + \fn QSet<T> QSet::operator|(const QSet<T> &other) + \fn QSet<T> QSet::operator+(const QSet<T> &other) + \fn QSet<T> QSet::operator&(const QSet<T> &other) + \internal + + These will go away in Qt 5. +*/ + +/*! + \class QSet::iterator + \since 4.2 + \brief The QSet::iterator class provides an STL-style non-const iterator for QSet. + + QSet features both \l{STL-style iterators} and + \l{Java-style iterators}. The STL-style iterators are more + low-level and more cumbersome to use; on the other hand, they are + slightly faster and, for developers who already know STL, have + the advantage of familiarity. + + QSet<T>::iterator allows you to iterate over a QSet and to remove + items (using QSet::erase()) while you iterate. (QSet doesn't let + you \e modify a value through an iterator, because that + would potentially require moving the value in the internal hash + table used by QSet.) If you want to iterate over a const QSet, + you should use QSet::const_iterator. It is generally good + practice to use QSet::const_iterator on a non-const QSet as well, + unless you need to change the QSet through the iterator. Const + iterators are slightly faster, and can improve code readability. + + QSet\<T\>::iterator allows you to iterate over a QSet\<T\> and + modify it as you go (using QSet::erase()). However, + + The default QSet::iterator constructor creates an uninitialized + iterator. You must initialize it using a function like + QSet::begin(), QSet::end(), or QSet::insert() before you can + start iterating. Here's a typical loop that prints all the items + stored in a set: + + \snippet doc/src/snippets/code/doc_src_qset.qdoc 8 + + Here's a loop that removes certain items (all those that start + with 'J') from a set while iterating: + + \snippet doc/src/snippets/code/doc_src_qset.qdoc 9 + + STL-style iterators can be used as arguments to \l{generic + algorithms}. For example, here's how to find an item in the set + using the qFind() algorithm: + + \snippet doc/src/snippets/code/doc_src_qset.qdoc 10 + + Multiple iterators can be used on the same set. However, you may + not attempt to modify the container while iterating on it. + + \sa QSet::const_iterator, QMutableSetIterator +*/ + +/*! + \class QSet::const_iterator + \brief The QSet::const_iterator class provides an STL-style const iterator for QSet. + \since 4.2 + + QSet features both \l{STL-style iterators} and + \l{Java-style iterators}. The STL-style iterators are more + low-level and more cumbersome to use; on the other hand, they are + slightly faster and, for developers who already know STL, have + the advantage of familiarity. + + QSet\<Key, T\>::const_iterator allows you to iterate over a QSet. + If you want to modify the QSet as you iterate over it, you must + use QSet::iterator instead. It is generally good practice to use + QSet::const_iterator on a non-const QSet as well, unless you need + to change the QSet through the iterator. Const iterators are + slightly faster, and can improve code readability. + + The default QSet::const_iterator constructor creates an + uninitialized iterator. You must initialize it using a function + like QSet::begin(), QSet::end(), or QSet::insert() before you can + start iterating. Here's a typical loop that prints all the items + stored in a set: + + \snippet doc/src/snippets/code/doc_src_qset.qdoc 11 + + STL-style iterators can be used as arguments to \l{generic + algorithms}. For example, here's how to find an item in the set + using the qFind() algorithm: + + \snippet doc/src/snippets/code/doc_src_qset.qdoc 12 + + Multiple iterators can be used on the same set. However, you may + not attempt to modify the container while iterating on it. + + \sa QSet::iterator, QSetIterator +*/ + +/*! + \fn QSet::iterator::iterator() + \fn QSet::const_iterator::const_iterator() + + Constructs an uninitialized iterator. + + Functions like operator*() and operator++() should not be called + on an uninitialized iterator. Use operator=() to assign a value + to it before using it. + + \sa QSet::begin(), QSet::end() +*/ + +/*! + \fn QSet::iterator::iterator(typename Hash::iterator i) + \fn QSet::const_iterator::const_iterator(typename Hash::const_iterator i) + + \internal +*/ + +/*! + \typedef QSet::iterator::iterator_category + \typedef QSet::const_iterator::iterator_category + + Synonyms for \e {std::bidirectional_iterator_tag} indicating + these iterators are bidirectional iterators. + */ + +/*! + \typedef QSet::iterator::difference_type + \typedef QSet::const_iterator::difference_type + + \internal +*/ + +/*! + \typedef QSet::iterator::value_type + \typedef QSet::const_iterator::value_type + + \internal +*/ + +/*! + \typedef QSet::iterator::pointer + \typedef QSet::const_iterator::pointer + + \internal +*/ + +/*! + \typedef QSet::iterator::reference + \typedef QSet::const_iterator::reference + + \internal +*/ + +/*! + \fn QSet::iterator::iterator(const iterator &other) + \fn QSet::const_iterator::const_iterator(const const_iterator &other) + + Constructs a copy of \a other. +*/ + +/*! + \fn QSet::const_iterator::const_iterator(const iterator &other) + \since 4.2 + \overload + + Constructs a copy of \a other. +*/ + +/*! + \fn QSet::iterator &QSet::iterator::operator=(const iterator &other) + \fn QSet::const_iterator &QSet::const_iterator::operator=(const const_iterator &other) + + Assigns \a other to this iterator. +*/ + +/*! + \fn const T &QSet::iterator::operator*() const + \fn const T &QSet::const_iterator::operator*() const + + Returns a reference to the current item. + + \sa operator->() +*/ + +/*! + \fn const T *QSet::iterator::operator->() const + \fn const T *QSet::const_iterator::operator->() const + + Returns a pointer to the current item. + + \sa operator*() +*/ + +/*! + \fn bool QSet::iterator::operator==(const iterator &other) const + \fn bool QSet::const_iterator::operator==(const const_iterator &other) const + + Returns true if \a other points to the same item as this + iterator; otherwise returns false. + + \sa operator!=() +*/ + +/*! + \fn bool QSet::iterator::operator==(const const_iterator &other) const + \fn bool QSet::iterator::operator!=(const const_iterator &other) const + + \overload +*/ + +/*! + \fn bool QSet::iterator::operator!=(const iterator &other) const + \fn bool QSet::const_iterator::operator!=(const const_iterator &other) const + + Returns true if \a other points to a different item than this + iterator; otherwise returns false. + + \sa operator==() +*/ + +/*! + \fn QSet::iterator &QSet::iterator::operator++() + \fn QSet::const_iterator &QSet::const_iterator::operator++() + + The prefix ++ operator (\c{++it}) advances the iterator to the + next item in the set and returns an iterator to the new current + item. + + Calling this function on QSet::constEnd() leads to + undefined results. + + \sa operator--() +*/ + +/*! + \fn QSet::iterator QSet::iterator::operator++(int) + \fn QSet::const_iterator QSet::const_iterator::operator++(int) + + \overload + + The postfix ++ operator (\c{it++}) advances the iterator to the + next item in the set and returns an iterator to the previously + current item. +*/ + +/*! + \fn QSet::iterator &QSet::iterator::operator--() + \fn QSet::const_iterator &QSet::const_iterator::operator--() + + The prefix -- operator (\c{--it}) makes the preceding item + current and returns an iterator to the new current item. + + Calling this function on QSet::begin() leads to undefined + results. + + \sa operator++() +*/ + +/*! + \fn QSet::iterator QSet::iterator::operator--(int) + \fn QSet::const_iterator QSet::const_iterator::operator--(int) + + \overload + + The postfix -- operator (\c{it--}) makes the preceding item + current and returns an iterator to the previously current item. +*/ + +/*! + \fn QSet::iterator QSet::iterator::operator+(int j) const + \fn QSet::const_iterator QSet::const_iterator::operator+(int j) const + + Returns an iterator to the item at \a j positions forward from + this iterator. (If \a j is negative, the iterator goes backward.) + + This operation can be slow for large \a j values. + + \sa operator-() +*/ + +/*! + \fn QSet::iterator QSet::iterator::operator-(int j) const + \fn QSet::const_iterator QSet::const_iterator::operator-(int j) const + + Returns an iterator to the item at \a j positions backward from + this iterator. (If \a j is negative, the iterator goes forward.) + + This operation can be slow for large \a j values. + + \sa operator+() +*/ + +/*! + \fn QSet::iterator &QSet::iterator::operator+=(int j) + \fn QSet::const_iterator &QSet::const_iterator::operator+=(int j) + + Advances the iterator by \a j items. (If \a j is negative, the + iterator goes backward.) + + This operation can be slow for large \a j values. + + \sa operator-=(), operator+() +*/ + +/*! + \fn QSet::iterator &QSet::iterator::operator-=(int j) + \fn QSet::const_iterator &QSet::const_iterator::operator-=(int j) + + Makes the iterator go back by \a j items. (If \a j is negative, + the iterator goes forward.) + + This operation can be slow for large \a j values. + + \sa operator+=(), operator-() +*/ + +/*! \fn QList<T> QSet<T>::toList() const + + Returns a new QList containing the elements in the set. The + order of the elements in the QList is undefined. + + Example: + + \snippet doc/src/snippets/code/doc_src_qset.qdoc 13 + + \sa fromList(), QList::fromSet(), qSort() +*/ + +/*! \fn QList<T> QSet<T>::values() const + + Returns a new QList containing the elements in the set. The + order of the elements in the QList is undefined. + + This is the same as toList(). + + \sa fromList(), QList::fromSet(), qSort() +*/ + + +/*! \fn QSet<T> QSet<T>::fromList(const QList<T> &list) + + Returns a new QSet object containing the data contained in \a + list. Since QSet doesn't allow duplicates, the resulting QSet + might be smaller than the \a list, because QList can contain + duplicates. + + Example: + + \snippet doc/src/snippets/code/doc_src_qset.qdoc 14 + + \sa toList(), QList::toSet() +*/ + +/*! + \fn QDataStream &operator<<(QDataStream &out, const QSet<T> &set) + \relates QSet + + Writes the \a set to stream \a out. + + This function requires the value type to implement \c operator<<(). + + \sa \link datastreamformat.html Format of the QDataStream operators \endlink +*/ + +/*! + \fn QDataStream &operator>>(QDataStream &in, QSet<T> &set) + \relates QSet + + Reads a set from stream \a in into \a set. + + This function requires the value type to implement \c operator>>(). + + \sa \link datastreamformat.html Format of the QDataStream operators \endlink +*/ diff --git a/src/corelib/tools/qshareddata.cpp b/src/corelib/tools/qshareddata.cpp index c96e058..e1f090b 100644 --- a/src/corelib/tools/qshareddata.cpp +++ b/src/corelib/tools/qshareddata.cpp @@ -44,507 +44,512 @@ QT_BEGIN_NAMESPACE /*! - \class QSharedData - \brief The QSharedData class is a base class for shared data objects. - \reentrant - \ingroup misc + \class QSharedData + \brief The QSharedData class is a base class for shared data objects. + \reentrant - QSharedData is designed to be used with QSharedDataPointer or - QExplicitlySharedDataPointer to implement custom \l{implicitly - shared} or explicitly shared classes. QSharedData provides - \l{thread-safe} reference counting. + QSharedData is designed to be used with QSharedDataPointer or + QExplicitlySharedDataPointer to implement custom \l{implicitly + shared} or explicitly shared classes. QSharedData provides + \l{thread-safe} reference counting. - See QSharedDataPointer and QExplicitlySharedDataPointer for details. + See QSharedDataPointer and QExplicitlySharedDataPointer for details. */ /*! \fn QSharedData::QSharedData() - Constructs a QSharedData object with a reference count of 0. + Constructs a QSharedData object with a reference count of 0. */ /*! \fn QSharedData::QSharedData(const QSharedData& other) - Constructs a QSharedData object with reference count 0. - \a other is ignored. + Constructs a QSharedData object with reference count 0. + \a other is ignored. */ /*! - \class QSharedDataPointer - \brief The QSharedDataPointer class represents a pointer to an implicitly shared object. - \since 4.0 - \reentrant - \ingroup misc - \mainclass + \class QSharedDataPointer + \brief The QSharedDataPointer class represents a pointer to an implicitly shared object. + \since 4.0 + \reentrant - QSharedDataPointer\<T\> makes writing your own \l {implicitly - shared} classes easy. QSharedDataPointer implements \l {thread-safe} - reference counting, ensuring that adding QSharedDataPointers to your - \l {reentrant} classes won't make them non-reentrant. + QSharedDataPointer\<T\> makes writing your own \l {implicitly + shared} classes easy. QSharedDataPointer implements \l {thread-safe} + reference counting, ensuring that adding QSharedDataPointers to your + \l {reentrant} classes won't make them non-reentrant. - \l {Implicit sharing} is used by many Qt classes to combine the - speed and memory efficiency of pointers with the ease of use of - classes. See the \l{Shared Classes} page for more information. + \l {Implicit sharing} is used by many Qt classes to combine the + speed and memory efficiency of pointers with the ease of use of + classes. See the \l{Shared Classes} page for more information. - \target Employee example - Suppose you want to make an \c Employee class implicitly shared. The - procedure is: + \target Employee example + Suppose you want to make an \c Employee class implicitly shared. The + procedure is: - \list + \list - \o Define the class \c Employee to have a single data member of + \o Define the class \c Employee to have a single data member of type \c {QSharedDataPointer<EmployeeData>}. - \o Define the \c EmployeeData class derived from \l QSharedData to + \o Define the \c EmployeeData class derived from \l QSharedData to contain all the data members you would normally have put in the \c Employee class. - \endlist - - To show this in practice, we review the source code for the - implicitly shared \c Employee class. In the header file we define the - two classes \c Employee and \c EmployeeData. - - \snippet doc/src/snippets/sharedemployee/employee.h 0 - - In class \c Employee, note the single data member, a \e {d pointer} - of type \c {QSharedDataPointer<EmployeeData>}. All accesses of - employee data must go through the \e {d pointer's} \c - {operator->()}. For write accesses, \c {operator->()} will - automatically call detach(), which creates a copy of the shared data - object if the shared data object's reference count is greater than - 1. This ensures that writes to one \c Employee object don't affect - any other \c Employee objects that share the same \c EmployeeData - object. - - Class \c EmployeeData inherits QSharedData, which provides the - \e{behind the scenes} reference counter. \c EmployeeData has a default - constructor, a copy constructor, and a destructor. Normally, trivial - implementations of these are all that is needed in the \e {data} - class for an implicitly shared class. - - Implementing the two constructors for class \c Employee is also - straightforward. Both create a new instance of \c EmployeeData - and assign it to the \e{d pointer} . - - \snippet doc/src/snippets/sharedemployee/employee.h 1 - \codeline - \snippet doc/src/snippets/sharedemployee/employee.h 2 - - Note that class \c Employee also has a trivial copy constructor - defined, which is not strictly required in this case. - - \snippet doc/src/snippets/sharedemployee/employee.h 7 - - The copy constructor is not strictly required here, because class \c - EmployeeData is included in the same file as class \c Employee - (\c{employee.h}). However, including the private subclass of - QSharedData in the same file as the public class containing the - QSharedDataPointer is not typical. Normally, the idea is to hide the - private subclass of QSharedData from the user by putting it in a - separate file which would not be included in the public file. In - this case, we would normally put class \c EmployeeData in a separate - file, which would \e{not} be included in \c{employee.h}. Instead, we - would just predeclare the private subclass \c EmployeeData in \c - {employee.h} this way: - - \code - class EmployeeData; - \endcode - - If we had done it that way here, the copy constructor shown would be - required. Since the copy constructor is trivial, you might as well - just always include it. - - Behind the scenes, QSharedDataPointer automatically increments the - reference count whenever an \c Employee object is copied, assigned, - or passed as a parameter. It decrements the reference count whenever - an \c Employee object is deleted or goes out of scope. The shared - \c EmployeeData object is deleted automatically if and when the - reference count reaches 0. - - In a non-const member function of \c Employee, whenever the \e {d - pointer} is dereferenced, QSharedDataPointer automatically calls - detach() to ensure that the function operates on its own copy of the - data. - - \snippet doc/src/snippets/sharedemployee/employee.h 3 - \codeline - \snippet doc/src/snippets/sharedemployee/employee.h 4 - - Note that if detach() is called more than once in a member function - due to multiple dereferences of the \e {d pointer}, detach() will - only create a copy of the shared data the first time it is called, - if at all, because on the second and subsequent calls of detach(), - the reference count will be 1 again. - - But note that in the second \c Employee constructor, which takes an - employee ID and a name, both setId() and setName() are called, but - they don't cause \e{copy on write}, because the reference count for - the newly constructed \c EmployeeData object has just been set to 1. - - In \c Employee's \e const member functions, dereferencing the \e {d - pointer} does \e not cause detach() to be called. - - \snippet doc/src/snippets/sharedemployee/employee.h 5 - \codeline - \snippet doc/src/snippets/sharedemployee/employee.h 6 - - Notice that there is no need to implement a copy constructor or an - assignment operator for the \c Employee class, because the copy - constructor and assignment operator provided by the C++ compiler - will do the \e{member by member} shallow copy required. The only - member to copy is the \e {d pointer}, which is a QSharedDataPointer, - whose \c {operator=()} just increments the reference count of the - shared \c EmployeeData object. - - \target Implicit vs Explicit Sharing - \section1 Implicit vs Explicit Sharing - - Implicit sharing might not be right for the \c Employee class. - Consider a simple example that creates two instances of the - implicitly shared \c Employee class. - - \snippet doc/src/snippets/sharedemployee/main.cpp 0 - - After the second employee e2 is created and e1 is assigned to it, - both \c e1 and \c e2 refer to Albrecht Durer, employee 1001. Both \c - Employee objects point to the same instance of \c EmployeeData, - which has reference count 2. Then \c {e1.setName("Hans Holbein")} is - called to change the employee name, but because the reference count - is greater than 1, a \e{copy on write} is performed before the name - is changed. Now \c e1 and \c e2 point to different \c EmployeeData - objects. They have different names, but both have ID 1001, which is - probably not what you want. You can, of course, just continue with - \c {e1.setId(1002)}, if you really mean to create a second, unique - employee, but if you only want to change the employee's name - everywhere, consider using \l {QExplicitlySharedDataPointer} - {explicit sharing} in the \c Employee class instead of implicit - sharing. - - If you declare the \e {d pointer} in the \c Employee class to be - \c {QExplicitlySharedDataPointer<EmployeeData>}, then explicit - sharing is used and \e{copy on write} operations are not performed - automatically (i.e. detach() is not called in non-const - functions). In that case, after \c {e1.setName("Hans Holbein")}, the - employee's name has been changed, but both e1 and e2 still refer to - the same instance of \c EmployeeData, so there is only one employee - with ID 1001. - - In the member function documentation, \e{d pointer} always refers - to the internal pointer to the shared data object. - - \sa QSharedData, QExplicitlySharedDataPointer, QScopedPointer, QSharedPointer + \endlist + + To show this in practice, we review the source code for the + implicitly shared \c Employee class. In the header file we define the + two classes \c Employee and \c EmployeeData. + + \snippet doc/src/snippets/sharedemployee/employee.h 0 + + In class \c Employee, note the single data member, a \e {d pointer} + of type \c {QSharedDataPointer<EmployeeData>}. All accesses of + employee data must go through the \e {d pointer's} \c + {operator->()}. For write accesses, \c {operator->()} will + automatically call detach(), which creates a copy of the shared data + object if the shared data object's reference count is greater than + 1. This ensures that writes to one \c Employee object don't affect + any other \c Employee objects that share the same \c EmployeeData + object. + + Class \c EmployeeData inherits QSharedData, which provides the + \e{behind the scenes} reference counter. \c EmployeeData has a default + constructor, a copy constructor, and a destructor. Normally, trivial + implementations of these are all that is needed in the \e {data} + class for an implicitly shared class. + + Implementing the two constructors for class \c Employee is also + straightforward. Both create a new instance of \c EmployeeData + and assign it to the \e{d pointer} . + + \snippet doc/src/snippets/sharedemployee/employee.h 1 + \codeline + \snippet doc/src/snippets/sharedemployee/employee.h 2 + + Note that class \c Employee also has a trivial copy constructor + defined, which is not strictly required in this case. + + \snippet doc/src/snippets/sharedemployee/employee.h 7 + + The copy constructor is not strictly required here, because class \c + EmployeeData is included in the same file as class \c Employee + (\c{employee.h}). However, including the private subclass of + QSharedData in the same file as the public class containing the + QSharedDataPointer is not typical. Normally, the idea is to hide the + private subclass of QSharedData from the user by putting it in a + separate file which would not be included in the public file. In + this case, we would normally put class \c EmployeeData in a separate + file, which would \e{not} be included in \c{employee.h}. Instead, we + would just predeclare the private subclass \c EmployeeData in \c + {employee.h} this way: + + \code + class EmployeeData; + \endcode + + If we had done it that way here, the copy constructor shown would be + required. Since the copy constructor is trivial, you might as well + just always include it. + + Behind the scenes, QSharedDataPointer automatically increments the + reference count whenever an \c Employee object is copied, assigned, + or passed as a parameter. It decrements the reference count whenever + an \c Employee object is deleted or goes out of scope. The shared + \c EmployeeData object is deleted automatically if and when the + reference count reaches 0. + + In a non-const member function of \c Employee, whenever the \e {d + pointer} is dereferenced, QSharedDataPointer automatically calls + detach() to ensure that the function operates on its own copy of the + data. + + \snippet doc/src/snippets/sharedemployee/employee.h 3 + \codeline + \snippet doc/src/snippets/sharedemployee/employee.h 4 + + Note that if detach() is called more than once in a member function + due to multiple dereferences of the \e {d pointer}, detach() will + only create a copy of the shared data the first time it is called, + if at all, because on the second and subsequent calls of detach(), + the reference count will be 1 again. + + But note that in the second \c Employee constructor, which takes an + employee ID and a name, both setId() and setName() are called, but + they don't cause \e{copy on write}, because the reference count for + the newly constructed \c EmployeeData object has just been set to 1. + + In \c Employee's \e const member functions, dereferencing the \e {d + pointer} does \e not cause detach() to be called. + + \snippet doc/src/snippets/sharedemployee/employee.h 5 + \codeline + \snippet doc/src/snippets/sharedemployee/employee.h 6 + + Notice that there is no need to implement a copy constructor or an + assignment operator for the \c Employee class, because the copy + constructor and assignment operator provided by the C++ compiler + will do the \e{member by member} shallow copy required. The only + member to copy is the \e {d pointer}, which is a QSharedDataPointer, + whose \c {operator=()} just increments the reference count of the + shared \c EmployeeData object. + + \target Implicit vs Explicit Sharing + \section1 Implicit vs Explicit Sharing + + Implicit sharing might not be right for the \c Employee class. + Consider a simple example that creates two instances of the + implicitly shared \c Employee class. + + \snippet doc/src/snippets/sharedemployee/main.cpp 0 + + After the second employee e2 is created and e1 is assigned to it, + both \c e1 and \c e2 refer to Albrecht Durer, employee 1001. Both \c + Employee objects point to the same instance of \c EmployeeData, + which has reference count 2. Then \c {e1.setName("Hans Holbein")} is + called to change the employee name, but because the reference count + is greater than 1, a \e{copy on write} is performed before the name + is changed. Now \c e1 and \c e2 point to different \c EmployeeData + objects. They have different names, but both have ID 1001, which is + probably not what you want. You can, of course, just continue with + \c {e1.setId(1002)}, if you really mean to create a second, unique + employee, but if you only want to change the employee's name + everywhere, consider using \l {QExplicitlySharedDataPointer} + {explicit sharing} in the \c Employee class instead of implicit + sharing. + + If you declare the \e {d pointer} in the \c Employee class to be + \c {QExplicitlySharedDataPointer<EmployeeData>}, then explicit + sharing is used and \e{copy on write} operations are not performed + automatically (i.e. detach() is not called in non-const + functions). In that case, after \c {e1.setName("Hans Holbein")}, the + employee's name has been changed, but both e1 and e2 still refer to + the same instance of \c EmployeeData, so there is only one employee + with ID 1001. + + In the member function documentation, \e{d pointer} always refers + to the internal pointer to the shared data object. + + \sa QSharedData, QExplicitlySharedDataPointer, QScopedPointer, QSharedPointer */ /*! \fn T& QSharedDataPointer::operator*() - Provides access to the shared data object's members. - This function calls detach(). + Provides access to the shared data object's members. + This function calls detach(). */ /*! \fn const T& QSharedDataPointer::operator*() const - Provides const access to the shared data object's members. - This function does \e not call detach(). + Provides const access to the shared data object's members. + This function does \e not call detach(). */ /*! \fn T* QSharedDataPointer::operator->() - Provides access to the shared data object's members. - This function calls detach(). + Provides access to the shared data object's members. + This function calls detach(). */ /*! \fn const T* QSharedDataPointer::operator->() const - Provides const access to the shared data object's members. - This function does \e not call detach(). + Provides const access to the shared data object's members. + This function does \e not call detach(). */ /*! \fn QSharedDataPointer::operator T*() - Returns a pointer to the shared data object. - This function calls detach(). + Returns a pointer to the shared data object. + This function calls detach(). - \sa data(), constData() + \sa data(), constData() */ /*! \fn QSharedDataPointer::operator const T*() const - Returns a pointer to the shared data object. - This function does \e not call detach(). + Returns a pointer to the shared data object. + This function does \e not call detach(). */ /*! \fn T* QSharedDataPointer::data() - Returns a pointer to the shared data object. - This function calls detach(). + Returns a pointer to the shared data object. + This function calls detach(). - \sa constData() + \sa constData() */ /*! \fn const T* QSharedDataPointer::data() const - Returns a pointer to the shared data object. - This function does \e not call detach(). + Returns a pointer to the shared data object. + This function does \e not call detach(). */ /*! \fn const T* QSharedDataPointer::constData() const - Returns a const pointer to the shared data object. - This function does \e not call detach(). + Returns a const pointer to the shared data object. + This function does \e not call detach(). - \sa data() + \sa data() */ +/*! \fn void QSharedDataPointer::swap(QSharedDataPointer &other) + Swap this instance's shared data pointer with the shared + data pointer in \a other. + */ + /*! \fn bool QSharedDataPointer::operator==(const QSharedDataPointer<T>& other) const - Returns true if \a other and \e this have the same \e{d pointer}. - This function does \e not call detach(). + Returns true if \a other and \e this have the same \e{d pointer}. + This function does \e not call detach(). */ /*! \fn bool QSharedDataPointer::operator!=(const QSharedDataPointer<T>& other) const - Returns true if \a other and \e this do \e not have the same - \e{d pointer}. This function does \e not call detach(). + Returns true if \a other and \e this do \e not have the same + \e{d pointer}. This function does \e not call detach(). */ /*! \fn QSharedDataPointer::QSharedDataPointer() - Constructs a QSharedDataPointer initialized with a null \e{d pointer}. + Constructs a QSharedDataPointer initialized with a null \e{d pointer}. */ /*! \fn QSharedDataPointer::~QSharedDataPointer() - Decrements the reference count of the shared data object. - If the reference count becomes 0, the shared data object - is deleted. \e This is then destroyed. + Decrements the reference count of the shared data object. + If the reference count becomes 0, the shared data object + is deleted. \e This is then destroyed. */ /*! \fn QSharedDataPointer::QSharedDataPointer(T* sharedData) - Constructs a QSharedDataPointer with \e{d pointer} set to - \a sharedData and increments \a{sharedData}'s reference count. + Constructs a QSharedDataPointer with \e{d pointer} set to + \a sharedData and increments \a{sharedData}'s reference count. */ /*! \fn QSharedDataPointer::QSharedDataPointer(const QSharedDataPointer<T>& other) - Sets the \e{d pointer} of \e this to the \e{d pointer} in - \a other and increments the reference count of the shared - data object. + Sets the \e{d pointer} of \e this to the \e{d pointer} in + \a other and increments the reference count of the shared + data object. */ /*! \fn QSharedDataPointer<T>& QSharedDataPointer::operator=(const QSharedDataPointer<T>& other) - Sets the \e{d pointer} of \e this to the \e{d pointer} of - \a other and increments the reference count of the shared - data object. The reference count of the old shared data - object of \e this is decremented. If the reference count - of the old shared data object becomes 0, the old shared - data object is deleted. + Sets the \e{d pointer} of \e this to the \e{d pointer} of + \a other and increments the reference count of the shared + data object. The reference count of the old shared data + object of \e this is decremented. If the reference count + of the old shared data object becomes 0, the old shared + data object is deleted. */ /*! \fn QSharedDataPointer& QSharedDataPointer::operator=(T* sharedData) - Sets the \e{d pointer} og \e this to \a sharedData and increments - \a{sharedData}'s reference count. The reference count of the old - shared data object of \e this is decremented. If the reference - count of the old shared data object becomes 0, the old shared data - object is deleted. + Sets the \e{d pointer} og \e this to \a sharedData and increments + \a{sharedData}'s reference count. The reference count of the old + shared data object of \e this is decremented. If the reference + count of the old shared data object becomes 0, the old shared data + object is deleted. */ /*! \fn bool QSharedDataPointer::operator!() const - Returns true if the \e{d pointer} of \e this is null. + Returns true if the \e{d pointer} of \e this is null. */ /*! \fn void QSharedDataPointer::detach() - If the shared data object's reference count is greater than 1, this - function creates a deep copy of the shared data object and sets the - \e{d pointer} of \e this to the copy. - - This function is called automatically by non-const member - functions of QSharedDataPointer if \e{copy on write} is - required. You don't need to call it yourself. + If the shared data object's reference count is greater than 1, this + function creates a deep copy of the shared data object and sets the + \e{d pointer} of \e this to the copy. + + This function is called automatically by non-const member + functions of QSharedDataPointer if \e{copy on write} is + required. You don't need to call it yourself. */ /*! \fn T *QSharedDataPointer::clone() \since 4.5 - Creates and returns a deep copy of the current data. This function - is called by detach() when the reference count is greater than 1 in - order to create the new copy. This function uses the \e {operator - new} and calls the copy constructor of the type T. + Creates and returns a deep copy of the current data. This function + is called by detach() when the reference count is greater than 1 in + order to create the new copy. This function uses the \e {operator + new} and calls the copy constructor of the type T. - This function is provided so that you may support "virtual copy - constructors" for your own types. In order to so, you should declare - a template-specialization of this function for your own type, like - the example below: + This function is provided so that you may support "virtual copy + constructors" for your own types. In order to so, you should declare + a template-specialization of this function for your own type, like + the example below: - \code + \code template<> EmployeeData *QSharedDataPointer<EmployeeData>::clone() { return d->clone(); } - \endcode + \endcode - In the example above, the template specialization for the clone() - function calls the \e {EmployeeData::clone()} virtual function. A - class derived from EmployeeData could override that function and - return the proper polymorphic type. + In the example above, the template specialization for the clone() + function calls the \e {EmployeeData::clone()} virtual function. A + class derived from EmployeeData could override that function and + return the proper polymorphic type. */ /*! - \class QExplicitlySharedDataPointer - \brief The QExplicitlySharedDataPointer class represents a pointer to an explicitly shared object. - \since 4.4 - \reentrant - \ingroup misc - \mainclass - - QExplicitlySharedDataPointer\<T\> makes writing your own explicitly - shared classes easy. QExplicitlySharedDataPointer implements - \l {thread-safe} reference counting, ensuring that adding - QExplicitlySharedDataPointers to your \l {reentrant} classes won't - make them non-reentrant. - - Except for one big difference, QExplicitlySharedDataPointer is just - like QSharedDataPointer. The big difference is that member functions - of QExplicitlySharedDataPointer \e{do not} do the automatic - \e{copy on write} operation (detach()) that non-const members of - QSharedDataPointer do before allowing the shared data object to be - modified. There is a detach() function available, but if you really - want to detach(), you have to call it yourself. This means that - QExplicitlySharedDataPointers behave like regular C++ pointers, - except that by doing reference counting and not deleting the shared - data object until the reference count is 0, they avoid the dangling - pointer problem. - - It is instructive to compare QExplicitlySharedDataPointer with - QSharedDataPointer by way of an example. Consider the \l {Employee - example} in QSharedDataPointer, modified to use explicit sharing as - explained in the discussion \l {Implicit vs Explicit Sharing}. - - Note that if you use this class but find you are calling detach() a - lot, you probably should be using QSharedDataPointer instead. - - In the member function documentation, \e{d pointer} always refers - to the internal pointer to the shared data object. - - \sa QSharedData, QSharedDataPointer + \class QExplicitlySharedDataPointer + \brief The QExplicitlySharedDataPointer class represents a pointer to an explicitly shared object. + \since 4.4 + \reentrant + + QExplicitlySharedDataPointer\<T\> makes writing your own explicitly + shared classes easy. QExplicitlySharedDataPointer implements + \l {thread-safe} reference counting, ensuring that adding + QExplicitlySharedDataPointers to your \l {reentrant} classes won't + make them non-reentrant. + + Except for one big difference, QExplicitlySharedDataPointer is just + like QSharedDataPointer. The big difference is that member functions + of QExplicitlySharedDataPointer \e{do not} do the automatic + \e{copy on write} operation (detach()) that non-const members of + QSharedDataPointer do before allowing the shared data object to be + modified. There is a detach() function available, but if you really + want to detach(), you have to call it yourself. This means that + QExplicitlySharedDataPointers behave like regular C++ pointers, + except that by doing reference counting and not deleting the shared + data object until the reference count is 0, they avoid the dangling + pointer problem. + + It is instructive to compare QExplicitlySharedDataPointer with + QSharedDataPointer by way of an example. Consider the \l {Employee + example} in QSharedDataPointer, modified to use explicit sharing as + explained in the discussion \l {Implicit vs Explicit Sharing}. + + Note that if you use this class but find you are calling detach() a + lot, you probably should be using QSharedDataPointer instead. + + In the member function documentation, \e{d pointer} always refers + to the internal pointer to the shared data object. + + \sa QSharedData, QSharedDataPointer */ /*! \fn T& QExplicitlySharedDataPointer::operator*() const - Provides access to the shared data object's members. + Provides access to the shared data object's members. */ /*! \fn T* QExplicitlySharedDataPointer::operator->() - Provides access to the shared data object's members. + Provides access to the shared data object's members. */ /*! \fn const T* QExplicitlySharedDataPointer::operator->() const - Provides const access to the shared data object's members. + Provides const access to the shared data object's members. */ /*! \fn T* QExplicitlySharedDataPointer::data() const - Returns a pointer to the shared data object. + Returns a pointer to the shared data object. */ /*! \fn const T* QExplicitlySharedDataPointer::constData() const - Returns a const pointer to the shared data object. + Returns a const pointer to the shared data object. - \sa data() + \sa data() */ +/*! \fn void QExplicitlySharedDataPointer::swap(QExplicitlySharedDataPointer &other) + Swap this instance's explicitly shared data pointer with + the explicitly shared data pointer in \a other. + */ + /*! \fn bool QExplicitlySharedDataPointer::operator==(const QExplicitlySharedDataPointer<T>& other) const - Returns true if \a other and \e this have the same \e{d pointer}. + Returns true if \a other and \e this have the same \e{d pointer}. */ /*! \fn bool QExplicitlySharedDataPointer::operator==(const T* ptr) const - Returns true if the \e{d pointer} of \e this is \a ptr. + Returns true if the \e{d pointer} of \e this is \a ptr. */ /*! \fn bool QExplicitlySharedDataPointer::operator!=(const QExplicitlySharedDataPointer<T>& other) const - Returns true if \a other and \e this do \e not have the same - \e{d pointer}. + Returns true if \a other and \e this do \e not have the same + \e{d pointer}. */ /*! \fn bool QExplicitlySharedDataPointer::operator!=(const T* ptr) const - Returns true if the \e{d pointer} of \e this is \e not \a ptr. + Returns true if the \e{d pointer} of \e this is \e not \a ptr. */ /*! \fn QExplicitlySharedDataPointer::QExplicitlySharedDataPointer() - Constructs a QExplicitlySharedDataPointer initialized with a null - \e{d pointer}. + Constructs a QExplicitlySharedDataPointer initialized with a null + \e{d pointer}. */ /*! \fn QExplicitlySharedDataPointer::~QExplicitlySharedDataPointer() - Decrements the reference count of the shared data object. - If the reference count becomes 0, the shared data object - is deleted. \e This is then destroyed. + Decrements the reference count of the shared data object. + If the reference count becomes 0, the shared data object + is deleted. \e This is then destroyed. */ /*! \fn QExplicitlySharedDataPointer::QExplicitlySharedDataPointer(T* sharedData) - Constructs a QExplicitlySharedDataPointer with \e{d pointer} - set to \a sharedData and increments \a{sharedData}'s reference - count. + Constructs a QExplicitlySharedDataPointer with \e{d pointer} + set to \a sharedData and increments \a{sharedData}'s reference + count. */ /*! \fn QExplicitlySharedDataPointer::QExplicitlySharedDataPointer(const QExplicitlySharedDataPointer<T>& other) - This standard copy constructor sets the \e {d pointer} of \e this to - the \e {d pointer} in \a other and increments the reference count of - the shared data object. + This standard copy constructor sets the \e {d pointer} of \e this to + the \e {d pointer} in \a other and increments the reference count of + the shared data object. */ /*! \fn QExplicitlySharedDataPointer::QExplicitlySharedDataPointer(const QExplicitlySharedDataPointer<X>& other) - This copy constructor is different in that it allows \a other to be - a different type of explicitly shared data pointer but one that has - a compatible shared data object. It performs a static cast of the - \e{d pointer} in \a other and sets the \e {d pointer} of \e this to - the converted \e{d pointer}. It increments the reference count of - the shared data object. - */ + This copy constructor is different in that it allows \a other to be + a different type of explicitly shared data pointer but one that has + a compatible shared data object. It performs a static cast of the + \e{d pointer} in \a other and sets the \e {d pointer} of \e this to + the converted \e{d pointer}. It increments the reference count of + the shared data object. +*/ /*! \fn QExplicitlySharedDataPointer<T>& QExplicitlySharedDataPointer::operator=(const QExplicitlySharedDataPointer<T>& other) - Sets the \e{d pointer} of \e this to the \e{d pointer} of - \a other and increments the reference count of the shared - data object. The reference count of the old shared data - object of \e this is decremented. If the reference count - of the old shared data object becomes 0, the old shared - data object is deleted. + Sets the \e{d pointer} of \e this to the \e{d pointer} of + \a other and increments the reference count of the shared + data object. The reference count of the old shared data + object of \e this is decremented. If the reference count + of the old shared data object becomes 0, the old shared + data object is deleted. */ /*! \fn QExplicitlySharedDataPointer& QExplicitlySharedDataPointer::operator=(T* sharedData) - Sets the \e{d pointer} of \e this to \a sharedData and - increments \a{sharedData}'s reference count. The reference - count of the old shared data object of \e this is decremented. - If the reference count of the old shared data object becomes - 0, the old shared data object is deleted. + Sets the \e{d pointer} of \e this to \a sharedData and + increments \a{sharedData}'s reference count. The reference + count of the old shared data object of \e this is decremented. + If the reference count of the old shared data object becomes + 0, the old shared data object is deleted. */ /*! \fn void QExplicitlySharedDataPointer::reset() - Resets \e this to be null. i.e., this function sets the - \e{d pointer} of \e this to 0, but first it decrements - the reference count of the shared data object and deletes - the shared data object if the reference count became 0. + Resets \e this to be null. i.e., this function sets the + \e{d pointer} of \e this to 0, but first it decrements + the reference count of the shared data object and deletes + the shared data object if the reference count became 0. */ /*! \fn QExplicitlySharedDataPointer::operator bool () const - Returns true if the \e{d pointer} of \e this is \e not null. + Returns true if the \e{d pointer} of \e this is \e not null. */ /*! \fn bool QExplicitlySharedDataPointer::operator!() const - Returns true if the \e{d pointer} of \e this is null. + Returns true if the \e{d pointer} of \e this is null. */ /*! \fn void QExplicitlySharedDataPointer::detach() - If the shared data object's reference count is greater than 1, this - function creates a deep copy of the shared data object and sets the - \e{d pointer} of \e this to the copy. + If the shared data object's reference count is greater than 1, this + function creates a deep copy of the shared data object and sets the + \e{d pointer} of \e this to the copy. - Because QExplicitlySharedDataPointer does not do the automatic - \e{copy on write} operations that members of QSharedDataPointer do, - detach() is \e not called automatically anywhere in the member - functions of this class. If you find that you are calling detach() - everywhere in your code, consider using QSharedDataPointer instead. + Because QExplicitlySharedDataPointer does not do the automatic + \e{copy on write} operations that members of QSharedDataPointer do, + detach() is \e not called automatically anywhere in the member + functions of this class. If you find that you are calling detach() + everywhere in your code, consider using QSharedDataPointer instead. */ /*! \fn T *QExplicitlySharedDataPointer::clone() \since 4.5 - Creates and returns a deep copy of the current data. This function - is called by detach() when the reference count is greater than 1 in - order to create the new copy. This function uses the \e {operator - new} and calls the copy constructor of the type T. + Creates and returns a deep copy of the current data. This function + is called by detach() when the reference count is greater than 1 in + order to create the new copy. This function uses the \e {operator + new} and calls the copy constructor of the type T. - See QSharedDataPointer::clone() for an explanation of how to use it. + See QSharedDataPointer::clone() for an explanation of how to use it. */ /*! - \typedef QExplicitlySharedDataPointer::Type + \typedef QExplicitlySharedDataPointer::Type - This is the type of the shared data object. The \e{d pointer} - points to an object of this type. - */ + This is the type of the shared data object. The \e{d pointer} + points to an object of this type. +*/ QT_END_NAMESPACE diff --git a/src/corelib/tools/qshareddata.h b/src/corelib/tools/qshareddata.h index e13e37c..dde6e88 100644 --- a/src/corelib/tools/qshareddata.h +++ b/src/corelib/tools/qshareddata.h @@ -111,6 +111,9 @@ public: inline bool operator!() const { return !d; } + inline void swap(QSharedDataPointer &other) + { qSwap(d, other.d); } + protected: T *clone(); @@ -186,6 +189,9 @@ public: inline bool operator!() const { return !d; } + inline void swap(QExplicitlySharedDataPointer &other) + { qSwap(d, other.d); } + protected: T *clone(); @@ -235,6 +241,14 @@ template <class T> Q_INLINE_TEMPLATE QExplicitlySharedDataPointer<T>::QExplicitlySharedDataPointer(T *adata) : d(adata) { if (d) d->ref.ref(); } +template <class T> +Q_INLINE_TEMPLATE void qSwap(QSharedDataPointer<T> &p1, QSharedDataPointer<T> &p2) +{ p1.swap(p2); } + +template <class T> +Q_INLINE_TEMPLATE void qSwap(QExplicitlySharedDataPointer<T> &p1, QExplicitlySharedDataPointer<T> &p2) +{ p1.swap(p2); } + QT_END_NAMESPACE QT_END_HEADER diff --git a/src/corelib/tools/qsharedpointer.cpp b/src/corelib/tools/qsharedpointer.cpp index f0e85d2..641d990 100644 --- a/src/corelib/tools/qsharedpointer.cpp +++ b/src/corelib/tools/qsharedpointer.cpp @@ -50,7 +50,6 @@ \since 4.5 \reentrant - \ingroup misc The QSharedPointer is an automatic, shared pointer in C++. It behaves exactly like a normal pointer for normal purposes, @@ -112,6 +111,249 @@ cases, since they have the same functionality. See \l{QWeakPointer#tracking-qobject} for more information. + \section1 Optional pointer tracking + + A feature of QSharedPointer that can be enabled at compile-time for + debugging purposes is a pointer tracking mechanism. When enabled, + QSharedPointer registers in a global set all the pointers that it tracks. + This allows one to catch mistakes like assigning the same pointer to two + QSharedPointer objects. + + This function is enabled by defining the \tt{QT_SHAREDPOINTER_TRACK_POINTERS} + macro before including the QSharedPointer header. + + It is safe to use this feature even with code compiled without the + feature. QSharedPointer will ensure that the pointer is removed from the + tracker even from code compiled without pointer tracking. + + Note, however, that the pointer tracking feature has limitations on + multiple- or virtual-inheritance (that is, in cases where two different + pointer addresses can refer to the same object). In that case, if a + pointer is cast to a different type and its value changes, + QSharedPointer's pointer tracking mechanism mail fail to detect that the + object being tracked is the same. + + \omit + \secton1 QSharedPointer internals + + QSharedPointer is in reality implemented by two ancestor classes: + QtSharedPointer::Basic and QtSharedPointer::ExternalRefCount. The reason + for having that split is now mostly legacy: in the beginning, + QSharedPointer was meant to support both internal reference counting and + external reference counting. + + QtSharedPointer::Basic implements the basic functionality that is shared + between internal- and external-reference counting. That is, it's mostly + the accessor functions into QSharedPointer. Those are all inherited by + QSharedPointer, which adds another level of shared functionality (the + constructors and assignment operators). The Basic class has one member + variable, which is the actual pointer being tracked. + + QtSharedPointer::ExternalRefCount implements the actual reference + counting and introduces the d-pointer for QSharedPointer. That d-pointer + itself is shared with with other QSharedPointer objects as well as + QWeakPointer. + + The reason for keeping the pointer value itself outside the d-pointer is + because of multiple inheritance needs. If you have two QSharedPointer + objects of different pointer types, but pointing to the same object in + memory, it could happen that the pointer values are different. The \tt + differentPointers autotest exemplifies this problem. The same thing could + happen in the case of virtual inheritance: a pointer of class matching + the virtual base has different address compared to the pointer of the + complete object. See the \tt virtualBaseDifferentPointers autotest for + this problem. + + The d pointer is of type QtSharedPointer::ExternalRefCountData for simple + QSharedPointer objects, but could be of a derived type in some cases. It + is basically a reference-counted reference-counter. + + \section2 d-pointer + \section3 QtSharedPointer::ExternalRefCountData + + This class is basically a reference-counted reference-counter. It has two + members: \tt strongref and \tt weakref. The strong reference counter is + controlling the lifetime of the object tracked by QSharedPointer. a + positive value indicates that the object is alive. It's also the number + of QSharedObject instances that are attached to this Data. + + When the strong reference count decreases to zero, the object is deleted + (see below for information on custom deleters). The strong reference + count can also exceptionally be -1, indicating that there are no + QSharedPointers attached to an object, which is tracked too. The only + case where this is possible is that of + \l{QWeakPointer#tracking-qobject}{QWeakPointers tracking a QObject}. + + The weak reference count controls the lifetime of the d-pointer itself. + It can be thought of as an internal/intrusive reference count for + ExternalRefCountData itself. This count is equal to the number of + QSharedPointers and QWeakPointers that are tracking this object. (In case + the object tracked derives from QObject, this number is increased by 1, + since QObjectPrivate tracks it too). + + ExternalRefCountData is a virtual class: it has a virtual destructor and + a virtual destroy() function. The destroy() function is supposed to + delete the object being tracked and return true if it does so. Otherwise, + it returns false to indicate that the caller must simply call delete. + This allows the normal use-case of QSharedPointer without custom deleters + to use only one 12- or 16-byte (depending on whether it's a 32- or 64-bit + architecture) external descriptor structure, without paying the price for + the custom deleter that it isn't using. + + \section3 QtSharedPointer::ExternalRefCountDataWithDestroyFn + + This class is not used directly, per se. It only exists to enable the two + classes that derive from it. It adds one member variable, which is a + pointer to a function (which returns void and takes an + ExternalRefCountData* as a parameter). It also overrides the destroy() + function: it calls that function pointer with \tt this as parameter, and + returns true. + + That means when ExternalRefCountDataWithDestroyFn is used, the \tt + destroyer field must be set to a valid function that \b will delete the + object tracked. + + This class also adds an operator delete function to ensure that simply + calls the global operator delete. That should be the behaviour in all + compilers already, but to be on the safe side, this class ensures that no + funny business happens. + + On a 32-bit architecture, this class is 16 bytes in size, whereas it's 24 + bytes on 64-bit. (On Itanium where function pointers contain the global + pointer, it can be 32 bytes). + + \section3 QtSharedPointer::ExternalRefCountWithCustomDeleter + + This class derives from ExternalRefCountDataWithDestroyFn and is a + template class. As template parameters, it has the type of the pointer + being tracked (\tt T) and a \tt Deleter, which is anything. It adds two + fields to its parent class, matching those template parameters: a member + of type \tt Deleter and a member of type \tt T*. + + The purpose of this class is to store the pointer to be deleted and the + deleter code along with the d-pointer. This allows the last strong + reference to call any arbitrary function that disposes of the object. For + example, this allows calling QObject::deleteLater() on a given object. + The pointer to the object is kept here to avoid the extra cost of keeping + the deleter in the generic case. + + This class is never instantiated directly: the constructors and + destructor are private. Only the create() function may be called to + return an object of this type. See below for construction details. + + The size of this class depends on the size of \tt Deleter. If it's an + empty functor (i.e., no members), ABIs generally assign it the size of 1. + But given that it's followed by a pointer, up to 3 or 7 padding bytes may + be inserted: in that case, the size of this class is 16+4+4 = 24 bytes on + 32-bit architectures, or 24+8+8 = 40 bytes on 64-bit architectures (48 + bytes on Itanium with global pointers stored). If \tt Deleter is a + function pointer, the size should be the same as the empty structure + case, except for Itanium where it may be 56 bytes due to another global + pointer. If \tt Deleter is a pointer to a member function (PMF), the size + will be even bigger and will depend on the ABI. For architectures using + the Itanium C++ ABI, a PMF is twice the size of a normal pointer, or 24 + bytes on Itanium itself. In that case, the size of this structure will be + 16+8+4 = 28 bytes on 32-bit architectures, 24+16+8 = 48 bytes on 64-bit, + and 32+24+8 = 64 bytes on Itanium. + + (Values for Itanium consider an LP64 architecture; for ILP32, pointers + are 32-bit in length, function pointers are 64-bit and PMF are 96-bit, so + the sizes are slightly less) + + \section3 QtSharedPointer::ExternalRefCountWithContiguousData + + This class also derives from ExternalRefCountDataWithDestroyFn and it is + also a template class. The template parameter is the type \tt T of the + class which QSharedPointer tracks. It adds only one member to its parent, + which is of type \tt T (the actual type, not a pointer to it). + + The purpose of this class is to lay the \tt T object out next to the + reference counts, saving one memory allocation per shared pointer. This + is particularly interesting for small \tt T or for the cases when there + are few if any QWeakPointer tracking the object. This class exists to + implement the QSharedPointer::create() call. + + Like ExternalRefCountWithCustomDeleter, this class is never instantiated + directly. This class also provides a create() member that returns the + pointer, and hides its constructors and destructor. (With C++0x, we'd + delete them). + + The size of this class depends on the size of \tt T. + + \section3 Instantiating ExternalRefCountWithCustomDeleter and ExternalRefCountWithContiguousData + + Like explained above, these classes have private constructors. Moreover, + they are not defined anywhere, so trying to call \tt{new ClassType} would + result in a compilation or linker error. Instead, these classes must be + constructed via their create() methods. + + Instead of instantiating the class by the normal way, the create() method + calls \tt{operator new} directly with the size of the class, then calls + the parent class's constructor only (ExternalRefCountDataWithDestroyFn). + This ensures that the inherited members are initialised properly, as well + as the virtual table pointer, which must point to + ExternalRefCountDataWithDestroyFn's virtual table. That way, we also + ensure that the virtual destructor being called is + ExternalRefCountDataWithDestroyFn's. + + After initialising the base class, the + ExternalRefCountWithCustomDeleter::create() function initialises the new + members directly, by using the placement \tt{operator new}. In the case + of the ExternalRefCountWithContiguousData::create() function, the address + to the still-uninitialised \tt T member is saved for the callee to use. + The member is only initialised in QSharedPointer::create(), so that we + avoid having many variants of the internal functions according to the + arguments in use for calling the constructor. + + When initialising the parent class, the create() functions pass the + address of the static deleter() member function. That is, when the + virtual destroy() is called by QSharedPointer, the deleter() functions + are called instead. These functiosn static_cast the ExternalRefCountData* + parameter to their own type and execute their deletion: for the + ExternalRefCountWithCustomDeleter::deleter() case, it runs the user's + custom deleter, then destroys the deleter; for + ExternalRefCountWithContiguousData::deleter, it simply calls the \tt T + destructor directly. + + By not calling the constructor of the derived classes, we avoid + instantiating their virtual tables. Since these classes are + template-based, there would be one virtual table per \tt T and \tt + Deleter type. (This is what Qt 4.5 did) + + Instead, only one non-inline function is required per template, which is + the deleter() static member. All the other functions can be inlined. + What's more, the address of deleter() is calculated only in code, which + can be resolved at link-time if the linker can determine that the + function lies in the current application or library module (since these + classes are not exported, that is the case for Windows or for builds with + \tt{-fvisibility=hidden}). + + In contrast, a virtual table would require at least 3 relocations to be + resolved at module load-time, per module where these classes are used. + (In the Itanium C++ ABI, there would be more relocations, due to the + RTTI) + + \section3 Modifications due to pointer-tracking + + To ensure that pointers created with pointer-tracking enabled get + un-tracked when destroyed, even if destroyed by code compiled without the + feature, QSharedPointer modifies slightly the instructions of the + previous sections. + + When ExternalRefCountWithCustomDeleter or + ExternalRefCountWithContiguousData are used, their create() functions + will set the ExternalRefCountDataWithDestroyFn::destroyer function + pointer to safetyCheckDeleter() instead. These static member functions + simply call internalSafetyCheckRemove2() before passing control to the + normal deleter() function. + + If neither custom deleter nor QSharedPointer::create() are used, then + QSharedPointer uses a custom deleter of its own: the normalDeleter() + function, which simply calls \tt delete. By using a custom deleter, the + safetyCheckDeleter() procedure described above kicks in. + + \endomit + \sa QSharedDataPointer, QWeakPointer, QScopedPointer */ @@ -120,7 +362,6 @@ \brief The QWeakPointer class holds a weak reference to a shared pointer \since 4.5 \reentrant - \ingroup misc The QWeakPointer is an automatic weak reference to a pointer in C++. It cannot be used to dereference the pointer @@ -187,6 +428,29 @@ QWeakPointers created from QObject should never be passed to code that hasn't been recompiled. + \omit + \secton1 QWeakPointer internals + + QWeakPointer shares most of its internal functionality with + \l{QSharedPointer#qsharedpointer-internals}{QSharedPointer}, so see that + class's internal documentation for more information. + + QWeakPointer requires an external reference counter in order to operate. + Therefore, it is incompatible by design with \l QSharedData-derived + classes. + + It has a special QObject constructor, which works by calling + QtSharedPointer::ExternalRefCountData::getAndRef, which retrieves the + d-pointer from QObjectPrivate. If one isn't set yet, that function + creates the d-pointer and atomically sets it. + + If getAndRef needs to create a d-pointer, it sets the strongref to -1, + indicating that the QObject is not shared: QWeakPointer is used only to + determine whether the QObject has been deleted. In that case, it cannot + be upgraded to QSharedPointer (see the previous section). + + \endomit + \sa QSharedPointer, QScopedPointer */ @@ -951,7 +1215,7 @@ #include <qmutex.h> #if !defined(QT_NO_QOBJECT) -#include "../kernel/qobject_p.h" +#include "private/qobject_p.h" QT_BEGIN_NAMESPACE diff --git a/src/corelib/tools/qsharedpointer_impl.h b/src/corelib/tools/qsharedpointer_impl.h index e381433..bce4c64 100644 --- a/src/corelib/tools/qsharedpointer_impl.h +++ b/src/corelib/tools/qsharedpointer_impl.h @@ -115,6 +115,9 @@ namespace QtSharedPointer { template <class T> struct RemovePointer<QSharedPointer<T> > { typedef T Type; }; template <class T> struct RemovePointer<QWeakPointer<T> > { typedef T Type; }; + // This class provides the basic functionality of a pointer wrapper. + // Its existence is mostly legacy, since originally QSharedPointer + // could also be used for internally-refcounted objects. template <class T> class Basic { @@ -161,6 +164,12 @@ namespace QtSharedPointer { Type *value; }; + // This class is the d-pointer of QSharedPointer and QWeakPointer. + // + // It is a reference-counted reference counter. "strongref" is the inner + // reference counter, and it tracks the lifetime of the pointer itself. + // "weakref" is the outer reference counter and it tracks the lifetime of + // the ExternalRefCountData object. struct ExternalRefCountData { QBasicAtomicInt weakref; @@ -168,12 +177,15 @@ namespace QtSharedPointer { inline ExternalRefCountData() { - QBasicAtomicInt proto = Q_BASIC_ATOMIC_INITIALIZER(1); - weakref = strongref = proto; + strongref = 1; + weakref = 1; } inline ExternalRefCountData(Qt::Initialization) { } virtual inline ~ExternalRefCountData() { Q_ASSERT(!weakref); Q_ASSERT(strongref <= 0); } + // overridden by derived classes + // returns false to indicate caller should delete the pointer + // returns true in case it has already done so virtual inline bool destroy() { return false; } #ifndef QT_NO_QOBJECT @@ -184,18 +196,8 @@ namespace QtSharedPointer { }; // sizeof(ExternalRefCount) = 12 (32-bit) / 16 (64-bit) - template <class T, typename Deleter> - struct CustomDeleter - { - Deleter deleter; - T *ptr; - - inline CustomDeleter(T *p, Deleter d) : deleter(d), ptr(p) {} - }; - // sizeof(CustomDeleter) = sizeof(Deleter) + sizeof(void*) - // for Deleter = function pointer: 8 (32-bit) / 16 (64-bit) - // for Deleter = PMF: 12 (32-bit) / 24 (64-bit) (GCC) - + // This class extends ExternalRefCountData with a pointer + // to a function, which is called by the destroy() function. struct ExternalRefCountWithDestroyFn: public ExternalRefCountData { typedef void (*DestroyerFn)(ExternalRefCountData *); @@ -210,13 +212,26 @@ namespace QtSharedPointer { }; // sizeof(ExternalRefCountWithDestroyFn) = 16 (32-bit) / 24 (64-bit) + // This class extends ExternalRefCountWithDestroyFn and implements + // the static function that deletes the object. The pointer and the + // custom deleter are kept in the "extra" member. template <class T, typename Deleter> struct ExternalRefCountWithCustomDeleter: public ExternalRefCountWithDestroyFn { typedef ExternalRefCountWithCustomDeleter Self; - typedef ExternalRefCountWithDestroyFn Parent; - typedef CustomDeleter<T, Deleter> Next; - Next extra; + typedef ExternalRefCountWithDestroyFn BaseClass; + + struct CustomDeleter + { + Deleter deleter; + T *ptr; + + inline CustomDeleter(T *p, Deleter d) : deleter(d), ptr(p) {} + }; + CustomDeleter extra; + // sizeof(CustomDeleter) = sizeof(Deleter) + sizeof(void*) + // for Deleter = function pointer: 8 (32-bit) / 16 (64-bit) + // for Deleter = PMF: 12 (32-bit) / 24 (64-bit) (GCC) static inline void deleter(ExternalRefCountData *self) { @@ -224,7 +239,7 @@ namespace QtSharedPointer { executeDeleter(realself->extra.ptr, realself->extra.deleter); // delete the deleter too - realself->extra.~Next(); + realself->extra.~CustomDeleter(); } static void safetyCheckDeleter(ExternalRefCountData *self) { @@ -242,8 +257,8 @@ namespace QtSharedPointer { Self *d = static_cast<Self *>(::operator new(sizeof(Self))); // initialize the two sub-objects - new (&d->extra) Next(ptr, userDeleter); - new (d) Parent(destroy); // can't throw + new (&d->extra) CustomDeleter(ptr, userDeleter); + new (d) BaseClass(destroy); // can't throw return d; } @@ -253,6 +268,10 @@ namespace QtSharedPointer { ~ExternalRefCountWithCustomDeleter(); }; + // This class extends ExternalRefCountWithDestroyFn and adds a "T" + // member. That way, when the create() function is called, we allocate + // memory for both QSharedPointer's d-pointer and the actual object being + // tracked. template <class T> struct ExternalRefCountWithContiguousData: public ExternalRefCountWithDestroyFn { @@ -295,6 +314,8 @@ namespace QtSharedPointer { ~ExternalRefCountWithContiguousData(); }; + // This is the main body of QSharedPointer. It implements the + // external reference counting functionality. template <class T> class ExternalRefCount: public Basic<T> { @@ -370,6 +391,12 @@ namespace QtSharedPointer { delete this->value; } + inline void internalSwap(ExternalRefCount &other) + { + qSwap(d, other.d); + qSwap(this->value, other.value); + } + #if defined(Q_NO_TEMPLATE_FRIENDS) public: #else @@ -450,6 +477,9 @@ public: inline QSharedPointer<T> &operator=(const QWeakPointer<X> &other) { BaseClass::internalSet(other.d, other.value); return *this; } + inline void swap(QSharedPointer &other) + { internalSwap(other); } + template <class X> QSharedPointer<X> staticCast() const { @@ -673,6 +703,12 @@ Q_INLINE_TEMPLATE QWeakPointer<T> QSharedPointer<T>::toWeakRef() const return QWeakPointer<T>(*this); } +template <class T> +inline void qSwap(QSharedPointer<T> &p1, QSharedPointer<T> &p2) +{ + p1.swap(p2); +} + namespace QtSharedPointer { // helper functions: template <class X, class T> diff --git a/src/corelib/tools/qsize.cpp b/src/corelib/tools/qsize.cpp index 6168fe9..a165917 100644 --- a/src/corelib/tools/qsize.cpp +++ b/src/corelib/tools/qsize.cpp @@ -47,7 +47,7 @@ QT_BEGIN_NAMESPACE /*! \class QSize - \ingroup multimedia + \ingroup painting \brief The QSize class defines the size of a two-dimensional object using integer point precision. @@ -432,7 +432,7 @@ QDebug operator<<(QDebug dbg, const QSize &s) { \brief The QSizeF class defines the size of a two-dimensional object using floating point precision. - \ingroup multimedia + \ingroup painting A size is specified by a width() and a height(). It can be set in the constructor and changed using the setWidth(), setHeight(), or diff --git a/src/corelib/tools/qstack.cpp b/src/corelib/tools/qstack.cpp index f89149a..f97e546 100644 --- a/src/corelib/tools/qstack.cpp +++ b/src/corelib/tools/qstack.cpp @@ -45,7 +45,7 @@ \ingroup tools \ingroup shared - \mainclass + \reentrant QStack\<T\> is one of Qt's generic \l{container classes}. It implements diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp index c36bf6e..34178c1 100644 --- a/src/corelib/tools/qstring.cpp +++ b/src/corelib/tools/qstring.cpp @@ -359,7 +359,7 @@ const QString::Null QString::null = { }; \internal - \ingroup text + \ingroup string-processing When you get an object of type QCharRef, if you can assign to it, the assignment will apply to the character in the string from @@ -381,8 +381,8 @@ const QString::Null QString::null = { }; \ingroup tools \ingroup shared - \ingroup text - \mainclass + \ingroup string-processing + QString stores a string of 16-bit \l{QChar}s, where each QChar corresponds one Unicode 4.0 character. (Unicode characters @@ -6942,7 +6942,7 @@ QString QString::fromRawData(const QChar *unicode, int size) /*! \class QLatin1String \brief The QLatin1String class provides a thin wrapper around an ASCII/Latin-1 encoded string literal. - \ingroup text + \ingroup string-processing \reentrant Many of QString's member functions are overloaded to accept @@ -7564,7 +7564,7 @@ QDataStream &operator>>(QDataStream &in, QString &str) \brief The QStringRef class provides a thin wrapper around QString substrings. \reentrant \ingroup tools - \ingroup text + \ingroup string-processing QStringRef provides a read-only subset of the QString API. diff --git a/src/corelib/tools/qstringbuilder.cpp b/src/corelib/tools/qstringbuilder.cpp index 344e95b..04fbb93 100644 --- a/src/corelib/tools/qstringbuilder.cpp +++ b/src/corelib/tools/qstringbuilder.cpp @@ -52,8 +52,8 @@ \ingroup tools \ingroup shared - \ingroup text - \mainclass + \ingroup string-processing + Unlike \c QLatin1String, a \c QLatin1Literal can retrieve its size without iterating over the literal. @@ -92,8 +92,8 @@ \ingroup tools \ingroup shared - \ingroup text - \mainclass + \ingroup string-processing + To build a QString by multiple concatenations, QString::operator+() is typically used. This causes \e{n - 1} reallocations when building diff --git a/src/corelib/tools/qstringlist.cpp b/src/corelib/tools/qstringlist.cpp index 952609e..231f74e 100644 --- a/src/corelib/tools/qstringlist.cpp +++ b/src/corelib/tools/qstringlist.cpp @@ -77,8 +77,8 @@ QT_BEGIN_NAMESPACE \ingroup tools \ingroup shared - \ingroup text - \mainclass + \ingroup string-processing + \reentrant QStringList inherits from QList<QString>. Like QList, QStringList is diff --git a/src/corelib/tools/qstringmatcher.cpp b/src/corelib/tools/qstringmatcher.cpp index 75e1d45..8eb8238 100644 --- a/src/corelib/tools/qstringmatcher.cpp +++ b/src/corelib/tools/qstringmatcher.cpp @@ -129,7 +129,7 @@ static inline int bm_find(const ushort *uc, uint l, int index, const ushort *puc can be quickly matched in a Unicode string. \ingroup tools - \ingroup text + \ingroup string-processing This class is useful when you have a sequence of \l{QChar}s that you want to repeatedly match against some strings (perhaps in a diff --git a/src/corelib/tools/qtextboundaryfinder.cpp b/src/corelib/tools/qtextboundaryfinder.cpp index bf1d654..8768a16 100644 --- a/src/corelib/tools/qtextboundaryfinder.cpp +++ b/src/corelib/tools/qtextboundaryfinder.cpp @@ -107,7 +107,7 @@ static void init(QTextBoundaryFinder::BoundaryType type, const QChar *chars, int \since 4.4 \ingroup tools \ingroup shared - \ingroup text + \ingroup string-processing \reentrant QTextBoundaryFinder allows to find Unicode text boundaries in a diff --git a/src/corelib/tools/qtimeline.cpp b/src/corelib/tools/qtimeline.cpp index 11d4c43..c0ca931 100644 --- a/src/corelib/tools/qtimeline.cpp +++ b/src/corelib/tools/qtimeline.cpp @@ -165,7 +165,7 @@ void QTimeLinePrivate::setCurrentTime(int msecs) \class QTimeLine \brief The QTimeLine class provides a timeline for controlling animations. \since 4.2 - \ingroup multimedia + \ingroup animation It's most commonly used to animate a GUI control by calling a slot periodically. You can construct a timeline by passing its duration in diff --git a/src/corelib/tools/qvarlengtharray.qdoc b/src/corelib/tools/qvarlengtharray.qdoc new file mode 100644 index 0000000..9cc7bef --- /dev/null +++ b/src/corelib/tools/qvarlengtharray.qdoc @@ -0,0 +1,274 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \class QVarLengthArray + \brief The QVarLengthArray class provides a low-level variable-length array. + + \ingroup tools + \reentrant + + The C++ language doesn't support variable-length arrays on the stack. + For example, the following code won't compile: + + \snippet doc/src/snippets/code/doc_src_qvarlengtharray.qdoc 0 + + The alternative is to allocate the array on the heap (with + \c{new}): + + \snippet doc/src/snippets/code/doc_src_qvarlengtharray.qdoc 1 + + However, if myfunc() is called very frequently from the + application's inner loop, heap allocation can be a major source + of slowdown. + + QVarLengthArray is an attempt to work around this gap in the C++ + language. It allocates a certain number of elements on the stack, + and if you resize the array to a larger size, it automatically + uses the heap instead. Stack allocation has the advantage that + it is much faster than heap allocation. + + Example: + \snippet doc/src/snippets/code/doc_src_qvarlengtharray.qdoc 2 + + In the example above, QVarLengthArray will preallocate 1024 + elements on the stack and use them unless \c{n + 1} is greater + than 1024. If you omit the second template argument, + QVarLengthArray's default of 256 is used. + + QVarLengthArray's value type must be an \l{assignable data type}. + This covers most data types that are commonly used, but the + compiler won't let you, for example, store a QWidget as a value; + instead, store a QWidget *. + + QVarLengthArray, like QVector, provides a resizable array data + structure. The main differences between the two classes are: + + \list + \o QVarLengthArray's API is much more low-level. It provides no + iterators and lacks much of QVector's functionality. + + \o QVarLengthArray doesn't initialize the memory if the value is + a basic type. (QVector always does.) + + \o QVector uses \l{implicit sharing} as a memory optimization. + QVarLengthArray doesn't provide that feature; however, it + usually produces slightly better performance due to reduced + overhead, especially in tight loops. + \endlist + + In summary, QVarLengthArray is a low-level optimization class + that only makes sense in very specific cases. It is used a few + places inside Qt and was added to Qt's public API for the + convenience of advanced users. + + \sa QVector, QList, QLinkedList +*/ + +/*! \fn QVarLengthArray::QVarLengthArray(int size) + + Constructs an array with an initial size of \a size elements. + + If the value type is a primitive type (e.g., char, int, float) or + a pointer type (e.g., QWidget *), the elements are not + initialized. For other types, the elements are initialized with a + \l{default-constructed value}. +*/ + +/*! \fn QVarLengthArray::~QVarLengthArray() + + Destroys the array. +*/ + +/*! \fn int QVarLengthArray::size() const + + Returns the number of elements in the array. + + \sa isEmpty(), resize() +*/ + +/*! \fn int QVarLengthArray::count() const + + Same as size(). + + \sa isEmpty(), resize() +*/ + +/*! \fn bool QVarLengthArray::isEmpty() const + + Returns true if the array has size 0; otherwise returns false. + + \sa size(), resize() +*/ + +/*! \fn void QVarLengthArray::clear() + + Removes all the elements from the array. + + Same as resize(0). +*/ + +/*! \fn void QVarLengthArray::resize(int size) + + Sets the size of the array to \a size. If \a size is greater than + the current size, elements are added to the end. If \a size is + less than the current size, elements are removed from the end. + + If the value type is a primitive type (e.g., char, int, float) or + a pointer type (e.g., QWidget *), new elements are not + initialized. For other types, the elements are initialized with a + \l{default-constructed value}. + + \sa size() +*/ + +/*! \fn int QVarLengthArray::capacity() const + + Returns the maximum number of elements that can be stored in the + array without forcing a reallocation. + + The sole purpose of this function is to provide a means of fine + tuning QVarLengthArray's memory usage. In general, you will rarely ever + need to call this function. If you want to know how many items are + in the array, call size(). + + \sa reserve() +*/ + +/*! \fn void QVarLengthArray::reserve(int size) + + Attempts to allocate memory for at least \a size elements. If you + know in advance how large the array can get, you can call this + function and if you call resize() often, you are likely to get + better performance. If \a size is an underestimate, the worst + that will happen is that the QVarLengthArray will be a bit + slower. + + The sole purpose of this function is to provide a means of fine + tuning QVarLengthArray's memory usage. In general, you will + rarely ever need to call this function. If you want to change the + size of the array, call resize(). + + \sa capacity() +*/ + +/*! \fn T &QVarLengthArray::operator[](int i) + + Returns a reference to the item at index position \a i. + + \a i must be a valid index position in the array (i.e., 0 <= \a i + < size()). + + \sa data() +*/ + +/*! \fn const T &QVarLengthArray::operator[](int i) const + + \overload +*/ + + +/*! + \fn void QVarLengthArray::append(const T &t) + + Appends item \a t to the array, extending the array if necessary. + + \sa removeLast() +*/ + + +/*! + \fn inline void QVarLengthArray::removeLast() + \since 4.5 + + Decreases the size of the array by one. The allocated size is not changed. + + \sa append() +*/ + +/*! + \fn void QVarLengthArray::append(const T *buf, int size) + + Appends \a size amount of items referenced by \a buf to this array. +*/ + + +/*! \fn T *QVarLengthArray::data() + + Returns a pointer to the data stored in the array. The pointer can + be used to access and modify the items in the array. + + Example: + \snippet doc/src/snippets/code/doc_src_qvarlengtharray.qdoc 3 + + The pointer remains valid as long as the array isn't reallocated. + + This function is mostly useful to pass an array to a function + that accepts a plain C++ array. + + \sa constData(), operator[]() +*/ + +/*! \fn const T *QVarLengthArray::data() const + + \overload +*/ + +/*! \fn const T *QVarLengthArray::constData() const + + Returns a const pointer to the data stored in the array. The + pointer can be used to access the items in the array. The + pointer remains valid as long as the array isn't reallocated. + + This function is mostly useful to pass an array to a function + that accepts a plain C++ array. + + \sa data(), operator[]() +*/ + +/*! \fn QVarLengthArray<T, Prealloc> &QVarLengthArray::operator=(const QVarLengthArray<T, Prealloc> &other) + Assigns \a other to this array and returns a reference to this array. + */ + +/*! \fn QVarLengthArray::QVarLengthArray(const QVarLengthArray<T, Prealloc> &other) + Constructs a copy of \a other. + */ + diff --git a/src/corelib/tools/qvector.cpp b/src/corelib/tools/qvector.cpp index 67c4f74..e5c2c6a 100644 --- a/src/corelib/tools/qvector.cpp +++ b/src/corelib/tools/qvector.cpp @@ -68,7 +68,7 @@ int QVectorData::grow(int sizeofTypedData, int size, int sizeofT, bool excessive \ingroup tools \ingroup shared - \mainclass + \reentrant QVector\<T\> is one of Qt's generic \l{container classes}. It diff --git a/src/corelib/tools/tools.pri b/src/corelib/tools/tools.pri index e6c6169..464c60f 100644 --- a/src/corelib/tools/tools.pri +++ b/src/corelib/tools/tools.pri @@ -56,7 +56,7 @@ SOURCES += \ tools/qhash.cpp \ tools/qline.cpp \ tools/qlinkedlist.cpp \ - tools/qlistdata.cpp \ + tools/qlist.cpp \ tools/qlocale.cpp \ tools/qpoint.cpp \ tools/qmap.cpp \ @@ -93,7 +93,7 @@ contains(QT_CONFIG, zlib) { ../3rdparty/zlib/uncompr.c \ ../3rdparty/zlib/zutil.c } else:!contains(QT_CONFIG, no-zlib) { - unix:LIBS += -lz + unix:LIBS_PRIVATE += -lz # win32:LIBS += libz.lib } @@ -114,4 +114,6 @@ HEADERS += tools/qharfbuzz_p.h INCLUDEPATH += ../3rdparty/md5 \ ../3rdparty/md4 -!macx-icc:unix:!symbian:!vxworks:LIBS += -lm +# Note: libm should be present by default becaue this is C++ +!macx-icc:!vxworks:!symbian:unix:LIBS_PRIVATE += -lm + diff --git a/src/corelib/xml/qxmlstream.cpp b/src/corelib/xml/qxmlstream.cpp index b5fe241..004e823 100644 --- a/src/corelib/xml/qxmlstream.cpp +++ b/src/corelib/xml/qxmlstream.cpp @@ -52,13 +52,13 @@ #include "qxmlutils_p.h" #include <qdebug.h> -#include <QFile> +#include <qfile.h> #include <stdio.h> #include <qtextcodec.h> #include <qstack.h> #include <qbuffer.h> #ifndef QT_BOOTSTRAPPED -#include <QCoreApplication> +#include <qcoreapplication.h> #else // This specialization of Q_DECLARE_TR_FUNCTIONS is not in qcoreapplication.h, // because that header depends on QObject being available, which is not the @@ -244,7 +244,7 @@ QXmlStreamEntityResolver *QXmlStreamReader::entityResolver() const \brief The QXmlStreamReader class provides a fast parser for reading well-formed XML via a simple streaming API. - \mainclass + \ingroup xml-tools QXmlStreamReader is a faster and more convenient replacement for @@ -2793,7 +2793,7 @@ QStringRef QXmlStreamReader::documentEncoding() const \brief The QXmlStreamWriter class provides an XML writer with a simple streaming API. - \mainclass + \inmodule QtXml \ingroup xml-tools diff --git a/src/corelib/xml/qxmlstream.h b/src/corelib/xml/qxmlstream.h index c7ebf28..89585bc 100644 --- a/src/corelib/xml/qxmlstream.h +++ b/src/corelib/xml/qxmlstream.h @@ -42,13 +42,13 @@ #ifndef QXMLSTREAM_H #define QXMLSTREAM_H -#include <QtCore/QIODevice> +#include <QtCore/qiodevice.h> #ifndef QT_NO_XMLSTREAM -#include <QtCore/QString> -#include <QtCore/QVector> -#include <QtCore/QScopedPointer> +#include <QtCore/qstring.h> +#include <QtCore/qvector.h> +#include <QtCore/qscopedpointer.h> QT_BEGIN_HEADER diff --git a/src/corelib/xml/qxmlutils.cpp b/src/corelib/xml/qxmlutils.cpp index 036869b..d9219be 100644 --- a/src/corelib/xml/qxmlutils.cpp +++ b/src/corelib/xml/qxmlutils.cpp @@ -39,8 +39,8 @@ ** ****************************************************************************/ -#include <QRegExp> -#include <QString> +#include <qregexp.h> +#include <qstring.h> #include "qxmlutils_p.h" diff --git a/src/corelib/xml/qxmlutils_p.h b/src/corelib/xml/qxmlutils_p.h index 431c0ad..6e7ba7b 100644 --- a/src/corelib/xml/qxmlutils_p.h +++ b/src/corelib/xml/qxmlutils_p.h @@ -53,7 +53,7 @@ // We mean it. // -#include <QtCore/QString> +#include <QtCore/qstring.h> QT_BEGIN_NAMESPACE diff --git a/src/dbus/dbus.pro b/src/dbus/dbus.pro index 39adfe1..dcd8418 100644 --- a/src/dbus/dbus.pro +++ b/src/dbus/dbus.pro @@ -6,8 +6,8 @@ DEFINES += QDBUS_MAKEDLL DBUS_API_SUBJECT_TO_CHANGE QMAKE_CXXFLAGS += $$QT_CFLAGS_DBUS contains(QT_CONFIG, dbus-linked) { - LIBS += $$QT_LIBS_DBUS - DEFINES += QT_LINKED_LIBDBUS + LIBS_PRIVATE += $$QT_LIBS_DBUS + DEFINES += QT_LINKED_LIBDBUS } #INCLUDEPATH += . @@ -18,9 +18,9 @@ unix { } win32 { - LIBS += -lws2_32 -ladvapi32 -lnetapi32 -luser32 - CONFIG(debug, debug|release):LIBS += -ldbus-1d - else:LIBS += -ldbus-1 + LIBS_PRIVATE += -lws2_32 -ladvapi32 -lnetapi32 -luser32 + CONFIG(debug, debug|release):LIBS_PRIVATE += -ldbus-1d + else:LIBS_PRIVATE += -ldbus-1 } include(../qbase.pri) diff --git a/src/gui/accessible/qaccessible.cpp b/src/gui/accessible/qaccessible.cpp index abeca0d..9084817 100644 --- a/src/gui/accessible/qaccessible.cpp +++ b/src/gui/accessible/qaccessible.cpp @@ -61,7 +61,7 @@ QT_BEGIN_NAMESPACE relating to accessibility. \ingroup accessibility - \mainclass + Accessible applications can be used by people who are not able to use applications by conventional means. diff --git a/src/gui/dialogs/qabstractprintdialog.cpp b/src/gui/dialogs/qabstractprintdialog.cpp index ac4c9e8..9e91382 100644 --- a/src/gui/dialogs/qabstractprintdialog.cpp +++ b/src/gui/dialogs/qabstractprintdialog.cpp @@ -59,6 +59,8 @@ class QPrintDialogPrivate : public QAbstractPrintDialogPrivate \brief The QAbstractPrintDialog class provides a base implementation for print dialogs used to configure printers. + \ingroup printing + This class implements getter and setter functions that are used to customize settings shown in print dialogs, but it is not used directly. Use QPrintDialog to display a print dialog in your application. @@ -357,7 +359,8 @@ void QAbstractPrintDialogPrivate::setPrinter(QPrinter *newPrinter) \brief The QPrintDialog class provides a dialog for specifying the printer's configuration. - \ingroup dialogs + \ingroup standard-dialogs + \ingroup printing The dialog allows users to change document-related settings, such as the paper size and orientation, type of print (color or diff --git a/src/gui/dialogs/qcolordialog.cpp b/src/gui/dialogs/qcolordialog.cpp index 4a40b48..766dcb4 100644 --- a/src/gui/dialogs/qcolordialog.cpp +++ b/src/gui/dialogs/qcolordialog.cpp @@ -1510,9 +1510,7 @@ static const Qt::WindowFlags DefaultWindowFlags = \class QColorDialog \brief The QColorDialog class provides a dialog widget for specifying colors. - \mainclass - \ingroup dialogs - \ingroup multimedia + \ingroup standard-dialogs The color dialog's function is to allow users to choose colors. For example, you might use this in a drawing program to allow the diff --git a/src/gui/dialogs/qdialog.cpp b/src/gui/dialogs/qdialog.cpp index 326dee4..16e5330 100644 --- a/src/gui/dialogs/qdialog.cpp +++ b/src/gui/dialogs/qdialog.cpp @@ -78,9 +78,9 @@ QT_BEGIN_NAMESPACE \class QDialog \brief The QDialog class is the base class of dialog windows. - \ingroup dialogs + \ingroup dialog-classes \ingroup abstractwidgets - \mainclass + A dialog window is a top-level window mostly used for short-term tasks and brief communications with the user. QDialogs may be diff --git a/src/gui/dialogs/qerrormessage.cpp b/src/gui/dialogs/qerrormessage.cpp index bc9972c..c83f33c 100644 --- a/src/gui/dialogs/qerrormessage.cpp +++ b/src/gui/dialogs/qerrormessage.cpp @@ -133,8 +133,7 @@ QSize QErrorMessageTextView::sizeHint() const \brief The QErrorMessage class provides an error message display dialog. - \ingroup dialogs - \ingroup misc + \ingroup standard-dialog An error message widget consists of a text label and a checkbox. The checkbox lets the user control whether the same error message will be diff --git a/src/gui/dialogs/qfiledialog.cpp b/src/gui/dialogs/qfiledialog.cpp index 7a30c3d..0a4c1e2 100644 --- a/src/gui/dialogs/qfiledialog.cpp +++ b/src/gui/dialogs/qfiledialog.cpp @@ -92,8 +92,8 @@ Q_GUI_EXPORT _qt_filedialog_save_filename_hook qt_filedialog_save_filename_hook /*! \class QFileDialog \brief The QFileDialog class provides a dialog that allow users to select files or directories. - \ingroup dialogs - \mainclass + \ingroup standard-dialogs + The QFileDialog class enables a user to traverse the file system in order to select one or many files or a directory. @@ -2730,7 +2730,7 @@ void QFileDialogPrivate::_q_updateOkButton() if (lineEditText.startsWith(QLatin1String("//")) || lineEditText.startsWith(QLatin1Char('\\'))) { button->setEnabled(true); if (acceptMode == QFileDialog::AcceptSave) - button->setText(isOpenDirectory ? QFileDialog::tr("&Open") : acceptLabel); + button->setText(acceptLabel); return; } diff --git a/src/gui/dialogs/qfontdialog.cpp b/src/gui/dialogs/qfontdialog.cpp index 3e57585..512dc65 100644 --- a/src/gui/dialogs/qfontdialog.cpp +++ b/src/gui/dialogs/qfontdialog.cpp @@ -112,9 +112,8 @@ static const Qt::WindowFlags DefaultWindowFlags = /*! \class QFontDialog - \ingroup dialogs - \ingroup text - \mainclass + \ingroup standard-dialogs + \brief The QFontDialog class provides a dialog widget for selecting a font. A font dialog is created through one of the static getFont() diff --git a/src/gui/dialogs/qinputdialog.cpp b/src/gui/dialogs/qinputdialog.cpp index a2b8304..39a6b07 100644 --- a/src/gui/dialogs/qinputdialog.cpp +++ b/src/gui/dialogs/qinputdialog.cpp @@ -425,8 +425,8 @@ void QInputDialogPrivate::_q_currentRowChanged(const QModelIndex &newIndex, \class QInputDialog \brief The QInputDialog class provides a simple convenience dialog to get a single value from the user. - \ingroup dialogs - \mainclass + \ingroup standard-dialogs + The input value can be a string, a number or an item from a list. A label must be set to tell the user what they should enter. diff --git a/src/gui/dialogs/qmessagebox.cpp b/src/gui/dialogs/qmessagebox.cpp index 857ce46..7f21990 100644 --- a/src/gui/dialogs/qmessagebox.cpp +++ b/src/gui/dialogs/qmessagebox.cpp @@ -434,8 +434,8 @@ void QMessageBoxPrivate::_q_buttonClicked(QAbstractButton *button) \brief The QMessageBox class provides a modal dialog for informing the user or for asking the user a question and receiving an answer. - \ingroup dialogs - \mainclass + \ingroup standard-dialogs + A message box displays a primary \l{QMessageBox::text}{text} to alert the user to a situation, an \l{QMessageBox::informativeText} diff --git a/src/gui/dialogs/qpagesetupdialog.cpp b/src/gui/dialogs/qpagesetupdialog.cpp index 5ca4935..a91eaea 100644 --- a/src/gui/dialogs/qpagesetupdialog.cpp +++ b/src/gui/dialogs/qpagesetupdialog.cpp @@ -45,6 +45,52 @@ QT_BEGIN_NAMESPACE +/*! + \class QPageSetupDialog + + \brief The QPageSetupDialog class provides a configuration dialog + for the page-related options on a printer. + + \ingroup standard-dialogs + \ingroup printing + + On Windows and Mac OS X the page setup dialog is implemented using + the native page setup dialogs. + + Note that on Windows and Mac OS X custom paper sizes won't be + reflected in the native page setup dialogs. Additionally, custom + page margins set on a QPrinter won't show in the native Mac OS X + page setup dialog. + + \sa QPrinter, QPrintDialog +*/ + + +/*! + \fn QPageSetupDialog::QPageSetupDialog(QPrinter *printer, QWidget *parent) + + Constructs a page setup dialog that configures \a printer with \a + parent as the parent widget. +*/ + +/*! + \since 4.5 + + \fn QPageSetupDialog::QPageSetupDialog(QWidget *parent) + + Constructs a page setup dialog that configures a default-constructed + QPrinter with \a parent as the parent widget. + + \sa printer() +*/ + +/*! + \fn QPrinter *QPageSetupDialog::printer() + + Returns the printer that was passed to the QPageSetupDialog + constructor. +*/ + // hack class QPageSetupDialogPrivate : public QAbstractPageSetupDialogPrivate { diff --git a/src/gui/dialogs/qprintdialog.qdoc b/src/gui/dialogs/qprintdialog.qdoc new file mode 100644 index 0000000..b52edff --- /dev/null +++ b/src/gui/dialogs/qprintdialog.qdoc @@ -0,0 +1,72 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifdef QT3_SUPPORT +/*! + \fn QPrinter *QPrintDialog::printer() const + + Returns a pointer to the printer this dialog configures, or 0 if + this dialog does not operate on any printer. + + This function is available for Unix platforms only. +*/ + +/*! + \fn void QPrintDialog::setPrinter(QPrinter *printer, bool pickupSettings) + + Sets this dialog to configure printer \a printer, or no printer if \a printer + is null. If \a pickupSettings is true, the dialog reads most of + its settings from \a printer. If \a pickupSettings is false (the + default) the dialog keeps its old settings. + + This function is available for Unix platforms only. +*/ + +/*! + \fn void QPrintDialog::addButton(QPushButton *button) + + Adds the \a button to the layout of the print dialog. The added + buttons are arranged from the left to the right below the + last groupbox of the printdialog. + + This function is available for Unix platforms only. +*/ +#endif diff --git a/src/gui/dialogs/qprintpreviewdialog.cpp b/src/gui/dialogs/qprintpreviewdialog.cpp index 6565739..8ac4717 100644 --- a/src/gui/dialogs/qprintpreviewdialog.cpp +++ b/src/gui/dialogs/qprintpreviewdialog.cpp @@ -625,6 +625,9 @@ void QPrintPreviewDialogPrivate::_q_zoomFactorChanged() \brief The QPrintPreviewDialog class provides a dialog for previewing and configuring page layouts for printer output. + \ingroup standard-dialogs + \ingroup printing + Using QPrintPreviewDialog in your existing application is straightforward: diff --git a/src/gui/dialogs/qprogressdialog.cpp b/src/gui/dialogs/qprogressdialog.cpp index 1ca1515..d55eadb 100644 --- a/src/gui/dialogs/qprogressdialog.cpp +++ b/src/gui/dialogs/qprogressdialog.cpp @@ -196,8 +196,8 @@ void QProgressDialogPrivate::_q_disconnectOnClose() /*! \class QProgressDialog \brief The QProgressDialog class provides feedback on the progress of a slow operation. - \ingroup dialogs - \mainclass + \ingroup standard-dialogs + A progress dialog is used to give the user an indication of how long an operation is going to take, and to demonstrate that the diff --git a/src/gui/egl/egl.pri b/src/gui/egl/egl.pri index 651507f..75a3d91 100644 --- a/src/gui/egl/egl.pri +++ b/src/gui/egl/egl.pri @@ -25,4 +25,4 @@ for(p, QMAKE_LIBDIR_EGL) { } !isEmpty(QMAKE_INCDIR_EGL): INCLUDEPATH += $$QMAKE_INCDIR_EGL -!isEmpty(QMAKE_LIBS_EGL): LIBS += $$QMAKE_LIBS_EGL +!isEmpty(QMAKE_LIBS_EGL): LIBS_PRIVATE += $$QMAKE_LIBS_EGL diff --git a/src/gui/embedded/embedded.pri b/src/gui/embedded/embedded.pri index e8eb959..255a504 100644 --- a/src/gui/embedded/embedded.pri +++ b/src/gui/embedded/embedded.pri @@ -189,7 +189,7 @@ embedded { } contains( mouse-drivers, tslib ) { - LIBS += -lts + LIBS_PRIVATE += -lts HEADERS +=embedded/qmousetslib_qws.h SOURCES +=embedded/qmousetslib_qws.cpp } diff --git a/src/gui/embedded/qdirectpainter_qws.cpp b/src/gui/embedded/qdirectpainter_qws.cpp index bae6ed9..bba862b 100644 --- a/src/gui/embedded/qdirectpainter_qws.cpp +++ b/src/gui/embedded/qdirectpainter_qws.cpp @@ -58,7 +58,7 @@ QT_BEGIN_NAMESPACE /*! \class QDirectPainter - \ingroup multimedia + \ingroup painting \ingroup qws \brief The QDirectPainter class provides direct access to the diff --git a/src/gui/embedded/qlock.cpp b/src/gui/embedded/qlock.cpp index 0f88832..c32e9b5 100644 --- a/src/gui/embedded/qlock.cpp +++ b/src/gui/embedded/qlock.cpp @@ -128,7 +128,6 @@ public: \brief The QLock class is a wrapper for a System V shared semaphore. \ingroup qws - \ingroup io \internal diff --git a/src/gui/graphicsview/qgraphicsgridlayout.cpp b/src/gui/graphicsview/qgraphicsgridlayout.cpp index ee7048f..0fb284f 100644 --- a/src/gui/graphicsview/qgraphicsgridlayout.cpp +++ b/src/gui/graphicsview/qgraphicsgridlayout.cpp @@ -44,7 +44,7 @@ \brief The QGraphicsGridLayout class provides a grid layout for managing widgets in Graphics View. \since 4.4 - \ingroup multimedia + \ingroup graphicsview-api The most common way to use QGraphicsGridLayout is to construct an object diff --git a/src/gui/graphicsview/qgraphicsitem.cpp b/src/gui/graphicsview/qgraphicsitem.cpp index 5a84cfd..4f64c2a 100644 --- a/src/gui/graphicsview/qgraphicsitem.cpp +++ b/src/gui/graphicsview/qgraphicsitem.cpp @@ -44,7 +44,7 @@ \brief The QGraphicsItem class is the base class for all graphical items in a QGraphicsScene. \since 4.2 - \ingroup multimedia + \ingroup graphicsview-api It provides a light-weight foundation for writing your own custom items. @@ -328,6 +328,10 @@ used for Asian languages. This flag was introduced in Qt 4.6. + \value ItemNegativeZStacksBehindParent The item automatically stacks behind + it's parent if it's z-value is negative. This flag enables setZValue() to + toggle ItemStacksBehindParent. + \value ItemAutoDetectsFocusProxy The item will assign any child that gains input focus as its focus proxy. See also focusProxy(). This flag was introduced in Qt 4.6. @@ -1196,6 +1200,9 @@ QGraphicsItem::QGraphicsItem(QGraphicsItemPrivate &dd, QGraphicsItem *parent, Destroys the QGraphicsItem and all its children. If this item is currently associated with a scene, the item will be removed from the scene before it is deleted. + + \note It is more efficient to remove the item from the QGraphicsScene before + destroying the item. */ QGraphicsItem::~QGraphicsItem() { @@ -1209,10 +1216,12 @@ QGraphicsItem::~QGraphicsItem() Q_ASSERT(d_ptr->children.isEmpty()); } - if (d_ptr->scene) + if (d_ptr->scene) { d_ptr->scene->d_func()->removeItemHelper(this); - else + } else { + d_ptr->resetFocusProxy(); d_ptr->setParentItemHelper(0); + } if (d_ptr->transformData) { for(int i = 0; i < d_ptr->transformData->graphicsTransforms.size(); ++i) { @@ -1573,6 +1582,11 @@ void QGraphicsItem::setFlags(GraphicsItemFlags flags) d_ptr->scene->d_func()->updateInputMethodSensitivityInViews(); } + if ((flags & ItemNegativeZStacksBehindParent) != (oldFlags & ItemNegativeZStacksBehindParent)) { + // Update stack-behind. + setFlag(ItemStacksBehindParent, d_ptr->z < qreal(0.0)); + } + if (d_ptr->scene) { d_ptr->scene->d_func()->markDirty(this, QRectF(), /*invalidateChildren=*/true, @@ -2202,11 +2216,10 @@ qreal QGraphicsItem::effectiveOpacity() const void QGraphicsItem::setOpacity(qreal opacity) { // Notify change. - const QVariant newOpacityVariant(itemChange(ItemOpacityChange, double(opacity))); - qreal newOpacity = newOpacityVariant.toDouble(); + const QVariant newOpacityVariant(itemChange(ItemOpacityChange, opacity)); - // Normalize. - newOpacity = qBound<qreal>(0.0, newOpacity, 1.0); + // Normalized opacity + qreal newOpacity = qBound(qreal(0), newOpacityVariant.toReal(), qreal(1)); // No change? Done. if (newOpacity == d_ptr->opacity) @@ -2625,13 +2638,11 @@ void QGraphicsItem::setFocusProxy(QGraphicsItem *item) } QGraphicsItem *lastFocusProxy = d_ptr->focusProxy; + if (lastFocusProxy) + lastFocusProxy->d_ptr->focusProxyRefs.removeOne(&d_ptr->focusProxy); d_ptr->focusProxy = item; - if (d_ptr->scene) { - if (lastFocusProxy) - d_ptr->scene->d_func()->focusProxyReverseMap.remove(lastFocusProxy, this); - if (item) - d_ptr->scene->d_func()->focusProxyReverseMap.insert(item, this); - } + if (item) + item->d_ptr->focusProxyRefs << &d_ptr->focusProxy; } /*! @@ -3708,8 +3719,8 @@ qreal QGraphicsItem::zValue() const */ void QGraphicsItem::setZValue(qreal z) { - const QVariant newZVariant(itemChange(ItemZValueChange, double(z))); - qreal newZ = qreal(newZVariant.toDouble()); + const QVariant newZVariant(itemChange(ItemZValueChange, z)); + qreal newZ = newZVariant.toReal(); if (newZ == d_ptr->z) return; @@ -3729,6 +3740,9 @@ void QGraphicsItem::setZValue(qreal z) itemChange(ItemZValueHasChanged, newZVariant); + if (d_ptr->flags & ItemNegativeZStacksBehindParent) + setFlag(QGraphicsItem::ItemStacksBehindParent, z < qreal(0.0)); + if (d_ptr->isObject) emit static_cast<QGraphicsObject *>(this)->zChanged(); } @@ -4638,6 +4652,19 @@ void QGraphicsItemPrivate::clearSubFocus() /*! \internal + Sets the focusProxy pointer to 0 for all items that have this item as their + focusProxy. ### Qt 5: Use QPointer instead. +*/ +void QGraphicsItemPrivate::resetFocusProxy() +{ + for (int i = 0; i < focusProxyRefs.size(); ++i) + *focusProxyRefs.at(i) = 0; + focusProxyRefs.clear(); +} + +/*! + \internal + Tells us if it is a proxy widget */ bool QGraphicsItemPrivate::isProxyWidget() const @@ -6828,11 +6855,12 @@ QGraphicsObject::QGraphicsObject(QGraphicsItemPrivate &dd, QGraphicsItem *parent By default, this property is true. - \sa QGraphicsItem::isEnabled(), QGraphicsItem::setEnabled(), enabledChanged() + \sa QGraphicsItem::isEnabled(), QGraphicsItem::setEnabled() + \sa QGraphicsObject::enabledChanged() */ /*! - \fn QGraphicsObject::enabledChanged() + \fn void QGraphicsObject::enabledChanged() This signal gets emitted whenever the item get's enabled or disabled. @@ -6884,7 +6912,7 @@ QGraphicsObject::QGraphicsObject(QGraphicsItemPrivate &dd, QGraphicsItem *parent \brief The QAbstractGraphicsShapeItem class provides a common base for all path items. \since 4.2 - \ingroup multimedia + \ingroup graphicsview-api This class does not fully implement an item by itself; in particular, it does not implement boundingRect() and paint(), which are inherited by @@ -7019,7 +7047,6 @@ QPainterPath QAbstractGraphicsShapeItem::opaqueArea() const \brief The QGraphicsPathItem class provides a path item that you can add to a QGraphicsScene. \since 4.2 - \ingroup multimedia \ingroup graphicsview-api To set the item's path, pass a QPainterPath to QGraphicsPathItem's @@ -7222,7 +7249,6 @@ QVariant QGraphicsPathItem::extension(const QVariant &variant) const \brief The QGraphicsRectItem class provides a rectangle item that you can add to a QGraphicsScene. \since 4.2 - \ingroup multimedia \ingroup graphicsview-api To set the item's rectangle, pass a QRectF to QGraphicsRectItem's @@ -7467,7 +7493,6 @@ QVariant QGraphicsRectItem::extension(const QVariant &variant) const \brief The QGraphicsEllipseItem class provides an ellipse item that you can add to a QGraphicsScene. \since 4.2 - \ingroup multimedia \ingroup graphicsview-api QGraphicsEllipseItem respresents an ellipse with a fill and an outline, @@ -7784,7 +7809,6 @@ QVariant QGraphicsEllipseItem::extension(const QVariant &variant) const \brief The QGraphicsPolygonItem class provides a polygon item that you can add to a QGraphicsScene. \since 4.2 - \ingroup multimedia \ingroup graphicsview-api To set the item's polygon, pass a QPolygonF to @@ -8018,7 +8042,6 @@ QVariant QGraphicsPolygonItem::extension(const QVariant &variant) const \brief The QGraphicsLineItem class provides a line item that you can add to a QGraphicsScene. \since 4.2 - \ingroup multimedia \ingroup graphicsview-api To set the item's line, pass a QLineF to QGraphicsLineItem's @@ -8280,7 +8303,6 @@ QVariant QGraphicsLineItem::extension(const QVariant &variant) const \brief The QGraphicsPixmapItem class provides a pixmap item that you can add to a QGraphicsScene. \since 4.2 - \ingroup multimedia \ingroup graphicsview-api To set the item's pixmap, pass a QPixmap to QGraphicsPixmapItem's @@ -8644,7 +8666,6 @@ QVariant QGraphicsPixmapItem::extension(const QVariant &variant) const \brief The QGraphicsTextItem class provides a text item that you can add to a QGraphicsScene to display formatted text. \since 4.2 - \ingroup multimedia \ingroup graphicsview-api If you only need to show plain text in an item, consider using QGraphicsSimpleTextItem @@ -9557,7 +9578,6 @@ void QGraphicsSimpleTextItemPrivate::updateBoundingRect() \brief The QGraphicsSimpleTextItem class provides a simple text path item that you can add to a QGraphicsScene. \since 4.2 - \ingroup multimedia \ingroup graphicsview-api To set the item's text, you can either pass a QString to @@ -9793,7 +9813,6 @@ QVariant QGraphicsSimpleTextItem::extension(const QVariant &variant) const \brief The QGraphicsItemGroup class provides treating a group of items as one. \since 4.2 - \ingroup multimedia \ingroup graphicsview-api A QGraphicsItemGroup is a special type of compound item that @@ -10147,6 +10166,9 @@ QDebug operator<<(QDebug debug, QGraphicsItem::GraphicsItemFlag flag) case QGraphicsItem::ItemAcceptsInputMethod: str = "ItemAcceptsInputMethod"; break; + case QGraphicsItem::ItemNegativeZStacksBehindParent: + str = "ItemNegativeZStacksBehindParent"; + break; case QGraphicsItem::ItemAutoDetectsFocusProxy: str = "ItemAutoDetectsFocusProxy"; break; diff --git a/src/gui/graphicsview/qgraphicsitem.h b/src/gui/graphicsview/qgraphicsitem.h index 622ca82..d34787d 100644 --- a/src/gui/graphicsview/qgraphicsitem.h +++ b/src/gui/graphicsview/qgraphicsitem.h @@ -102,7 +102,8 @@ public: ItemHasNoContents = 0x400, ItemSendsGeometryChanges = 0x800, ItemAcceptsInputMethod = 0x1000, - ItemAutoDetectsFocusProxy = 0x2000 + ItemAutoDetectsFocusProxy = 0x2000, + ItemNegativeZStacksBehindParent = 0x4000 // NB! Don't forget to increase the d_ptr->flags bit field by 1 when adding a new flag. }; Q_DECLARE_FLAGS(GraphicsItemFlags, GraphicsItemFlag) @@ -453,6 +454,7 @@ private: }; Q_DECLARE_OPERATORS_FOR_FLAGS(QGraphicsItem::GraphicsItemFlags) +Q_DECLARE_INTERFACE(QGraphicsItem, "com.trolltech.Qt.QGraphicsItem") inline void QGraphicsItem::setPos(qreal ax, qreal ay) { setPos(QPointF(ax, ay)); } @@ -505,9 +507,9 @@ class Q_GUI_EXPORT QGraphicsObject : public QObject, public QGraphicsItem Q_OBJECT Q_PROPERTY(QGraphicsObject * parent READ parentObject WRITE setParentItem NOTIFY parentChanged DESIGNABLE false) Q_PROPERTY(QString id READ objectName WRITE setObjectName) - Q_PROPERTY(qreal opacity READ opacity WRITE setOpacity NOTIFY opacityChanged) + Q_PROPERTY(qreal opacity READ opacity WRITE setOpacity NOTIFY opacityChanged FINAL) Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled NOTIFY enabledChanged) - Q_PROPERTY(bool visible READ isVisible WRITE setVisible NOTIFY visibleChanged) + Q_PROPERTY(bool visible READ isVisible WRITE setVisible NOTIFY visibleChanged FINAL) Q_PROPERTY(QPointF pos READ pos WRITE setPos) Q_PROPERTY(qreal x READ x WRITE setX NOTIFY xChanged) Q_PROPERTY(qreal y READ y WRITE setY NOTIFY yChanged) diff --git a/src/gui/graphicsview/qgraphicsitem_p.h b/src/gui/graphicsview/qgraphicsitem_p.h index 786a435..24326f6 100644 --- a/src/gui/graphicsview/qgraphicsitem_p.h +++ b/src/gui/graphicsview/qgraphicsitem_p.h @@ -95,7 +95,7 @@ public: void purge(); }; -class Q_AUTOTEST_EXPORT QGraphicsItemPrivate +class Q_GUI_EXPORT QGraphicsItemPrivate { Q_DECLARE_PUBLIC(QGraphicsItem) public: @@ -165,6 +165,7 @@ public: acceptedTouchBeginEvent(0), filtersDescendantEvents(0), sceneTransformTranslateOnly(0), + mouseSetsFocus(1), globalStackingOrder(-1), q_ptr(0) { @@ -201,7 +202,7 @@ public: virtual QVariant inputMethodQueryHelper(Qt::InputMethodQuery query) const; static bool movableAncestorIsSelected(const QGraphicsItem *item); - void setPosHelper(const QPointF &pos); + virtual void setPosHelper(const QPointF &pos); void setTransformHelper(const QTransform &transform); void appendGraphicsTransform(QGraphicsTransform *t); void setVisibleHelper(bool newVisible, bool explicitly, bool update = true); @@ -398,6 +399,7 @@ public: void setSubFocus(); void clearSubFocus(); + void resetFocusProxy(); inline QTransform transformToParent() const; inline void ensureSortedChildren(); @@ -419,6 +421,7 @@ public: int siblingIndex; int depth; QGraphicsItem *focusProxy; + QList<QGraphicsItem **> focusProxyRefs; QGraphicsItem *subFocusItem; Qt::InputMethodHints imHints; @@ -450,7 +453,7 @@ public: // New 32 bits quint32 fullUpdatePending : 1; - quint32 flags : 14; + quint32 flags : 15; quint32 dirtyChildrenBoundingRect : 1; quint32 paintedViewBoundingRectsNeedRepaint : 1; quint32 dirtySceneTransform : 1; @@ -463,7 +466,8 @@ public: quint32 acceptedTouchBeginEvent : 1; quint32 filtersDescendantEvents : 1; quint32 sceneTransformTranslateOnly : 1; - quint32 unused : 5; // feel free to use + quint32 mouseSetsFocus : 1; + quint32 unused : 3; // feel free to use // Optional stacking order int globalStackingOrder; diff --git a/src/gui/graphicsview/qgraphicsitemanimation.cpp b/src/gui/graphicsview/qgraphicsitemanimation.cpp index 0d7a3c6..c9b95ad 100644 --- a/src/gui/graphicsview/qgraphicsitemanimation.cpp +++ b/src/gui/graphicsview/qgraphicsitemanimation.cpp @@ -44,7 +44,6 @@ \brief The QGraphicsItemAnimation class provides simple animation support for QGraphicsItem. \since 4.2 - \ingroup multimedia \ingroup graphicsview-api The QGraphicsItemAnimation class animates a QGraphicsItem. You can diff --git a/src/gui/graphicsview/qgraphicslayout.cpp b/src/gui/graphicsview/qgraphicslayout.cpp index 3f039c6..58c174c 100644 --- a/src/gui/graphicsview/qgraphicslayout.cpp +++ b/src/gui/graphicsview/qgraphicslayout.cpp @@ -57,7 +57,6 @@ QT_BEGIN_NAMESPACE \brief The QGraphicsLayout class provides the base class for all layouts in Graphics View. \since 4.4 - \ingroup multimedia \ingroup graphicsview-api QGraphicsLayout is an abstract class that defines a virtual API for diff --git a/src/gui/graphicsview/qgraphicslayout.h b/src/gui/graphicsview/qgraphicslayout.h index d7e087b..1a21e53 100644 --- a/src/gui/graphicsview/qgraphicslayout.h +++ b/src/gui/graphicsview/qgraphicslayout.h @@ -85,6 +85,8 @@ private: friend class QGraphicsWidget; }; +Q_DECLARE_INTERFACE(QGraphicsLayout, "com.trolltech.Qt.QGraphicsLayout") + #endif QT_END_NAMESPACE diff --git a/src/gui/graphicsview/qgraphicslayoutitem.cpp b/src/gui/graphicsview/qgraphicslayoutitem.cpp index 46cf620..d33beaf 100644 --- a/src/gui/graphicsview/qgraphicslayoutitem.cpp +++ b/src/gui/graphicsview/qgraphicslayoutitem.cpp @@ -264,7 +264,6 @@ void QGraphicsLayoutItemPrivate::setSizeComponent( \brief The QGraphicsLayoutItem class can be inherited to allow your custom items to be managed by layouts. \since 4.4 - \ingroup multimedia \ingroup graphicsview-api QGraphicsLayoutItem is an abstract class that defines a set of virtual diff --git a/src/gui/graphicsview/qgraphicslayoutitem.h b/src/gui/graphicsview/qgraphicslayoutitem.h index 717777a..fb25e0c 100644 --- a/src/gui/graphicsview/qgraphicslayoutitem.h +++ b/src/gui/graphicsview/qgraphicslayoutitem.h @@ -122,6 +122,8 @@ private: friend class QGraphicsLayout; }; +Q_DECLARE_INTERFACE(QGraphicsLayoutItem, "com.trolltech.Qt.QGraphicsLayoutItem") + inline void QGraphicsLayoutItem::setMinimumSize(qreal aw, qreal ah) { setMinimumSize(QSizeF(aw, ah)); } inline void QGraphicsLayoutItem::setPreferredSize(qreal aw, qreal ah) diff --git a/src/gui/graphicsview/qgraphicslinearlayout.cpp b/src/gui/graphicsview/qgraphicslinearlayout.cpp index c0ff00e..185780a 100644 --- a/src/gui/graphicsview/qgraphicslinearlayout.cpp +++ b/src/gui/graphicsview/qgraphicslinearlayout.cpp @@ -44,7 +44,6 @@ \brief The QGraphicsLinearLayout class provides a horizontal or vertical layout for managing widgets in Graphics View. \since 4.4 - \ingroup multimedia \ingroup graphicsview-api The default orientation for a linear layout is Qt::Horizontal. You can diff --git a/src/gui/graphicsview/qgraphicsproxywidget.cpp b/src/gui/graphicsview/qgraphicsproxywidget.cpp index 784ee0e..4f626a2 100644 --- a/src/gui/graphicsview/qgraphicsproxywidget.cpp +++ b/src/gui/graphicsview/qgraphicsproxywidget.cpp @@ -67,7 +67,6 @@ QT_BEGIN_NAMESPACE \brief The QGraphicsProxyWidget class provides a proxy layer for embedding a QWidget in a QGraphicsScene. \since 4.4 - \ingroup multimedia \ingroup graphicsview-api QGraphicsProxyWidget embeds QWidget-based widgets, for example, a diff --git a/src/gui/graphicsview/qgraphicsscene.cpp b/src/gui/graphicsview/qgraphicsscene.cpp index 9b7dfe6..a2a92b8 100644 --- a/src/gui/graphicsview/qgraphicsscene.cpp +++ b/src/gui/graphicsview/qgraphicsscene.cpp @@ -44,9 +44,8 @@ \brief The QGraphicsScene class provides a surface for managing a large number of 2D graphical items. \since 4.2 - \ingroup multimedia \ingroup graphicsview-api - \mainclass + The class serves as a container for QGraphicsItems. It is used together with QGraphicsView for visualizing graphical items, such as lines, @@ -494,11 +493,7 @@ void QGraphicsScenePrivate::removeItemHelper(QGraphicsItem *item) item->d_func()->scene = 0; // Unregister focus proxy. - QMultiHash<QGraphicsItem *, QGraphicsItem *>::iterator it = focusProxyReverseMap.find(item); - while (it != focusProxyReverseMap.end() && it.key() == item) { - it.value()->d_ptr->focusProxy = 0; - it = focusProxyReverseMap.erase(it); - } + item->d_ptr->resetFocusProxy(); // Remove from parent, or unregister from toplevels. if (QGraphicsItem *parentItem = item->parentItem()) { @@ -1083,7 +1078,7 @@ void QGraphicsScenePrivate::mousePressEventHandler(QGraphicsSceneMouseEvent *mou // Set focus on the topmost enabled item that can take focus. bool setFocus = false; foreach (QGraphicsItem *item, cachedItemsUnderMouse) { - if (item->isEnabled() && (item->flags() & QGraphicsItem::ItemIsFocusable)) { + if (item->isEnabled() && ((item->flags() & QGraphicsItem::ItemIsFocusable) && item->d_ptr->mouseSetsFocus)) { if (!item->isWidget() || ((QGraphicsWidget *)item)->focusPolicy() & Qt::ClickFocus) { setFocus = true; if (item != q->focusItem()) @@ -3806,7 +3801,8 @@ void QGraphicsScene::wheelEvent(QGraphicsSceneWheelEvent *wheelEvent) bool hasSetFocus = false; foreach (QGraphicsItem *item, wheelCandidates) { - if (!hasSetFocus && item->isEnabled() && (item->flags() & QGraphicsItem::ItemIsFocusable)) { + if (!hasSetFocus && item->isEnabled() + && ((item->flags() & QGraphicsItem::ItemIsFocusable) && item->d_ptr->mouseSetsFocus)) { if (item->isWidget() && static_cast<QGraphicsWidget *>(item)->focusPolicy() == Qt::WheelFocus) { hasSetFocus = true; if (item != focusItem()) @@ -5302,7 +5298,7 @@ bool QGraphicsScenePrivate::sendTouchBeginEvent(QGraphicsItem *origin, QTouchEve // Set focus on the topmost enabled item that can take focus. bool setFocus = false; foreach (QGraphicsItem *item, cachedItemsUnderMouse) { - if (item->isEnabled() && (item->flags() & QGraphicsItem::ItemIsFocusable)) { + if (item->isEnabled() && ((item->flags() & QGraphicsItem::ItemIsFocusable) && item->d_ptr->mouseSetsFocus)) { if (!item->isWidget() || ((QGraphicsWidget *)item)->focusPolicy() & Qt::ClickFocus) { setFocus = true; if (item != q->focusItem()) diff --git a/src/gui/graphicsview/qgraphicsscene_p.h b/src/gui/graphicsview/qgraphicsscene_p.h index 8b53306..685f534 100644 --- a/src/gui/graphicsview/qgraphicsscene_p.h +++ b/src/gui/graphicsview/qgraphicsscene_p.h @@ -59,6 +59,7 @@ #include "qgraphicssceneevent.h" #include "qgraphicsview.h" +#include "qgraphicsview_p.h" #include "qgraphicsitem_p.h" #include <private/qobject_p.h> @@ -131,7 +132,6 @@ public: QGraphicsWidget *activeWindow; int activationRefCount; void setFocusItemHelper(QGraphicsItem *item, Qt::FocusReason focusReason); - QMultiHash<QGraphicsItem *, QGraphicsItem *> focusProxyReverseMap; QList<QGraphicsWidget *> popupWidgets; void addPopup(QGraphicsWidget *widget); diff --git a/src/gui/graphicsview/qgraphicsscenebsptreeindex.cpp b/src/gui/graphicsview/qgraphicsscenebsptreeindex.cpp index 37308f0..433d0a8 100644 --- a/src/gui/graphicsview/qgraphicsscenebsptreeindex.cpp +++ b/src/gui/graphicsview/qgraphicsscenebsptreeindex.cpp @@ -44,9 +44,8 @@ \brief The QGraphicsSceneBspTreeIndex class provides an implementation of a BSP indexing algorithm for discovering items in QGraphicsScene. \since 4.6 - \ingroup multimedia \ingroup graphicsview-api - \mainclass + \internal QGraphicsSceneBspTreeIndex index use a BSP(Binary Space Partitioning) diff --git a/src/gui/graphicsview/qgraphicssceneevent.cpp b/src/gui/graphicsview/qgraphicssceneevent.cpp index f04b241..3ec14c3 100644 --- a/src/gui/graphicsview/qgraphicssceneevent.cpp +++ b/src/gui/graphicsview/qgraphicssceneevent.cpp @@ -44,7 +44,6 @@ \brief The QGraphicsSceneEvent class provides a base class for all graphics view related events. \since 4.2 - \ingroup multimedia \ingroup graphicsview-api When a QGraphicsView receives Qt mouse, keyboard, and drag and @@ -86,7 +85,6 @@ \brief The QGraphicsSceneMouseEvent class provides mouse events in the graphics view framework. \since 4.2 - \ingroup multimedia \ingroup graphicsview-api When a QGraphicsView receives a QMouseEvent, it translates it to @@ -111,7 +109,6 @@ \brief The QGraphicsSceneWheelEvent class provides wheel events in the graphics view framework. \since 4.2 - \ingroup multimedia \ingroup graphicsview-api \l{QWheelEvent}{QWheelEvent}s received by a QGraphicsView are translated @@ -128,7 +125,6 @@ \brief The QGraphicsSceneContextMenuEvent class provides context menu events in the graphics view framework. \since 4.2 - \ingroup multimedia \ingroup graphicsview-api A QContextMenuEvent received by a QGraphicsView is translated @@ -160,7 +156,6 @@ \brief The QGraphicsSceneHoverEvent class provides hover events in the graphics view framework. \since 4.2 - \ingroup multimedia \ingroup graphicsview-api When a QGraphicsView receives a QHoverEvent event, it translates @@ -176,7 +171,6 @@ \brief The QGraphicsSceneHelpEvent class provides events when a tooltip is requested. \since 4.2 - \ingroup multimedia \ingroup graphicsview-api When a QGraphicsView receives a QEvent of type @@ -201,7 +195,6 @@ \brief The QGraphicsSceneDragDropEvent class provides events for drag and drop in the graphics view framework. \since 4.2 - \ingroup multimedia \ingroup graphicsview-api QGraphicsView inherits the drag and drop functionality provided @@ -226,7 +219,6 @@ \brief The QGraphicsSceneResizeEvent class provides events for widget resizing in the graphics view framework. \since 4.4 - \ingroup multimedia \ingroup graphicsview-api A QGraphicsWidget sends itself a QGraphicsSceneResizeEvent immediately @@ -243,7 +235,6 @@ \brief The QGraphicsSceneMoveEvent class provides events for widget moving in the graphics view framework. \since 4.4 - \ingroup multimedia \ingroup graphicsview-api A QGraphicsWidget sends itself a QGraphicsSceneMoveEvent immediately when diff --git a/src/gui/graphicsview/qgraphicssceneindex.cpp b/src/gui/graphicsview/qgraphicssceneindex.cpp index 37a2fc3..feb44bb 100644 --- a/src/gui/graphicsview/qgraphicssceneindex.cpp +++ b/src/gui/graphicsview/qgraphicssceneindex.cpp @@ -43,9 +43,8 @@ \brief The QGraphicsSceneIndex class provides a base class to implement a custom indexing algorithm for discovering items in QGraphicsScene. \since 4.6 - \ingroup multimedia \ingroup graphicsview-api - \mainclass + \internal The QGraphicsSceneIndex class provides a base class to implement diff --git a/src/gui/graphicsview/qgraphicstransform.cpp b/src/gui/graphicsview/qgraphicstransform.cpp index 005460e..edfcf8a 100644 --- a/src/gui/graphicsview/qgraphicstransform.cpp +++ b/src/gui/graphicsview/qgraphicstransform.cpp @@ -44,6 +44,7 @@ \brief The QGraphicsTransform class is an abstract base class for building advanced transformations on QGraphicsItems. \since 4.6 + \ingroup graphicsview-api As an alternative to QGraphicsItem::transform, QGraphicsTransform lets you create and control advanced transformations that can be configured diff --git a/src/gui/graphicsview/qgraphicsview.cpp b/src/gui/graphicsview/qgraphicsview.cpp index f9700c5..07dc6ad 100644 --- a/src/gui/graphicsview/qgraphicsview.cpp +++ b/src/gui/graphicsview/qgraphicsview.cpp @@ -48,9 +48,8 @@ static const int QGRAPHICSVIEW_PREALLOC_STYLE_OPTIONS = 503; // largest prime < \brief The QGraphicsView class provides a widget for displaying the contents of a QGraphicsScene. \since 4.2 - \ingroup multimedia \ingroup graphicsview-api - \mainclass + QGraphicsView visualizes the contents of a QGraphicsScene in a scrollable viewport. To create a scene with geometrical items, see QGraphicsScene's @@ -493,8 +492,8 @@ void QGraphicsViewPrivate::centerView(QGraphicsView::ViewportAnchor anchor) // Last scene pos: lastMouseMoveScenePoint // Current mouse pos: QPointF transformationDiff = q->mapToScene(viewport->rect().center()) - - q->mapToScene(q->mapFromGlobal(QCursor::pos())); - q->centerOn(lastMouseMoveScenePoint + transformationDiff);; + - q->mapToScene(viewport->mapFromGlobal(QCursor::pos())); + q->centerOn(lastMouseMoveScenePoint + transformationDiff); } else { q->centerOn(lastCenterPoint); } diff --git a/src/gui/graphicsview/qgraphicswidget.cpp b/src/gui/graphicsview/qgraphicswidget.cpp index b3cf547..157fbe5 100644 --- a/src/gui/graphicsview/qgraphicswidget.cpp +++ b/src/gui/graphicsview/qgraphicswidget.cpp @@ -74,7 +74,6 @@ QT_BEGIN_NAMESPACE \brief The QGraphicsWidget class is the base class for all widget items in a QGraphicsScene. \since 4.4 - \ingroup multimedia \ingroup graphicsview-api QGraphicsWidget is an extended base item that provides extra functionality @@ -258,7 +257,7 @@ QGraphicsWidget::~QGraphicsWidget() //we check if we have a layout previously if (d->layout) { - delete d->layout; + QGraphicsLayout *temp = d->layout; foreach (QGraphicsItem * item, childItems()) { // In case of a custom layout which doesn't remove and delete items, we ensure that // the parent layout item does not point to the deleted layout. This code is here to @@ -269,6 +268,8 @@ QGraphicsWidget::~QGraphicsWidget() widget->setParentLayoutItem(0); } } + d->layout = 0; + delete temp; } // Remove this graphics widget from widgetStyles diff --git a/src/gui/graphicsview/qgraphicswidget.h b/src/gui/graphicsview/qgraphicswidget.h index ad16685..ea8e78e 100644 --- a/src/gui/graphicsview/qgraphicswidget.h +++ b/src/gui/graphicsview/qgraphicswidget.h @@ -69,6 +69,7 @@ class QGraphicsWidgetPrivate; class Q_GUI_EXPORT QGraphicsWidget : public QGraphicsObject, public QGraphicsLayoutItem { Q_OBJECT + Q_INTERFACES(QGraphicsItem QGraphicsLayoutItem) Q_PROPERTY(QPalette palette READ palette WRITE setPalette) Q_PROPERTY(QFont font READ font WRITE setFont) Q_PROPERTY(Qt::LayoutDirection layoutDirection READ layoutDirection WRITE setLayoutDirection RESET unsetLayoutDirection) diff --git a/src/gui/image/image.pri b/src/gui/image/image.pri index 1010f7f..0970385 100644 --- a/src/gui/image/image.pri +++ b/src/gui/image/image.pri @@ -92,7 +92,7 @@ SOURCES += \ SOURCES += image/qpnghandler.cpp contains(QT_CONFIG, system-png) { - unix:LIBS += -lpng + unix:LIBS_PRIVATE += -lpng win32:LIBS += libpng.lib } else { !isEqual(QT_ARCH, i386):!isEqual(QT_ARCH, x86_64):DEFINES += PNG_NO_ASSEMBLER_CODE diff --git a/src/gui/image/qbitmap.cpp b/src/gui/image/qbitmap.cpp index 5827dc1..e239022 100644 --- a/src/gui/image/qbitmap.cpp +++ b/src/gui/image/qbitmap.cpp @@ -53,7 +53,7 @@ QT_BEGIN_NAMESPACE \class QBitmap \brief The QBitmap class provides monochrome (1-bit depth) pixmaps. - \ingroup multimedia + \ingroup painting \ingroup shared The QBitmap class is a monochrome off-screen paint device used diff --git a/src/gui/image/qicon.cpp b/src/gui/image/qicon.cpp index 0d854d0..5a88e29 100644 --- a/src/gui/image/qicon.cpp +++ b/src/gui/image/qicon.cpp @@ -445,9 +445,9 @@ Q_GLOBAL_STATIC_WITH_ARGS(QFactoryLoader, loaderV2, \brief The QIcon class provides scalable icons in different modes and states. - \ingroup multimedia + \ingroup painting \ingroup shared - \mainclass + A QIcon can generate smaller, larger, active, and disabled pixmaps from the set of pixmaps it is given. Such pixmaps are used by Qt @@ -871,7 +871,7 @@ QList<QSize> QIcon::availableSizes(Mode mode, State state) const \since 4.6 Sets the search paths for icon themes to \a paths. - \sa themeSearchPaths(), fromTheme() + \sa themeSearchPaths(), fromTheme(), setThemeName() */ void QIcon::setThemeSearchPaths(const QStringList &paths) { @@ -893,7 +893,7 @@ void QIcon::setThemeSearchPaths(const QStringList &paths) On Mac the default search path will search in the [Contents/Resources/icons] part of the application bundle. - \sa setThemeSearchPaths(), fromTheme() + \sa setThemeSearchPaths(), fromTheme(), setThemeName() */ QStringList QIcon::themeSearchPaths() { @@ -903,16 +903,17 @@ QStringList QIcon::themeSearchPaths() /*! \since 4.6 - Sets the current icon theme. + Sets the current icon theme to \a name. - The name should correspond to a directory name in the - current \ themeSearchPath() containing an index.theme - file describing it's contents.. + The \a name should correspond to a directory name in the + current themeSearchPath() containing an index.theme + file describing it's contents. + \sa themeSearchPaths(), themeName() */ -void QIcon::setThemeName(const QString &path) +void QIcon::setThemeName(const QString &name) { - QIconLoader::instance()->setThemeName(path); + QIconLoader::instance()->setThemeName(name); } /*! @@ -923,7 +924,8 @@ void QIcon::setThemeName(const QString &path) On X11, the current icon theme depends on your desktop settings. On other platforms it is not set by default. - \sa themeSearchPaths(), fromTheme(), hasThemeIcon() + \sa setThemeName(), themeSearchPaths(), fromTheme(), + hasThemeIcon() */ QString QIcon::themeName() { @@ -960,7 +962,7 @@ QString QIcon::themeName() compliant theme in one of your themeSearchPaths() and set the appropriate themeName(). - \sa themeName(), themeSearchPaths() + \sa themeName(), setThemeName(), themeSearchPaths() */ QIcon QIcon::fromTheme(const QString &name, const QIcon &fallback) { @@ -994,10 +996,10 @@ QIcon QIcon::fromTheme(const QString &name, const QIcon &fallback) /*! \since 4.6 - Returns true if there is an icon available for a \a name in the current - icon theme, otherwise returns false. + Returns true if there is an icon available for \a name in the + current icon theme, otherwise returns false. - \sa themeSearchPaths(), fromTheme() + \sa themeSearchPaths(), fromTheme(), setThemeName() */ bool QIcon::hasThemeIcon(const QString &name) { diff --git a/src/gui/image/qiconengine.cpp b/src/gui/image/qiconengine.cpp index 8e39607..930834d 100644 --- a/src/gui/image/qiconengine.cpp +++ b/src/gui/image/qiconengine.cpp @@ -49,7 +49,7 @@ QT_BEGIN_NAMESPACE \brief The QIconEngine class provides an abstract base class for QIcon renderers. - \ingroup multimedia + \ingroup painting \bold {Use QIconEngineV2 instead.} @@ -144,7 +144,7 @@ void QIconEngine::addFile(const QString &/*fileName*/, const QSize &/*size*/, QI \brief The QIconEngineV2 class provides an abstract base class for QIcon renderers. - \ingroup multimedia + \ingroup painting \since 4.3 An icon engine renders \l{QIcon}s. With icon engines, you can diff --git a/src/gui/image/qimage.cpp b/src/gui/image/qimage.cpp index 5e635d6..86e27bd 100644 --- a/src/gui/image/qimage.cpp +++ b/src/gui/image/qimage.cpp @@ -61,11 +61,7 @@ #include <qhash.h> -#ifdef QT_RASTER_IMAGEENGINE #include <private/qpaintengine_raster_p.h> -#else -#include <qpaintengine.h> -#endif #include <private/qimage_p.h> @@ -343,9 +339,9 @@ bool QImageData::checkForAlphaPixels() const /*! \class QImage - \ingroup multimedia + \ingroup painting \ingroup shared - \mainclass + \reentrant \brief The QImage class provides a hardware-independent image @@ -5254,11 +5250,10 @@ QPaintEngine *QImage::paintEngine() const if (!d) return 0; -#ifdef QT_RASTER_IMAGEENGINE if (!d->paintEngine) { d->paintEngine = new QRasterPaintEngine(const_cast<QImage *>(this)); } -#endif + return d->paintEngine; } diff --git a/src/gui/image/qimagereader.cpp b/src/gui/image/qimagereader.cpp index 06c8f21..b127de7 100644 --- a/src/gui/image/qimagereader.cpp +++ b/src/gui/image/qimagereader.cpp @@ -47,7 +47,7 @@ for reading images from files or other devices. \reentrant - \ingroup multimedia + \ingroup painting \ingroup io The most common way to read images is through QImage and QPixmap's diff --git a/src/gui/image/qimagewriter.cpp b/src/gui/image/qimagewriter.cpp index c734169..1f06493 100644 --- a/src/gui/image/qimagewriter.cpp +++ b/src/gui/image/qimagewriter.cpp @@ -45,7 +45,7 @@ for writing images to files or other devices. \reentrant - \ingroup multimedia + \ingroup painting \ingroup io QImageWriter supports setting format specific options, such as the diff --git a/src/gui/image/qmovie.cpp b/src/gui/image/qmovie.cpp index 2265e7b..179e6bb 100644 --- a/src/gui/image/qmovie.cpp +++ b/src/gui/image/qmovie.cpp @@ -45,7 +45,7 @@ \brief The QMovie class is a convenience class for playing movies with QImageReader. - \ingroup multimedia + \ingroup painting First, create a QMovie object by passing either the name of a file or a pointer to a QIODevice containing an animated image format to QMovie's @@ -356,7 +356,7 @@ QFrameInfo QMoviePrivate::infoForFrame(int frameNumber) reader = new QImageReader(device, format); else reader = new QImageReader(absoluteFilePath, format); - reader->canRead(); // Provoke a device->open() call + (void)reader->canRead(); // Provoke a device->open() call reader->device()->seek(initialDevicePos); reader->setBackgroundColor(bgColor); reader->setScaledSize(scaledSize); diff --git a/src/gui/image/qpicture.cpp b/src/gui/image/qpicture.cpp index 2dcb9c7..1136a97 100644 --- a/src/gui/image/qpicture.cpp +++ b/src/gui/image/qpicture.cpp @@ -69,9 +69,9 @@ void qt_format_text(const QFont &fnt, const QRectF &_r, \brief The QPicture class is a paint device that records and replays QPainter commands. - \ingroup multimedia + \ingroup painting \ingroup shared - \mainclass + A picture serializes painter commands to an IO device in a platform-independent format. They are sometimes referred to as meta-files. @@ -1303,7 +1303,7 @@ QList<QByteArray> QPicture::outputFormats() \brief The QPictureIO class contains parameters for loading and saving pictures. - \ingroup multimedia + \ingroup painting \ingroup io QPictureIO contains a QIODevice object that is used for picture data diff --git a/src/gui/image/qpixmap.cpp b/src/gui/image/qpixmap.cpp index 8259c6f..79b1f17 100644 --- a/src/gui/image/qpixmap.cpp +++ b/src/gui/image/qpixmap.cpp @@ -1565,9 +1565,9 @@ QPixmap QPixmap::transformed(const QMatrix &matrix, Qt::TransformationMode mode) \brief The QPixmap class is an off-screen image representation that can be used as a paint device. - \ingroup multimedia + \ingroup painting \ingroup shared - \mainclass + Qt provides four classes for handling image data: QImage, QPixmap, QBitmap and QPicture. QImage is designed and optimized for I/O, diff --git a/src/gui/image/qpixmap_mac.cpp b/src/gui/image/qpixmap_mac.cpp index 8c911bb..5959da1 100644 --- a/src/gui/image/qpixmap_mac.cpp +++ b/src/gui/image/qpixmap_mac.cpp @@ -38,7 +38,6 @@ ** $QT_END_LICENSE$ ** ****************************************************************************/ -//#define QT_RASTER_PAINTENGINE #include "qpixmap.h" #include "qimage.h" @@ -52,9 +51,6 @@ #include <private/qdrawhelper_p.h> #include <private/qpixmap_mac_p.h> #include <private/qpixmap_raster_p.h> -#ifdef QT_RASTER_PAINTENGINE -# include <private/qpaintengine_raster_p.h> -#endif #include <private/qpaintengine_mac_p.h> #include <private/qt_mac_p.h> #include <private/qt_cocoa_helpers_mac_p.h> @@ -1098,14 +1094,7 @@ QPaintEngine* QMacPixmapData::paintEngine() const { if (!pengine) { QMacPixmapData *that = const_cast<QMacPixmapData*>(this); -#ifdef QT_RASTER_PAINTENGINE - if (qgetenv("QT_MAC_USE_COREGRAPHICS").isNull()) - that->pengine = new QRasterPaintEngine(); - else - that->pengine = new QCoreGraphicsPaintEngine(); -#else that->pengine = new QCoreGraphicsPaintEngine(); -#endif } return pengine; } diff --git a/src/gui/image/qpixmapcache.cpp b/src/gui/image/qpixmapcache.cpp index 5f0564e..b8d6ac1 100644 --- a/src/gui/image/qpixmapcache.cpp +++ b/src/gui/image/qpixmapcache.cpp @@ -51,8 +51,7 @@ QT_BEGIN_NAMESPACE \brief The QPixmapCache class provides an application-wide cache for pixmaps. - \ingroup environment - \ingroup multimedia + \ingroup painting This class is a tool for optimized drawing with QPixmap. You can use it to store temporary pixmaps that are expensive to generate diff --git a/src/gui/image/qpixmapfilter.cpp b/src/gui/image/qpixmapfilter.cpp index cd80b10..968ecd7 100644 --- a/src/gui/image/qpixmapfilter.cpp +++ b/src/gui/image/qpixmapfilter.cpp @@ -65,7 +65,7 @@ public: /*! \class QPixmapFilter \since 4.5 - \ingroup multimedia + \ingroup painting \brief The QPixmapFilter class provides the basic functionality for pixmap filter classes. Pixmap filter can be for example colorize or blur. @@ -172,7 +172,7 @@ QRectF QPixmapFilter::boundingRectFor(const QRectF &rect) const /*! \class QPixmapConvolutionFilter \since 4.5 - \ingroup multimedia + \ingroup painting \brief The QPixmapConvolutionFilter class provides convolution filtering for pixmaps. @@ -517,7 +517,7 @@ static void grayscale(const QImage &image, QImage &dest, const QRect& rect = QRe /*! \class QPixmapColorizeFilter \since 4.5 - \ingroup multimedia + \ingroup painting \brief The QPixmapColorizeFilter class provides colorizing filtering for pixmaps. @@ -641,7 +641,7 @@ public: /*! \class QPixmapDropShadowFilter \since 4.5 - \ingroup multimedia + \ingroup painting \brief The QPixmapDropShadowFilter class is a convenience class for drawing pixmaps with drop shadows. diff --git a/src/gui/image/qpnghandler.cpp b/src/gui/image/qpnghandler.cpp index e3475d6..64bc5d3 100644 --- a/src/gui/image/qpnghandler.cpp +++ b/src/gui/image/qpnghandler.cpp @@ -956,7 +956,7 @@ QVariant QPngHandler::option(ImageOption option) const void QPngHandler::setOption(ImageOption option, const QVariant &value) { if (option == Gamma) - d->gamma = value.toDouble(); + d->gamma = value.toFloat(); else if (option == Quality) d->quality = value.toInt(); else if (option == Description) diff --git a/src/gui/image/qppmhandler.cpp b/src/gui/image/qppmhandler.cpp index 77ccb48..ed8f4c1 100644 --- a/src/gui/image/qppmhandler.cpp +++ b/src/gui/image/qppmhandler.cpp @@ -80,7 +80,7 @@ static int read_pbm_int(QIODevice *d) else if (isspace((uchar) c)) continue; else if (c == '#') - d->readLine(buf, buflen); + (void)d->readLine(buf, buflen); else break; } diff --git a/src/gui/inputmethod/qinputcontextfactory.cpp b/src/gui/inputmethod/qinputcontextfactory.cpp index 6279bed..5b8e5d0 100644 --- a/src/gui/inputmethod/qinputcontextfactory.cpp +++ b/src/gui/inputmethod/qinputcontextfactory.cpp @@ -89,7 +89,6 @@ Q_GLOBAL_STATIC_WITH_ARGS(QFactoryLoader, loader, \class QInputContextFactory \brief The QInputContextFactory class creates QInputContext objects. - \ingroup appearance The input context factory creates a QInputContext object for a given key with QInputContextFactory::create(). diff --git a/src/gui/itemviews/qabstractitemdelegate.cpp b/src/gui/itemviews/qabstractitemdelegate.cpp index 22b96fc..447538a 100644 --- a/src/gui/itemviews/qabstractitemdelegate.cpp +++ b/src/gui/itemviews/qabstractitemdelegate.cpp @@ -61,7 +61,7 @@ QT_BEGIN_NAMESPACE data items from a model. \ingroup model-view - \mainclass + A QAbstractItemDelegate provides the interface and common functionality for delegates in the model/view architecture. Delegates display diff --git a/src/gui/itemviews/qabstractitemview.cpp b/src/gui/itemviews/qabstractitemview.cpp index 78f81cb..8f8eae5 100644 --- a/src/gui/itemviews/qabstractitemview.cpp +++ b/src/gui/itemviews/qabstractitemview.cpp @@ -74,6 +74,7 @@ QAbstractItemViewPrivate::QAbstractItemViewPrivate() currentlyCommittingEditor(0), pressedModifiers(Qt::NoModifier), pressedPosition(QPoint(-1, -1)), + pressedAlreadySelected(false), viewportEnteredNeeded(false), state(QAbstractItemView::NoState), editTriggers(QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed), @@ -166,7 +167,7 @@ void QAbstractItemViewPrivate::checkMouseMove(const QPersistentModelIndex &index item view classes. \ingroup model-view - \mainclass + QAbstractItemView class is the base class for every standard view that uses a QAbstractItemModel. QAbstractItemView is an abstract @@ -584,7 +585,7 @@ void QAbstractItemView::setModel(QAbstractItemModel *model) "QAbstractItemView::setModel", "The parent of a top level index should be invalid"); - if (d->model && d->model != QAbstractItemModelPrivate::staticEmptyModel()) { + if (d->model != QAbstractItemModelPrivate::staticEmptyModel()) { connect(d->model, SIGNAL(destroyed()), this, SLOT(_q_modelDestroyed())); connect(d->model, SIGNAL(dataChanged(QModelIndex,QModelIndex)), diff --git a/src/gui/itemviews/qcolumnview.cpp b/src/gui/itemviews/qcolumnview.cpp index fd8106f..9597656 100644 --- a/src/gui/itemviews/qcolumnview.cpp +++ b/src/gui/itemviews/qcolumnview.cpp @@ -63,7 +63,7 @@ QT_BEGIN_NAMESPACE \brief The QColumnView class provides a model/view implementation of a column view. \ingroup model-view \ingroup advanced - \mainclass + QColumnView displays a model in a number of QListViews, one for each hierarchy in the tree. This is sometimes referred to as a cascading list. diff --git a/src/gui/itemviews/qheaderview.cpp b/src/gui/itemviews/qheaderview.cpp index efbddde..5d3bb12 100644 --- a/src/gui/itemviews/qheaderview.cpp +++ b/src/gui/itemviews/qheaderview.cpp @@ -88,7 +88,7 @@ QDataStream &operator>>(QDataStream &in, QHeaderViewPrivate::SectionSpan &span) item views. \ingroup model-view - \mainclass + A QHeaderView displays the headers used in item views such as the QTableView and QTreeView classes. It takes the place of Qt3's \c QHeader @@ -2615,7 +2615,7 @@ void QHeaderView::dataChanged(const QModelIndex &topLeft, const QModelIndex &bot int first = orientation() == Qt::Horizontal ? topLeft.column() : topLeft.row(); int last = orientation() == Qt::Horizontal ? bottomRight.column() : bottomRight.row(); for (int i = first; i <= last && !resizeRequired; ++i) - resizeRequired = (resizeRequired && resizeMode(i)); + resizeRequired = (resizeMode(i) == ResizeToContents); if (resizeRequired) d->doDelayedResizeSections(); } diff --git a/src/gui/itemviews/qitemdelegate.cpp b/src/gui/itemviews/qitemdelegate.cpp index 3e42ea6..5b69f44 100644 --- a/src/gui/itemviews/qitemdelegate.cpp +++ b/src/gui/itemviews/qitemdelegate.cpp @@ -185,7 +185,7 @@ QSizeF QItemDelegatePrivate::doTextLayout(int lineWidth) const data items from a model. \ingroup model-view - \mainclass + QItemDelegate can be used to provide custom display features and editor widgets for item views based on QAbstractItemView subclasses. Using a @@ -352,7 +352,10 @@ void QItemDelegate::setClipping(bool clip) QString QItemDelegatePrivate::valueToText(const QVariant &value, const QStyleOptionViewItemV4 &option) { QString text; - switch (value.type()) { + switch (value.userType()) { + case QMetaType::Float: + text = option.locale.toString(value.toFloat(), 'g'); + break; case QVariant::Double: text = option.locale.toString(value.toDouble(), 'g', DBL_DIG); break; @@ -719,8 +722,6 @@ void QItemDelegate::drawDisplay(QPainter *painter, const QStyleOptionViewItem &o //let's add the last line (after the last QChar::LineSeparator) elided += option.fontMetrics.elidedText(text.mid(start), option.textElideMode, textRect.width()); - if (end != -1) - elided += QChar::LineSeparator; } d->textLayout.setText(elided); textLayoutSize = d->doTextLayout(textRect.width()); diff --git a/src/gui/itemviews/qitemselectionmodel_p.h b/src/gui/itemviews/qitemselectionmodel_p.h index 6e1046c..e9e6bb1 100644 --- a/src/gui/itemviews/qitemselectionmodel_p.h +++ b/src/gui/itemviews/qitemselectionmodel_p.h @@ -65,7 +65,7 @@ public: QItemSelectionModelPrivate() : model(0), currentCommand(QItemSelectionModel::NoUpdate), - tableSelected(false) {} + tableSelected(false), tableColCount(0), tableRowCount(0) {} QItemSelection expandSelection(const QItemSelection &selection, QItemSelectionModel::SelectionFlags command) const; diff --git a/src/gui/itemviews/qlistview.cpp b/src/gui/itemviews/qlistview.cpp index 945d5e7..ea38f5f 100644 --- a/src/gui/itemviews/qlistview.cpp +++ b/src/gui/itemviews/qlistview.cpp @@ -66,7 +66,7 @@ QT_BEGIN_NAMESPACE \ingroup model-view \ingroup advanced - \mainclass + A QListView presents items stored in a model, either as a simple non-hierarchical list, or as a collection of icons. This class is used @@ -1957,7 +1957,6 @@ bool QListView::event(QEvent *e) QListViewPrivate::QListViewPrivate() : QAbstractItemViewPrivate(), dynamicListView(0), - staticListView(0), wrap(false), space(0), flow(QListView::TopToBottom), @@ -1968,14 +1967,17 @@ QListViewPrivate::QListViewPrivate() modeProperties(0), column(0), uniformItemSizes(false), - batchSize(100) + batchSize(100), + showElasticBand(false) { } QListViewPrivate::~QListViewPrivate() { - delete staticListView; - delete dynamicListView; + if (viewMode == QListView::ListMode) + delete staticListView; + else + delete dynamicListView; } void QListViewPrivate::clear() diff --git a/src/gui/itemviews/qlistview_p.h b/src/gui/itemviews/qlistview_p.h index 1131059..6c8d324 100644 --- a/src/gui/itemviews/qlistview_p.h +++ b/src/gui/itemviews/qlistview_p.h @@ -351,9 +351,10 @@ public: QItemViewPaintPairs draggablePaintPairs(const QModelIndexList &indexes, QRect *r) const; - // ### FIXME: we only need one at a time - QDynamicListViewBase *dynamicListView; - QStaticListViewBase *staticListView; + union { + QDynamicListViewBase *dynamicListView; + QStaticListViewBase *staticListView; + }; // ### FIXME: see if we can move the members into the dynamic/static classes diff --git a/src/gui/itemviews/qlistwidget.cpp b/src/gui/itemviews/qlistwidget.cpp index 2792bbd..232b4d2 100644 --- a/src/gui/itemviews/qlistwidget.cpp +++ b/src/gui/itemviews/qlistwidget.cpp @@ -708,9 +708,7 @@ QVariant QListWidgetItem::data(int role) const bool QListWidgetItem::operator<(const QListWidgetItem &other) const { const QVariant v1 = data(Qt::DisplayRole), v2 = other.data(Qt::DisplayRole); - if (QAbstractItemModelPrivate::canConvertToDouble(v1) && QAbstractItemModelPrivate::canConvertToDouble(v2)) - return v1.toDouble() < v2.toDouble(); - return v1.toString() < v2.toString(); + return QAbstractItemModelPrivate::variantLessThan(v1, v2); } #ifndef QT_NO_DATASTREAM @@ -1127,7 +1125,7 @@ void QListWidgetPrivate::_q_dataChanged(const QModelIndex &topLeft, \brief The QListWidget class provides an item-based list widget. \ingroup model-view - \mainclass + QListWidget is a convenience class that provides a list view similar to the one supplied by QListView, but with a classic item-based interface for diff --git a/src/gui/itemviews/qlistwidget_p.h b/src/gui/itemviews/qlistwidget_p.h index 124222c..0851e20 100644 --- a/src/gui/itemviews/qlistwidget_p.h +++ b/src/gui/itemviews/qlistwidget_p.h @@ -163,7 +163,6 @@ class QListWidgetItemPrivate public: QListWidgetItemPrivate(QListWidgetItem *item) : q(item), theid(-1) {} QListWidgetItem *q; - int id; QVector<QWidgetItemData> values; int theid; }; diff --git a/src/gui/itemviews/qsortfilterproxymodel.cpp b/src/gui/itemviews/qsortfilterproxymodel.cpp index d39506d..d173efe 100644 --- a/src/gui/itemviews/qsortfilterproxymodel.cpp +++ b/src/gui/itemviews/qsortfilterproxymodel.cpp @@ -1278,82 +1278,76 @@ void QSortFilterProxyModelPrivate::_q_sourceColumnsRemoved( /*! \since 4.1 \class QSortFilterProxyModel - \brief The QSortFilterProxyModel class provides support for sorting and filtering data passed - between another model and a view. + \brief The QSortFilterProxyModel class provides support for sorting and + filtering data passed between another model and a view. \ingroup model-view - QSortFilterProxyModel can be used for sorting items, filtering - out items, or both. The model transforms the structure of a - source model by mapping the model indexes it supplies to new - indexes, corresponding to different locations, for views to use. - This approach allows a given source model to be restructured as - far as views are concerned without requiring any transformations - on the underlying data, and without duplicating the data in + QSortFilterProxyModel can be used for sorting items, filtering out items, + or both. The model transforms the structure of a source model by mapping + the model indexes it supplies to new indexes, corresponding to different + locations, for views to use. This approach allows a given source model to + be restructured as far as views are concerned without requiring any + transformations on the underlying data, and without duplicating the data in memory. - Let's assume that we want to sort and filter the items provided - by a custom model. The code to set up the model and the view, \e - without sorting and filtering, would look like this: + Let's assume that we want to sort and filter the items provided by a custom + model. The code to set up the model and the view, \e without sorting and + filtering, would look like this: \snippet doc/src/snippets/qsortfilterproxymodel-details/main.cpp 1 - To add sorting and filtering support to \c MyItemModel, we need - to create a QSortFilterProxyModel, call setSourceModel() with the - \c MyItemModel as argument, and install the QSortFilterProxyModel - on the view: + To add sorting and filtering support to \c MyItemModel, we need to create + a QSortFilterProxyModel, call setSourceModel() with the \c MyItemModel as + argument, and install the QSortFilterProxyModel on the view: \snippet doc/src/snippets/qsortfilterproxymodel-details/main.cpp 0 \snippet doc/src/snippets/qsortfilterproxymodel-details/main.cpp 2 - At this point, neither sorting nor filtering is enabled; the - original data is displayed in the view. Any changes made through - the QSortFilterProxyModel are applied to the original model. + At this point, neither sorting nor filtering is enabled; the original data + is displayed in the view. Any changes made through the + QSortFilterProxyModel are applied to the original model. - The QSortFilterProxyModel acts as a wrapper for the original - model. If you need to convert source \l{QModelIndex}es to - sorted/filtered model indexes or vice versa, use mapToSource(), - mapFromSource(), mapSelectionToSource(), and - mapSelectionFromSource(). + The QSortFilterProxyModel acts as a wrapper for the original model. If you + need to convert source \l{QModelIndex}es to sorted/filtered model indexes + or vice versa, use mapToSource(), mapFromSource(), mapSelectionToSource(), + and mapSelectionFromSource(). - \note By default, the model does not dynamically re-sort and re-filter - data whenever the original model changes. This behavior can be - changed by setting the \l{QSortFilterProxyModel::dynamicSortFilter} - {dynamicSortFilter} property. + \note By default, the model does not dynamically re-sort and re-filter data + whenever the original model changes. This behavior can be changed by + setting the \l{QSortFilterProxyModel::dynamicSortFilter}{dynamicSortFilter} + property. - The \l{itemviews/basicsortfiltermodel}{Basic Sort/Filter Model} - and \l{itemviews/customsortfiltermodel}{Custom Sort/Filter Model} - examples illustrate how to use QSortFilterProxyModel to perform - basic sorting and filtering and how to subclass it to implement - custom behavior. + The \l{itemviews/basicsortfiltermodel}{Basic Sort/Filter Model} and + \l{itemviews/customsortfiltermodel}{Custom Sort/Filter Model} examples + illustrate how to use QSortFilterProxyModel to perform basic sorting and + filtering and how to subclass it to implement custom behavior. \section1 Sorting QTableView and QTreeView have a - \l{QTreeView::sortingEnabled}{sortingEnabled} property that - controls whether the user can sort the view by clicking the - view's horizontal header. For example: + \l{QTreeView::sortingEnabled}{sortingEnabled} property that controls + whether the user can sort the view by clicking the view's horizontal + header. For example: \snippet doc/src/snippets/qsortfilterproxymodel-details/main.cpp 3 - When this feature is on (the default is off), clicking on a - header section sorts the items according to that column. By - clicking repeatedly, the user can alternate between ascending and - descending order. + When this feature is on (the default is off), clicking on a header section + sorts the items according to that column. By clicking repeatedly, the user + can alternate between ascending and descending order. \image qsortfilterproxymodel-sorting.png A sorted QTreeView - Behind the scene, the view calls the sort() virtual function on - the model to reorder the data in the model. To make your data - sortable, you can either implement sort() in your model, or you - use a QSortFilterProxyModel to wrap your model -- - QSortFilterProxyModel provides a generic sort() reimplementation - that operates on the sortRole() (Qt::DisplayRole by default) of - the items and that understands several data types, including \c - int, QString, and QDateTime. For hierarchical models, sorting is - applied recursively to all child items. String comparisons are - case sensitive by default; this can be changed by setting the - \l{QSortFilterProxyModel::}{sortCaseSensitivity} property. + Behind the scene, the view calls the sort() virtual function on the model + to reorder the data in the model. To make your data sortable, you can + either implement sort() in your model, or use a QSortFilterProxyModel to + wrap your model -- QSortFilterProxyModel provides a generic sort() + reimplementation that operates on the sortRole() (Qt::DisplayRole by + default) of the items and that understands several data types, including + \c int, QString, and QDateTime. For hierarchical models, sorting is applied + recursively to all child items. String comparisons are case sensitive by + default; this can be changed by setting the \l{QSortFilterProxyModel::} + {sortCaseSensitivity} property. Custom sorting behavior is achieved by subclassing QSortFilterProxyModel and reimplementing lessThan(), which is @@ -1365,43 +1359,42 @@ void QSortFilterProxyModelPrivate::_q_sourceColumnsRemoved( \l{itemviews/customsortfiltermodel}{Custom Sort/Filter Model} example.) - An alternative approach to sorting is to disable sorting on the - view and to impose a certain order to the user. This is done by - explicitly calling sort() with the desired column and order as - arguments on the QSortFilterProxyModel (or on the original model - if it implements sort()). For example: + An alternative approach to sorting is to disable sorting on the view and to + impose a certain order to the user. This is done by explicitly calling + sort() with the desired column and order as arguments on the + QSortFilterProxyModel (or on the original model if it implements sort()). + For example: \snippet doc/src/snippets/qsortfilterproxymodel-details/main.cpp 4 - QSortFilterProxyModel can be sorted by column -1, in which case it - returns to the sort order of the underlying source model. + QSortFilterProxyModel can be sorted by column -1, in which case it returns + to the sort order of the underlying source model. \section1 Filtering - In addition to sorting, QSortFilterProxyModel can be used to hide - items that don't match a certain filter. The filter is specified - using a QRegExp object and is applied to the filterRole() - (Qt::DisplayRole by default) of each item, for a given column. - The QRegExp object can be used to match a regular expression, a - wildcard pattern, or a fixed string. For example: + In addition to sorting, QSortFilterProxyModel can be used to hide items + that do not match a certain filter. The filter is specified using a QRegExp + object and is applied to the filterRole() (Qt::DisplayRole by default) of + each item, for a given column. The QRegExp object can be used to match a + regular expression, a wildcard pattern, or a fixed string. For example: \snippet doc/src/snippets/qsortfilterproxymodel-details/main.cpp 5 - For hierarchical models, the filter is applied recursively to all - children. If a parent item doesn't match the filter, none of its - children will be shown. + For hierarchical models, the filter is applied recursively to all children. + If a parent item doesn't match the filter, none of its children will be + shown. - A common use case is to let the user specify the filter regexp, - wildcard pattern, or fixed string in a QLineEdit and to connect - the \l{QLineEdit::textChanged()}{textChanged()} signal to - setFilterRegExp(), setFilterWildcard(), or setFilterFixedString() - to reapply the filter. + A common use case is to let the user specify the filter regexp, wildcard + pattern, or fixed string in a QLineEdit and to connect the + \l{QLineEdit::textChanged()}{textChanged()} signal to setFilterRegExp(), + setFilterWildcard(), or setFilterFixedString() to reapply the filter. Custom filtering behavior can be achieved by reimplementing the filterAcceptsRow() and filterAcceptsColumn() functions. For - example, the following implementation ignores the - \l{QSortFilterProxyModel::filterKeyColumn}{filterKeyColumn} - property and performs filtering on columns 0, 1, and 2: + example (from the \l{itemviews/customsortfiltermodel} + {Custom Sort/Filter Model} example), the following implementation ignores + the \l{QSortFilterProxyModel::filterKeyColumn}{filterKeyColumn} property + and performs filtering on columns 0, 1, and 2: \snippet examples/itemviews/customsortfiltermodel/mysortfilterproxymodel.cpp 3 @@ -1411,24 +1404,24 @@ void QSortFilterProxyModelPrivate::_q_sourceColumnsRemoved( If you are working with large amounts of filtering and have to invoke invalidateFilter() repeatedly, using reset() may be more efficient, - depending on the implementation of your model. However, note that reset() - returns the proxy model to its original state, losing selection - information, and will cause the proxy model to be repopulated. + depending on the implementation of your model. However, reset() returns the + proxy model to its original state, losing selection information, and will + cause the proxy model to be repopulated. \section1 Subclassing - \bold{Note:} Some general guidelines for subclassing models are - available in the \l{Model Subclassing Reference}. - Since QAbstractProxyModel and its subclasses are derived from - QAbstractItemModel, much of the same advice about subclassing normal - models also applies to proxy models. In addition, it is worth noting - that many of the default implementations of functions in this class - are written so that they call the equivalent functions in the relevant - source model. This simple proxying mechanism may need to be overridden - for source models with more complex behavior; for example, if the - source model provides a custom hasChildren() implementation, you - should also provide one in the proxy model. + QAbstractItemModel, much of the same advice about subclassing normal models + also applies to proxy models. In addition, it is worth noting that many of + the default implementations of functions in this class are written so that + they call the equivalent functions in the relevant source model. This + simple proxying mechanism may need to be overridden for source models with + more complex behavior; for example, if the source model provides a custom + hasChildren() implementation, you should also provide one in the proxy + model. + + \note Some general guidelines for subclassing models are available in the + \l{Model Subclassing Reference}. \sa QAbstractProxyModel, QAbstractItemModel, {Model/View Programming}, {Basic Sort/Filter Model Example}, {Custom Sort/Filter Model Example} @@ -1991,9 +1984,11 @@ Qt::SortOrder QSortFilterProxyModel::sortOrder() const \brief the QRegExp used to filter the contents of the source model Setting this property overwrites the current - \l{QSortFilterProxyModel::filterCaseSensitivity} - {filterCaseSensitivity}. By default, the QRegExp is an empty - string matching all contents. + \l{QSortFilterProxyModel::filterCaseSensitivity}{filterCaseSensitivity}. + By default, the QRegExp is an empty string matching all contents. + + If no QRegExp or an empty string is set, everything in the source model + will be accepted. \sa filterCaseSensitivity, setFilterWildcard(), setFilterFixedString() */ @@ -2316,7 +2311,7 @@ bool QSortFilterProxyModel::lessThan(const QModelIndex &left, const QModelIndex Q_D(const QSortFilterProxyModel); QVariant l = (left.model() ? left.model()->data(left, d->sort_role) : QVariant()); QVariant r = (right.model() ? right.model()->data(right, d->sort_role) : QVariant()); - switch (l.type()) { + switch (l.userType()) { case QVariant::Invalid: return (r.type() == QVariant::Invalid); case QVariant::Int: @@ -2327,6 +2322,8 @@ bool QSortFilterProxyModel::lessThan(const QModelIndex &left, const QModelIndex return l.toLongLong() < r.toLongLong(); case QVariant::ULongLong: return l.toULongLong() < r.toULongLong(); + case QMetaType::Float: + return l.toFloat() < r.toFloat(); case QVariant::Double: return l.toDouble() < r.toDouble(); case QVariant::Char: diff --git a/src/gui/itemviews/qstandarditemmodel.cpp b/src/gui/itemviews/qstandarditemmodel.cpp index f2fc37e..9ae3214 100644 --- a/src/gui/itemviews/qstandarditemmodel.cpp +++ b/src/gui/itemviews/qstandarditemmodel.cpp @@ -1806,7 +1806,7 @@ bool QStandardItem::operator<(const QStandardItem &other) const const int role = model() ? model()->sortRole() : Qt::DisplayRole; const QVariant l = data(role), r = other.data(role); // this code is copied from QSortFilterProxyModel::lessThan() - switch (l.type()) { + switch (l.userType()) { case QVariant::Invalid: return (r.type() == QVariant::Invalid); case QVariant::Int: @@ -1817,6 +1817,8 @@ bool QStandardItem::operator<(const QStandardItem &other) const return l.toLongLong() < r.toLongLong(); case QVariant::ULongLong: return l.toULongLong() < r.toULongLong(); + case QMetaType::Float: + return l.toFloat() < r.toFloat(); case QVariant::Double: return l.toDouble() < r.toDouble(); case QVariant::Char: diff --git a/src/gui/itemviews/qstandarditemmodel_p.h b/src/gui/itemviews/qstandarditemmodel_p.h index 1ee3432..a8b36ed 100644 --- a/src/gui/itemviews/qstandarditemmodel_p.h +++ b/src/gui/itemviews/qstandarditemmodel_p.h @@ -75,6 +75,7 @@ public: parent(0), rows(0), columns(0), + q_ptr(0), lastIndexOf(2) { } virtual ~QStandardItemPrivate(); diff --git a/src/gui/itemviews/qstringlistmodel.cpp b/src/gui/itemviews/qstringlistmodel.cpp index d57de1a..9462dfe 100644 --- a/src/gui/itemviews/qstringlistmodel.cpp +++ b/src/gui/itemviews/qstringlistmodel.cpp @@ -54,7 +54,7 @@ QT_BEGIN_NAMESPACE \brief The QStringListModel class provides a model that supplies strings to views. \ingroup model-view - \mainclass + QStringListModel is an editable model that can be used for simple cases where you need to display a number of strings in a view diff --git a/src/gui/itemviews/qstyleditemdelegate.cpp b/src/gui/itemviews/qstyleditemdelegate.cpp index 913af89..b5f676a 100644 --- a/src/gui/itemviews/qstyleditemdelegate.cpp +++ b/src/gui/itemviews/qstyleditemdelegate.cpp @@ -112,7 +112,7 @@ public: data items from a model. \ingroup model-view - \mainclass + \since 4.4 When displaying data from models in Qt item views, e.g., a @@ -267,9 +267,10 @@ QStyledItemDelegate::~QStyledItemDelegate() QString QStyledItemDelegate::displayText(const QVariant &value, const QLocale& locale) const { QString text; - switch (value.type()) { + switch (value.userType()) { + case QMetaType::Float: case QVariant::Double: - text = locale.toString(value.toDouble()); + text = locale.toString(value.toReal()); break; case QVariant::Int: case QVariant::LongLong: diff --git a/src/gui/itemviews/qtableview.cpp b/src/gui/itemviews/qtableview.cpp index 61c2b60..a9db9f5 100644 --- a/src/gui/itemviews/qtableview.cpp +++ b/src/gui/itemviews/qtableview.cpp @@ -508,7 +508,7 @@ void QTableViewPrivate::drawCell(QPainter *painter, const QStyleOptionViewItemV4 \ingroup model-view \ingroup advanced - \mainclass + A QTableView implements a table view that displays items from a model. This class is used to provide standard tables that were diff --git a/src/gui/itemviews/qtablewidget.cpp b/src/gui/itemviews/qtablewidget.cpp index fea81e5..b04aea2 100644 --- a/src/gui/itemviews/qtablewidget.cpp +++ b/src/gui/itemviews/qtablewidget.cpp @@ -1392,9 +1392,7 @@ QVariant QTableWidgetItem::data(int role) const bool QTableWidgetItem::operator<(const QTableWidgetItem &other) const { const QVariant v1 = data(Qt::DisplayRole), v2 = other.data(Qt::DisplayRole); - if (QAbstractItemModelPrivate::canConvertToDouble(v1) && QAbstractItemModelPrivate::canConvertToDouble(v2)) - return v1.toDouble() < v2.toDouble(); - return v1.toString() < v2.toString(); + return QAbstractItemModelPrivate::variantLessThan(v1, v2); } #ifndef QT_NO_DATASTREAM @@ -1488,7 +1486,7 @@ QTableWidgetItem &QTableWidgetItem::operator=(const QTableWidgetItem &other) \brief The QTableWidget class provides an item-based table view with a default model. \ingroup model-view - \mainclass + Table widgets provide standard table display facilities for applications. The items in a QTableWidget are provided by QTableWidgetItem. diff --git a/src/gui/itemviews/qtreeview.cpp b/src/gui/itemviews/qtreeview.cpp index cbe1d2a..7dad192 100644 --- a/src/gui/itemviews/qtreeview.cpp +++ b/src/gui/itemviews/qtreeview.cpp @@ -66,7 +66,7 @@ QT_BEGIN_NAMESPACE \ingroup model-view \ingroup advanced - \mainclass + A QTreeView implements a tree representation of items from a model. This class is used to provide standard hierarchical lists that @@ -2797,15 +2797,14 @@ int QTreeView::indexRowSizeHint(const QModelIndex &index) const if (isRightToLeft()) { start = (start == -1 ? count - 1 : start); - end = (end == -1 ? 0 : end); + end = 0; } else { start = (start == -1 ? 0 : start); - end = (end == -1 ? count - 1 : end); + end = count - 1; } - int tmp = start; - start = qMin(start, end); - end = qMax(tmp, end); + if (end < start) + qSwap(end, start); int height = -1; QStyleOptionViewItemV4 option = d->viewOptionsV4(); diff --git a/src/gui/itemviews/qtreeview_p.h b/src/gui/itemviews/qtreeview_p.h index d17016f..1bbba89 100644 --- a/src/gui/itemviews/qtreeview_p.h +++ b/src/gui/itemviews/qtreeview_p.h @@ -82,7 +82,7 @@ public: uniformRowHeights(false), rootDecoration(true), itemsExpandable(true), sortingEnabled(false), expandsOnDoubleClick(true), - allColumnsShowFocus(false), current(0), + allColumnsShowFocus(false), current(0), spanning(false), animationsEnabled(false), columnResizeTimerID(0), autoExpandDelay(-1), hoverBranch(-1), geometryRecursionBlock(false) {} diff --git a/src/gui/itemviews/qtreewidget.cpp b/src/gui/itemviews/qtreewidget.cpp index eaed05f..b636284 100644 --- a/src/gui/itemviews/qtreewidget.cpp +++ b/src/gui/itemviews/qtreewidget.cpp @@ -75,7 +75,7 @@ public: \brief The QTreeModel class manages the items stored in a tree view. \ingroup model-view - \mainclass + */ /*! @@ -1768,6 +1768,7 @@ QVariant QTreeWidgetItem::data(int column, int role) const // special case for check state in tristate if (children.count() && (itemFlags & Qt::ItemIsTristate)) return childrenCheckState(column); + // fallthrough intended default: if (column >= 0 && column < values.size()) { const QVector<QWidgetItemData> &column_values = values.at(column); @@ -1789,9 +1790,7 @@ bool QTreeWidgetItem::operator<(const QTreeWidgetItem &other) const int column = view ? view->sortColumn() : 0; const QVariant v1 = data(column, Qt::DisplayRole); const QVariant v2 = other.data(column, Qt::DisplayRole); - if (QAbstractItemModelPrivate::canConvertToDouble(v1) && QAbstractItemModelPrivate::canConvertToDouble(v2)) - return v1.toDouble() < v2.toDouble(); - return v1.toString() < v2.toString(); + return QAbstractItemModelPrivate::variantLessThan(v1, v2); } #ifndef QT_NO_DATASTREAM @@ -2074,6 +2073,8 @@ QList<QTreeWidgetItem*> QTreeWidgetItem::takeChildren() void QTreeWidgetItemPrivate::sortChildren(int column, Qt::SortOrder order, bool climb) { QTreeModel *model = (q->view ? qobject_cast<QTreeModel*>(q->view->model()) : 0); + if (!model) + return; model->sortItems(&q->children, column, order); if (climb) { QList<QTreeWidgetItem*>::iterator it = q->children.begin(); @@ -2328,7 +2329,7 @@ void QTreeWidgetPrivate::_q_dataChanged(const QModelIndex &topLeft, tree model. \ingroup model-view - \mainclass + The QTreeWidget class is a convenience class that provides a standard tree widget with a classic item-based interface similar to that used by diff --git a/src/gui/itemviews/qtreewidgetitemiterator_p.h b/src/gui/itemviews/qtreewidgetitemiterator_p.h index 3ffe823..ee0808c 100644 --- a/src/gui/itemviews/qtreewidgetitemiterator_p.h +++ b/src/gui/itemviews/qtreewidgetitemiterator_p.h @@ -73,7 +73,8 @@ public: } QTreeWidgetItemIteratorPrivate(const QTreeWidgetItemIteratorPrivate& other) - : m_currentIndex(other.m_currentIndex), m_model(other.m_model), m_parentIndex(other.m_parentIndex) + : m_currentIndex(other.m_currentIndex), m_model(other.m_model), + m_parentIndex(other.m_parentIndex), q_ptr(other.q_ptr) { } diff --git a/src/gui/kernel/kernel.pri b/src/gui/kernel/kernel.pri index 531c283..c7d06f7 100644 --- a/src/gui/kernel/kernel.pri +++ b/src/gui/kernel/kernel.pri @@ -145,7 +145,7 @@ unix:x11 { HEADERS += \ kernel/qguieventdispatcher_glib_p.h QMAKE_CXXFLAGS += $$QT_CFLAGS_GLIB - LIBS +=$$QT_LIBS_GLIB + LIBS_PRIVATE +=$$QT_LIBS_GLIB } SOURCES += \ kernel/qeventdispatcher_x11.cpp @@ -226,7 +226,7 @@ embedded { QMAKE_BUNDLE_DATA += MENU_NIB RESOURCES += mac/macresources.qrc - LIBS += -framework AppKit + LIBS_PRIVATE += -framework AppKit } wince*: { diff --git a/src/gui/kernel/mac.pri b/src/gui/kernel/mac.pri index 415fe0a..1538510 100644 --- a/src/gui/kernel/mac.pri +++ b/src/gui/kernel/mac.pri @@ -1,4 +1,4 @@ !x11:!embedded:mac { - LIBS += -framework Carbon -lz + LIBS_PRIVATE += -framework Carbon -lz *-mwerks:INCLUDEPATH += compat } diff --git a/src/gui/kernel/qaction.cpp b/src/gui/kernel/qaction.cpp index b7ccd72..00cba04 100644 --- a/src/gui/kernel/qaction.cpp +++ b/src/gui/kernel/qaction.cpp @@ -183,8 +183,8 @@ void QActionPrivate::setShortcutEnabled(bool enable, QShortcutMap &map) \brief The QAction class provides an abstract user interface action that can be inserted into widgets. - \ingroup application - \mainclass + \ingroup mainwindow-classes + \omit * parent and widget are different diff --git a/src/gui/kernel/qactiongroup.cpp b/src/gui/kernel/qactiongroup.cpp index 5d429e4..9a12dea 100644 --- a/src/gui/kernel/qactiongroup.cpp +++ b/src/gui/kernel/qactiongroup.cpp @@ -100,7 +100,7 @@ void QActionGroupPrivate::_q_actionHovered() \class QActionGroup \brief The QActionGroup class groups actions together. - \ingroup application + \ingroup mainwindow-classes In some situations it is useful to group actions together. For example, if you have a \gui{Left Align} action, a \gui{Right diff --git a/src/gui/kernel/qapplication.cpp b/src/gui/kernel/qapplication.cpp index 4cc7e00..38592e0 100644 --- a/src/gui/kernel/qapplication.cpp +++ b/src/gui/kernel/qapplication.cpp @@ -179,9 +179,6 @@ QApplicationPrivate::~QApplicationPrivate() \brief The QApplication class manages the GUI application's control flow and main settings. - \ingroup application - \mainclass - QApplication contains the main event loop, where all events from the window system and other sources are processed and dispatched. It also handles the application's initialization, finalization, and provides session @@ -2331,10 +2328,6 @@ bool QApplication::event(QEvent *e) } else if (te->timerId() == d->toolTipFallAsleep.timerId()) { d->toolTipFallAsleep.stop(); } -#ifdef QT_MAC_USE_COCOA - } else if (e->type() == QEvent::CocoaRequestModal) { - d->_q_runAppModalWindow(); -#endif } return QCoreApplication::event(e); } @@ -4153,9 +4146,6 @@ bool QApplicationPrivate::notify_helper(QObject *receiver, QEvent * e) \class QSessionManager \brief The QSessionManager class provides access to the session manager. - \ingroup application - \ingroup environment - A session manager in a desktop environment (in which Qt GUI applications live) keeps track of a session, which is a group of running applications, each of which has a particular state. The state of an application contains diff --git a/src/gui/kernel/qapplication_mac.mm b/src/gui/kernel/qapplication_mac.mm index 5b503b3..0c17892 100644 --- a/src/gui/kernel/qapplication_mac.mm +++ b/src/gui/kernel/qapplication_mac.mm @@ -1409,13 +1409,8 @@ void QApplicationPrivate::enterModal_sys(QWidget *widget) qt_button_down = 0; #ifdef QT_MAC_USE_COCOA - if (!qt_mac_is_macsheet(widget)) { - // Add a new, empty (null), NSModalSession to the stack. - // The next time we spin the event dispatcher, it will - // check the stack, and recurse into a modal session for it: - QCocoaModalSessionInfo info = {widget, 0}; - QEventDispatcherMacPrivate::cocoaModalSessionStack.push(info); - } + if (!qt_mac_is_macsheet(widget)) + QEventDispatcherMacPrivate::beginModalSession(widget); #endif } @@ -1441,7 +1436,7 @@ void QApplicationPrivate::leaveModal_sys(QWidget *widget) } #ifdef QT_MAC_USE_COCOA if (!qt_mac_is_macsheet(widget)) - QEventDispatcherMacPrivate::rebuildModalSessionStack(true); + QEventDispatcherMacPrivate::endModalSession(widget); #endif } #ifdef DEBUG_MODAL_EVENTS @@ -1452,21 +1447,6 @@ void QApplicationPrivate::leaveModal_sys(QWidget *widget) qt_event_request_menubarupdate(); } -#if defined(QT_MAC_USE_COCOA) -void QApplicationPrivate::_q_runAppModalWindow() -{ - if (QEventDispatcherMacPrivate::blockCocoaRequestModal) { - // Just postpone the event until the event dispatcher tells - // us (by releasing the block) that it is OK to recurse into - // a new event loop for our non-execing modal window: - qApp->postEvent(qApp, new QEvent(QEvent::CocoaRequestModal)); - } else { - // Recurse into a new event loop for the current app modal window: - threadData->eventDispatcher->processEvents(QEventLoop::DialogExec); - } -} -#endif - QWidget *QApplicationPrivate::tryModalHelper_sys(QWidget *top) { #ifndef QT_MAC_USE_COCOA diff --git a/src/gui/kernel/qapplication_p.h b/src/gui/kernel/qapplication_p.h index 50ab238..7a27756 100644 --- a/src/gui/kernel/qapplication_p.h +++ b/src/gui/kernel/qapplication_p.h @@ -486,12 +486,6 @@ public: void _q_alertTimeOut(); QHash<QWidget *, QTimer *> alertTimerHash; #endif -#if defined(QT_MAC_USE_COCOA) - void _q_runAppModalWindow(); -#endif -#if defined(QT_MAC_USE_COCOA) - void _q_runModalWindow(); -#endif #ifndef QT_NO_STYLE_STYLESHEET static QString styleSheet; #endif diff --git a/src/gui/kernel/qapplication_x11.cpp b/src/gui/kernel/qapplication_x11.cpp index 3b1a581..db349f0 100644 --- a/src/gui/kernel/qapplication_x11.cpp +++ b/src/gui/kernel/qapplication_x11.cpp @@ -4579,6 +4579,7 @@ bool QETWidget::translateXinputEvent(const XEvent *ev, QTabletDeviceData *tablet // Do event compression. Skip over tablet+mouse move events if there are newer ones. qt_tablet_motion_data tabletMotionData; tabletMotionData.tabletMotionType = tablet->xinput_motion; + XEvent dummy; while (true) { // Find first mouse event since we expect them in pairs inside Qt tabletMotionData.error =false; @@ -4591,7 +4592,6 @@ bool QETWidget::translateXinputEvent(const XEvent *ev, QTabletDeviceData *tablet } // Now discard any duplicate tablet events. - XEvent dummy; tabletMotionData.error = false; tabletMotionData.timestamp = mouseMotionEvent.xmotion.time; while (XCheckIfEvent(X11->display, &dummy, &qt_tabletMotion_scanner, (XPointer) &tabletMotionData)) { diff --git a/src/gui/kernel/qboxlayout.cpp b/src/gui/kernel/qboxlayout.cpp index 6a35e38..3f2a5dc 100644 --- a/src/gui/kernel/qboxlayout.cpp +++ b/src/gui/kernel/qboxlayout.cpp @@ -452,7 +452,6 @@ void QBoxLayoutPrivate::calcHfw(int w) vertically. \ingroup geomanagement - \ingroup appearance QBoxLayout takes the space it gets (from its parent layout or from the parentWidget()), divides it up into a row of boxes, and makes @@ -1290,8 +1289,6 @@ QBoxLayout::Direction QBoxLayout::direction() const \brief The QHBoxLayout class lines up widgets horizontally. \ingroup geomanagement - \ingroup appearance - \mainclass This class is used to construct horizontal box layout objects. See QBoxLayout for details. @@ -1408,8 +1405,6 @@ QHBoxLayout::~QHBoxLayout() \brief The QVBoxLayout class lines up widgets vertically. \ingroup geomanagement - \ingroup appearance - \mainclass This class is used to construct vertical box layout objects. See QBoxLayout for details. diff --git a/src/gui/kernel/qclipboard.cpp b/src/gui/kernel/qclipboard.cpp index 2779717..fce4f65 100644 --- a/src/gui/kernel/qclipboard.cpp +++ b/src/gui/kernel/qclipboard.cpp @@ -58,10 +58,6 @@ QT_BEGIN_NAMESPACE \class QClipboard \brief The QClipboard class provides access to the window system clipboard. - \ingroup io - \ingroup environment - \mainclass - The clipboard offers a simple mechanism to copy and paste data between applications. diff --git a/src/gui/kernel/qcocoaview_mac.mm b/src/gui/kernel/qcocoaview_mac.mm index c20445a..45b0ada 100644 --- a/src/gui/kernel/qcocoaview_mac.mm +++ b/src/gui/kernel/qcocoaview_mac.mm @@ -102,7 +102,7 @@ static dndenum_mapper dnd_enums[] = { { NSDragOperationCopy, Qt::CopyAction, true }, { NSDragOperationGeneric, Qt::CopyAction, false }, { NSDragOperationEvery, Qt::ActionMask, false }, - { NSDragOperationNone, Qt::IgnoreAction, false } + { NSDragOperationNone, Qt::IgnoreAction, false } }; static NSDragOperation qt_mac_mapDropAction(Qt::DropAction action) @@ -228,14 +228,14 @@ extern "C" { currentCustomTypes = new QStringList(); *currentCustomTypes = customTypes; const NSString* mimeTypeGeneric = @"com.trolltech.qt.MimeTypeName"; - NSMutableArray *supportedTypes = [NSMutableArray arrayWithObjects:NSColorPboardType, - NSFilenamesPboardType, NSStringPboardType, - NSFilenamesPboardType, NSPostScriptPboardType, NSTIFFPboardType, - NSRTFPboardType, NSTabularTextPboardType, NSFontPboardType, - NSRulerPboardType, NSFileContentsPboardType, NSColorPboardType, - NSRTFDPboardType, NSHTMLPboardType, NSPICTPboardType, + NSMutableArray *supportedTypes = [NSMutableArray arrayWithObjects:NSColorPboardType, + NSFilenamesPboardType, NSStringPboardType, + NSFilenamesPboardType, NSPostScriptPboardType, NSTIFFPboardType, + NSRTFPboardType, NSTabularTextPboardType, NSFontPboardType, + NSRulerPboardType, NSFileContentsPboardType, NSColorPboardType, + NSRTFDPboardType, NSHTMLPboardType, NSPICTPboardType, NSURLPboardType, NSPDFPboardType, NSVCardPboardType, - NSFilesPromisePboardType, NSInkTextPboardType, + NSFilesPromisePboardType, NSInkTextPboardType, NSMultipleTextSelectionPboardType, mimeTypeGeneric, nil]; // Add custom types supported by the application. for (int i = 0; i < customTypes.size(); i++) { @@ -280,16 +280,16 @@ extern "C" { dropData = 0; } } - -- (void)addDropData:(id <NSDraggingInfo>)sender + +- (void)addDropData:(id <NSDraggingInfo>)sender { [self removeDropData]; - CFStringRef dropPasteboard = (CFStringRef) [[sender draggingPasteboard] name]; + CFStringRef dropPasteboard = (CFStringRef) [[sender draggingPasteboard] name]; dropData = new QCocoaDropData(dropPasteboard); -} +} -- (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender -{ +- (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender +{ if (qwidget->testAttribute(Qt::WA_DropSiteRegistered) == false) return NSDragOperationNone; NSPoint windowPoint = [sender draggingLocation]; @@ -307,7 +307,7 @@ extern "C" { NSPoint globalPoint = [[sender draggingDestinationWindow] convertBaseToScreen:windowPoint]; NSPoint localPoint = [self convertPoint:windowPoint fromView:nil]; QPoint posDrag(localPoint.x, localPoint.y); - NSDragOperation nsActions = [sender draggingSourceOperationMask]; + NSDragOperation nsActions = [sender draggingSourceOperationMask]; Qt::DropActions qtAllowed = qt_mac_mapNSDragOperations(nsActions); QT_PREPEND_NAMESPACE(qt_mac_dnd_answer_rec.lastOperation) = nsActions; Qt::KeyboardModifiers modifiers = Qt::NoModifier; @@ -336,8 +336,8 @@ extern "C" { qDMEvent.accept(); // accept by default, since enter event was accepted. QApplication::sendEvent(qwidget, &qDMEvent); if (!qDMEvent.isAccepted() || qDMEvent.dropAction() == Qt::IgnoreAction) { - // since we accepted the drag enter event, the widget expects - // future drage move events. + // since we accepted the drag enter event, the widget expects + // future drage move events. // ### check if we need to treat this like the drag enter event. nsActions = QT_PREPEND_NAMESPACE(qt_mac_mapDropAction)(qDEEvent.dropAction()); } else { @@ -345,7 +345,7 @@ extern "C" { } QT_PREPEND_NAMESPACE(qt_mac_copy_answer_rect)(qDMEvent); return nsActions; - } + } } - (NSDragOperation)draggingUpdated:(id < NSDraggingInfo >)sender @@ -373,7 +373,7 @@ extern "C" { if (qt_mac_mouse_inside_answer_rect(posDrag) && QT_PREPEND_NAMESPACE(qt_mac_dnd_answer_rec.lastOperation) == nsActions) return QT_PREPEND_NAMESPACE(qt_mac_mapDropActions)(QT_PREPEND_NAMESPACE(qt_mac_dnd_answer_rec.lastAction)); - // send drag move event to the widget + // send drag move event to the widget QT_PREPEND_NAMESPACE(qt_mac_dnd_answer_rec.lastOperation) = nsActions; Qt::DropActions qtAllowed = QT_PREPEND_NAMESPACE(qt_mac_mapNSDragOperations)(nsActions); Qt::KeyboardModifiers modifiers = Qt::NoModifier; @@ -436,7 +436,7 @@ extern "C" { NSPoint localPoint = [self convertPoint:windowPoint fromView:nil]; QPoint posDrop(localPoint.x, localPoint.y); - NSDragOperation nsActions = [sender draggingSourceOperationMask]; + NSDragOperation nsActions = [sender draggingSourceOperationMask]; Qt::DropActions qtAllowed = qt_mac_mapNSDragOperations(nsActions); QMimeData *mimeData = dropData; if (QDragManager::self()->source()) @@ -563,11 +563,6 @@ extern "C" { qt_sendSpontaneousEvent(qwidget, &e); if (!redirectionOffset.isNull()) QPainter::restoreRedirected(qwidget); -#ifdef QT_RASTER_PAINTENGINE - if(engine && engine->type() == QPaintEngine::Raster) - static_cast<QRasterPaintEngine*>(engine)->flush(qwidget, - qrgn.boundingRect().topLeft()); -#endif if (engine) engine->setSystemClip(QRegion()); qwidget->setAttribute(Qt::WA_WState_InPaintEvent, false); @@ -638,7 +633,7 @@ extern "C" { QHoverEvent he(QEvent::HoverEnter, QPoint(viewPoint.x, viewPoint.y), QPoint(-1, -1)); QApplicationPrivate::instance()->notify_helper(qwidget, &he); } - } + } } - (void)mouseExited:(NSEvent *)event @@ -647,7 +642,7 @@ extern "C" { NSPoint globalPoint = [[event window] convertBaseToScreen:[event locationInWindow]]; if (!qAppInstance()->activeModalWidget() || QApplicationPrivate::tryModalHelper(qwidget, 0)) { QApplication::sendEvent(qwidget, &leaveEvent); - + // ### Think about if it is necessary to update the cursor, should only be for a few cases. qt_mac_update_cursor_at_global_pos(flipPoint(globalPoint).toPoint()); if (qwidget->testAttribute(Qt::WA_Hover) @@ -679,7 +674,7 @@ extern "C" { { qt_mac_handleMouseEvent(self, theEvent, QEvent::MouseButtonPress, Qt::LeftButton); // Don't call super here. This prevents us from getting the mouseUp event, - // which we need to send even if the mouseDown event was not accepted. + // which we need to send even if the mouseDown event was not accepted. // (this is standard Qt behavior.) } @@ -843,7 +838,7 @@ extern "C" { } #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6 -- (void)touchesBeganWithEvent:(NSEvent *)event; +- (void)touchesBeganWithEvent:(NSEvent *)event; { bool all = qwidget->testAttribute(Qt::WA_TouchPadAcceptSingleTouchEvents); qt_translateRawTouchEvent(qwidget, QTouchEvent::TouchPad, QCocoaTouch::getCurrentTouchPointList(event, all)); @@ -1128,7 +1123,7 @@ extern "C" { while (index < composingLength) { NSRange effectiveRange; NSRange range = NSMakeRange(index, composingLength-index); - NSDictionary *attributes = [aString attributesAtIndex:index + NSDictionary *attributes = [aString attributesAtIndex:index longestEffectiveRange:&effectiveRange inRange:range]; NSNumber *underlineStyle = [attributes objectForKey:NSUnderlineStyleAttributeName]; @@ -1137,7 +1132,7 @@ extern "C" { NSColor *color = [attributes objectForKey:NSUnderlineColorAttributeName]; if (color) { clr = colorFrom(color); - } + } QTextCharFormat format; format.setFontUnderline(true); format.setUnderlineColor(clr); @@ -1213,7 +1208,7 @@ extern "C" { - (NSRange) markedRange { - NSRange range; + NSRange range; if (composing) { range.location = 0; range.length = composingLength; @@ -1238,13 +1233,13 @@ extern "C" { selRange.length = 0; } return selRange; - + } - (NSRect) firstRectForCharacterRange:(NSRange)theRange { Q_UNUSED(theRange); - // The returned rect is always based on the internal cursor. + // The returned rect is always based on the internal cursor. QRect mr(qwidget->inputMethodQuery(Qt::ImMicroFocus).toRect()); QPoint mp(qwidget->mapToGlobal(QPoint(mr.bottomLeft()))); NSRect rect ; @@ -1392,7 +1387,7 @@ Qt::DropAction QDragManager::drag(QDrag *o) NSImage *image = (NSImage *)qt_mac_create_nsimage(pix); [image retain]; DnDParams *dndParams = [QT_MANGLE_NAMESPACE(QCocoaView) currentMouseEvent]; - // save supported actions + // save supported actions [dndParams->view setSupportedActions: qt_mac_mapDropActions(dragPrivate()->possible_actions)]; NSPoint imageLoc = {dndParams->localPoint.x - hotspot.x(), dndParams->localPoint.y + pix.height() - hotspot.y()}; @@ -1416,7 +1411,7 @@ Qt::DropAction QDragManager::drag(QDrag *o) Qt::DropAction performedAction(qt_mac_mapNSDragOperation(dndParams->performedAction)); // do post drag processing, if required. if(performedAction != Qt::IgnoreAction) { - // check if the receiver points us to a file location. + // check if the receiver points us to a file location. // if so, we need to do the file copy/move ourselves. QCFType<CFURLRef> pasteLocation = 0; PasteboardCopyPasteLocation(dragBoard.pasteBoard(), &pasteLocation); diff --git a/src/gui/kernel/qcursor.cpp b/src/gui/kernel/qcursor.cpp index 9d2407b..dd7a07c 100644 --- a/src/gui/kernel/qcursor.cpp +++ b/src/gui/kernel/qcursor.cpp @@ -60,7 +60,7 @@ QT_BEGIN_NAMESPACE \ingroup appearance \ingroup shared - \mainclass + This class is mainly used to create mouse cursors that are associated with particular widgets and to get and set the position diff --git a/src/gui/kernel/qdesktopwidget.qdoc b/src/gui/kernel/qdesktopwidget.qdoc new file mode 100644 index 0000000..8e6673a --- /dev/null +++ b/src/gui/kernel/qdesktopwidget.qdoc @@ -0,0 +1,264 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \class QDesktopWidget + \brief The QDesktopWidget class provides access to screen information on multi-head systems. + + \ingroup advanced + \ingroup desktop + + QApplication::desktop() function should be used to get an instance + of the QDesktopWidget. + + Systems with more than one graphics card and monitor can manage the + physical screen space available either as multiple desktops, or as a + large virtual desktop, which usually has the size of the bounding + rectangle of all the screens (see virtualDesktop). For an + application, one of the available screens is the primary screen, i.e. + the screen where the main widget resides (see primaryScreen). All + windows opened in the context of the application should be + constrained to the boundaries of the primary screen; for example, + it would be inconvenient if a dialog box popped up on a different + screen, or split over two screens. + + The QDesktopWidget provides information about the geometry of the + available screens with screenGeometry(). The number of screens + available is returned by screenCount, and the screenCountChanged + signal is emitted when screens are added or removed during runtime. + The screen number that a particular point or widget is located in + is returned by screenNumber(). + + Widgets provided by Qt use this class, for example, to place + tooltips, menus and dialog boxes according to the parent or + application widget. Applications can use this class to save window + positions, or to place child widgets and dialogs on one particular + screen. + + \img qdesktopwidget.png Managing Multiple Screens + + In the illustration above, Application One's primary screen is + screen 0, and App Two's primary screen is screen 1. + + \target multiple screens note + \note QDesktopWidget inherits the QWidget properties, width() and + height(), which specify the size of the desktop. However, for + desktops with multiple screens, the size of the desktop is the union + of all the screen sizes, so width() and height() should \e not be + used for computing the size of a widget to be placed on one of the + screens. The correct width and height values are obtained using + availableGeometry() or screenGeometry() for a particular screen. + + \sa QApplication, QApplication::desktop(), QX11Info::appRootWindow() +*/ + +/*! + \fn QDesktopWidget::QDesktopWidget() + + \internal + + Creates the desktop widget. + + If the system supports a virtual desktop, this widget will have + the size of the virtual desktop; otherwise this widget will have + the size of the primary screen. + + Instead of using QDesktopWidget directly, use QApplication::desktop(). +*/ + +/*! + \fn QDesktopWidget::~QDesktopWidget() + + \internal + + Destroys the desktop widget and frees any allocated resources. +*/ + +/*! + \fn int QDesktopWidget::numScreens() const + + Returns the number of available screens. + + \obsolete + + This function is deprecated. Use screenCount instead. + + \sa primaryScreen +*/ + +/*! + \fn QWidget *QDesktopWidget::screen(int screen) + + Returns a widget that represents the screen with index \a screen + (a value of -1 means the default screen). + + If the system uses a virtual desktop, the returned widget will + have the geometry of the entire virtual desktop; i.e., bounding + every \a screen. + + \sa primaryScreen, screenCount, virtualDesktop +*/ + +/*! + \fn const QRect QDesktopWidget::availableGeometry(int screen) const + + Returns the available geometry of the screen with index \a screen. What + is available will be subrect of screenGeometry() based on what the + platform decides is available (for example excludes the dock and menu bar + on Mac OS X, or the task bar on Windows). The default screen is used if + \a screen is -1. + + \sa screenNumber(), screenGeometry() +*/ + +/*! + \fn const QRect QDesktopWidget::availableGeometry(const QWidget *widget) const + \overload + + Returns the available geometry of the screen which contains \a widget. + + \sa screenGeometry() +*/ + +/*! + \fn const QRect QDesktopWidget::availableGeometry(const QPoint &p) const + \overload + + Returns the available geometry of the screen which contains \a p. + + \sa screenGeometry() +*/ + + +/*! + \fn const QRect QDesktopWidget::screenGeometry(int screen) const + + Returns the geometry of the screen with index \a screen. The default + screen is used if \a screen is -1. + + \sa screenNumber() +*/ + +/*! + \fn const QRect QDesktopWidget::screenGeometry(const QWidget *widget) const + \overload + + Returns the geometry of the screen which contains \a widget. +*/ + +/*! + \fn const QRect QDesktopWidget::screenGeometry(const QPoint &p) const + \overload + + Returns the geometry of the screen which contains \a p. +*/ + + +/*! + \fn int QDesktopWidget::screenNumber(const QWidget *widget) const + + Returns the index of the screen that contains the largest + part of \a widget, or -1 if the widget not on a screen. + + \sa primaryScreen +*/ + +/*! + \fn int QDesktopWidget::screenNumber(const QPoint &point) const + + \overload + Returns the index of the screen that contains the \a point, or the + screen which is the shortest distance from the \a point. + + \sa primaryScreen +*/ + +/*! + \fn void QDesktopWidget::resizeEvent(QResizeEvent *event) + \reimp +*/ + +/*! + \fn void QDesktopWidget::resized(int screen) + + This signal is emitted when the size of \a screen changes. +*/ + +/*! + \fn void QDesktopWidget::workAreaResized(int screen) + + This signal is emitted when the work area available on \a screen changes. +*/ + +/*! + \property QDesktopWidget::screenCount + \brief the number of screens currently available on the system. + + \since 4.6 + + \sa screenCountChanged() +*/ + +/*! + \property QDesktopWidget::primaryScreen + \brief the index of the screen that is configured to be the primary screen + on the system. +*/ + +/*! + \property QDesktopWidget::virtualDesktop + + \brief if the system manages the available screens in a virtual desktop. + + For virtual desktops, screen() will always return the same widget. + The size of the virtual desktop is the size of this desktop + widget. +*/ + +/*! + \fn void QDesktopWidget::screenCountChanged(int newCount) + + \since 4.6 + + This signal is emitted when the number of screens changes to \a newCount. + + \sa screenCount +*/ diff --git a/src/gui/kernel/qeventdispatcher_mac.mm b/src/gui/kernel/qeventdispatcher_mac.mm index 2e45479..efe6375 100644 --- a/src/gui/kernel/qeventdispatcher_mac.mm +++ b/src/gui/kernel/qeventdispatcher_mac.mm @@ -497,6 +497,40 @@ static bool IsMouseOrKeyEvent( NSEvent* event ) } #endif +static inline void qt_mac_waitForMoreEvents() +{ +#ifndef QT_MAC_USE_COCOA + while(CFRunLoopRunInMode(kCFRunLoopDefaultMode, 1.0e20, true) == kCFRunLoopRunTimedOut); +#else + // If no event exist in the cocoa event que, wait + // (and free up cpu time) until at least one event occur. + // This implementation is a bit on the edge, but seems to + // work fine: + NSEvent* event = [NSApp nextEventMatchingMask:NSAnyEventMask + untilDate:[NSDate distantFuture] + inMode:NSDefaultRunLoopMode + dequeue:YES]; + if (event) + [NSApp postEvent:event atStart:YES]; +#endif +} + +#ifdef QT_MAC_USE_COCOA +static inline void qt_mac_waitForMoreModalSessionEvents() +{ + // If no event exist in the cocoa event que, wait + // (and free up cpu time) until at least one event occur. + // This implementation is a bit on the edge, but seems to + // work fine: + NSEvent* event = [NSApp nextEventMatchingMask:NSAnyEventMask + untilDate:[NSDate distantFuture] + inMode:NSModalPanelRunLoopMode + dequeue:YES]; + if (event) + [NSApp postEvent:event atStart:YES]; +} +#endif + bool QEventDispatcherMac::processEvents(QEventLoop::ProcessEventsFlags flags) { Q_D(QEventDispatcherMac); @@ -515,55 +549,42 @@ bool QEventDispatcherMac::processEvents(QEventLoop::ProcessEventsFlags flags) QMacCocoaAutoReleasePool pool; NSEvent* event = 0; - if (flags & QEventLoop::DialogExec || flags & QEventLoop::EventLoopExec) { - // The point of the CocoaRequestModal event is to make sure that a - // non-execed app modal window recurses into it's own dialog exec - // once cocoa is spinning the event loop for us (e.g on top of [NSApp run]). - // We expect only one event to notify us about this, regardless of how many - // widgets that are waiting to be modal. So we remove all other pending - // events, if any. And since cocoa will now take over event processing for us, - // we allow new app modal widgets to recurse on top of us, hence the release of - // the block: - QBoolBlocker block(d->blockCocoaRequestModal, false); - QCoreApplication::removePostedEvents(qApp, QEvent::CocoaRequestModal); - - if (NSModalSession session = d->activeModalSession()) - while ([NSApp runModalSession:session] == NSRunContinuesResponse) { - // runModalSession will not wait for events, so we do it - // ourselves (otherwise we would spend 100% CPU inside this loop): - event = [NSApp nextEventMatchingMask:NSAnyEventMask - untilDate:[NSDate distantFuture] inMode:NSModalPanelRunLoopMode dequeue:YES]; - if (event) - [NSApp postEvent:event atStart:YES]; - } - else + // If Qt is used as a plugin, or just added into a native cocoa + // application, we should not run or stop NSApplication; + // This will be done from outside Qt. + // And if processEvents is called manually (rather than from QEventLoop), we + // cannot enter a tight loop and block the call, but instead return after one flush: + bool canExec_3rdParty = d->nsAppRunCalledByQt || ![NSApp isRunning]; + bool canExec_Qt = flags & QEventLoop::DialogExec || flags & QEventLoop::EventLoopExec; + + if (canExec_Qt && canExec_3rdParty) { + // We can use exec-mode, meaning that we can stay in a tight loop until + // interrupted. This is mostly an optimization, but it also allow us + // to use [NSApp run], which is the recommended way of running applications + // in cocoa. [NSApp run] should be called at least once for any cocoa app. + if (NSModalSession session = d->currentModalSession()) { + QBoolBlocker execGuard(d->currentExecIsNSAppRun, false); + while (!d->interrupt && [NSApp runModalSession:session] == NSRunContinuesResponse) + qt_mac_waitForMoreModalSessionEvents(); + } else { + d->nsAppRunCalledByQt = true; + QBoolBlocker execGuard(d->currentExecIsNSAppRun, true); [NSApp run]; - - d->rebuildModalSessionStack(false); + } retVal = true; } else do { - // Since we now are going to spin the event loop just _one_ round - // we need to block all incoming CocoaRequestModal events to ensure - // that we don't recurse into a new exec-ing event loop while doing - // so (and as such, 'hang' the thread inside the recursion): - QBoolBlocker block(d->blockCocoaRequestModal, true); + // INVARIANT: We cannot block the thread (and run in a tight loop). + // Instead we will process all current pending events and return. bool mustRelease = false; if (!(flags & QEventLoop::ExcludeUserInputEvents) && !d->queuedUserInputEvents.isEmpty()) { - // process a pending user input event + // Process a pending user input event mustRelease = true; event = static_cast<NSEvent *>(d->queuedUserInputEvents.takeFirst()); } else { - if (NSModalSession session = d->activeModalSession()) { - // There's s a modal widget showing, run it's session: - if (flags & QEventLoop::WaitForMoreEvents) { - // Wait for at least one event - // before spinning the session: - event = [NSApp nextEventMatchingMask:NSAnyEventMask - untilDate:[NSDate distantFuture] inMode:NSModalPanelRunLoopMode dequeue:YES]; - if (event) - [NSApp postEvent:event atStart:YES]; - } + if (NSModalSession session = d->currentModalSession()) { + if (flags & QEventLoop::WaitForMoreEvents) + qt_mac_waitForMoreModalSessionEvents(); [NSApp runModalSession:session]; retVal = true; break; @@ -634,41 +655,35 @@ bool QEventDispatcherMac::processEvents(QEventLoop::ProcessEventsFlags flags) && (flags & QEventLoop::WaitForMoreEvents)); if (canWait) { // INVARIANT: We haven't processed any events yet. And we're told - // to stay inside this function until at least one event is processed - // (WaitForMoreEvents). So we wait on the window server: -#ifndef QT_MAC_USE_COCOA - while(CFRunLoopRunInMode(kCFRunLoopDefaultMode, 1.0e20, true) == kCFRunLoopRunTimedOut); -#else - QMacCocoaAutoReleasePool pool; - NSEvent *manualEvent = [NSApp nextEventMatchingMask:NSAnyEventMask - untilDate:[NSDate distantFuture] inMode:NSDefaultRunLoopMode - dequeue:YES]; - if (manualEvent) - [NSApp sendEvent:manualEvent]; -#endif + // to stay inside this function until at least one event is processed. + qt_mac_waitForMoreEvents(); flags &= ~QEventLoop::WaitForMoreEvents; } else { - // Done with event processing for now. Leave the function: + // Done with event processing for now. + // Leave the function: break; } } - // Because pending deffered-delete events are only sendt after - // returning from the loop level they were posted in, we schedule - // an extra wakup to force the _current_ run loop to process them (in - // case the application stands idle waiting for the delete event): - wakeUp(); +#ifdef QT_MAC_USE_COCOA + // In case we _now_ process events using [NSApp run], we need to stop it to + // ensure that: + // 1. the QEventLoop that called us is still executing, or + // 2. we have a modal session that needs to be spun instead. + // In case this is a plain call to processEvents (perhaps from a loop) + // from the application (rather than from a QEventLoop), we delay the + // interrupting until we/ actually enter a lower loop level (hence the + // deffered delete of the object below): + QtMacInterruptDispatcherHelp::interruptLater(); +#endif - if (d->interrupt){ - // We restart NSApplication by first stopping it, and then call 'run' - // again (NSApplication is actually already stopped, hence the need - // for a restart, but calling stop again will also make the call - // return from the current recursion). When the call returns to - // QEventLoop (mind, not from this recursion, but from the one we're - // about to stop), it will just call QEventDispatcherMac::processEvents() - // again. + if (d->interrupt) { + // We should continue to leave all recursion to processEvents until + // processEvents is called again (e.g. from a QEventLoop that + // was not yet told to quit: interrupt(); } + return retVal; } @@ -700,104 +715,169 @@ bool QEventDispatcherMacPrivate::blockSendPostedEvents = false; #ifdef QT_MAC_USE_COCOA QStack<QCocoaModalSessionInfo> QEventDispatcherMacPrivate::cocoaModalSessionStack; -bool QEventDispatcherMacPrivate::blockCocoaRequestModal = false; +bool QEventDispatcherMacPrivate::currentExecIsNSAppRun = false; +bool QEventDispatcherMacPrivate::nsAppRunCalledByQt = false; +NSModalSession QEventDispatcherMacPrivate::currentModalSessionCached = 0; -static void qt_mac_setChildDialogsResponsive(QWidget *widget, bool responsive) +int QEventDispatcherMacPrivate::activeModalSessionCount() { + // Returns the number of modal sessions created + // (and not just pushed onto the stack, pending to be created) + int count = 0; + for (int i=cocoaModalSessionStack.size()-1; i>=0; --i) { + QCocoaModalSessionInfo &info = cocoaModalSessionStack[i]; + if (info.session) + ++count; + } + return count; +} + +void QEventDispatcherMacPrivate::temporarilyStopAllModalSessions() +{ + // Stop all created modal session, and as such, make then + // pending again. The next call to currentModalSession will + // recreate the session on top again: + int stackSize = cocoaModalSessionStack.size(); + for (int i=stackSize-1; i>=0; --i) { + QCocoaModalSessionInfo &info = cocoaModalSessionStack[i]; + if (info.session) { + [NSApp endModalSession:info.session]; + info.session = 0; + } + } + currentModalSessionCached = 0; +} + +NSModalSession QEventDispatcherMacPrivate::currentModalSession() +{ + // If we have one or more modal windows, this function will create + // a session for each of those, and return the one for the top. + if (currentModalSessionCached) + return currentModalSessionCached; + + if (cocoaModalSessionStack.isEmpty()) + return 0; + + // Since this code will end up calling our Qt event handler + // (also from beginModalSessionForWindow), we need to block + // that to avoid side effects of events beeing delivered: + QBoolBlocker block(blockSendPostedEvents, true); + + if (![NSApp isRunning]) { + // Sadly, we need to introduce this little event flush + // to stop dialogs from blinking/poping in front if a + // modal session restart was needed: + while (NSEvent *event = [NSApp nextEventMatchingMask:NSAnyEventMask + untilDate:nil + inMode:NSDefaultRunLoopMode + dequeue: YES]) { + qt_mac_send_event(0, event, 0); + } + } + + int sessionCount = cocoaModalSessionStack.size(); + for (int i=0; i<sessionCount; ++i) { + QCocoaModalSessionInfo &info = cocoaModalSessionStack[i]; + if (!info.widget) + continue; + if (info.widget->testAttribute(Qt::WA_DontShowOnScreen)) + continue; + if (!info.session) { + QMacCocoaAutoReleasePool pool; + NSWindow *window = qt_mac_window_for(info.widget); + if (!window) + continue; + info.session = [NSApp beginModalSessionForWindow:window]; + } + currentModalSessionCached = info.session; + } + + return currentModalSessionCached; +} + +static void setChildrenWorksWhenModal(QWidget *widget, bool worksWhenModal) +{ + // For NSPanels (but not NSWindows, sadly), we can set the flag + // worksWhenModal, so that they are active even when they are not modal. QList<QDialog *> dialogs = widget->findChildren<QDialog *>(); for (int i=0; i<dialogs.size(); ++i){ NSWindow *window = qt_mac_window_for(dialogs[i]); if (window && [window isKindOfClass:[NSPanel class]]) { - [static_cast<NSPanel *>(window) setWorksWhenModal:responsive]; - if (responsive && dialogs[i]->isVisible()){ + [static_cast<NSPanel *>(window) setWorksWhenModal:worksWhenModal]; + if (worksWhenModal && dialogs[i]->isVisible()){ [window orderFront:window]; } } } } -NSModalSession QEventDispatcherMacPrivate::activeModalSession() +void QEventDispatcherMacPrivate::updateChildrenWorksWhenModal() { - // Create (if needed) and return the modal session - // for the top-most modal dialog, if any: - if (cocoaModalSessionStack.isEmpty()) - return 0; - QCocoaModalSessionInfo &info = cocoaModalSessionStack.last(); - if (!info.widget) - return 0; - if (info.widget->testAttribute(Qt::WA_DontShowOnScreen)){ - // INVARIANT: We have a modal widget, but it's not visible on screen. - // This will e.g. be true for native dialogs. Make the dialog children - // of the previous modal dialog unresponsive, so that the current dialog - // (native or not) is the only reponsive dialog on screen: - int size = cocoaModalSessionStack.size(); + // Make the dialog children of the widget + // active. And make the dialog children of + // the previous modal dialog unactive again: + int size = cocoaModalSessionStack.size(); + if (size > 0){ + if (QWidget *prevModal = cocoaModalSessionStack[size-1].widget) + setChildrenWorksWhenModal(prevModal, true); if (size > 1){ if (QWidget *prevModal = cocoaModalSessionStack[size-2].widget) - qt_mac_setChildDialogsResponsive(prevModal, false); + setChildrenWorksWhenModal(prevModal, false); } - return 0; } +} - if (!info.session) { - QMacCocoaAutoReleasePool pool; - NSWindow *window = qt_mac_window_for(info.widget); - if (!window) - return 0; - // 'beginModalSessionForWindow' will give the event loop a spin, and as - // such, deliver Qt events. This might lead to inconsistent behaviour - // (especially if CocoaRequestModal is delivered), so we need to block: - QBoolBlocker block(blockSendPostedEvents, true); - info.session = [NSApp beginModalSessionForWindow:window]; - // Make the dialog children of the current modal dialog - // responsive. And make the dialog children of - // the previous modal dialog unresponsive again: - qt_mac_setChildDialogsResponsive(info.widget, true); - int size = cocoaModalSessionStack.size(); - if (size > 1){ - if (QWidget *prevModal = cocoaModalSessionStack[size-2].widget) - qt_mac_setChildDialogsResponsive(prevModal, false); - } - } - return info.session; +void QEventDispatcherMacPrivate::beginModalSession(QWidget *widget) +{ + // Add a new, empty (null), NSModalSession to the stack. + // It will become active the next time QEventDispatcher::processEvents is called. + // A QCocoaModalSessionInfo is considered pending to become active if the widget pointer + // is non-zero, and the session pointer is zero (it will become active upon a call to + // currentModalSession). A QCocoaModalSessionInfo is considered pending to be stopped if + // the widget pointer is zero, and the session pointer is non-zero (it will be fully + // stopped in endModalSession(). + QCocoaModalSessionInfo info = {widget, 0}; + cocoaModalSessionStack.push(info); + updateChildrenWorksWhenModal(); + currentModalSessionCached = 0; } -void QEventDispatcherMacPrivate::rebuildModalSessionStack(bool pop) +void QEventDispatcherMacPrivate::endModalSession(QWidget *widget) { - // Calling [NSApp stopModal], or [NSApp stop], will stop all modal dialogs - // in one go. So to to not confuse cocoa, we need to stop all our modal - // sessions as well. QMacEventDispatcher will make them modal again - // in the correct order as long as they are left on the cocoaModalSessionStack - // and a CocoaRequestModal is posted: - if (cocoaModalSessionStack.isEmpty()) - return; + // Mark all sessions attached to widget as pending to be stopped. We do this + // by setting the widget pointer to zero, but leave the session pointer. + // We don't tell cocoa to stop any sessions just yet, because cocoa only understands + // when we stop the _current_ modal session (which is the session on top of + // the stack, and might not belong to 'widget'). + int stackSize = cocoaModalSessionStack.size(); + for (int i=stackSize-1; i>=0; --i) { + QCocoaModalSessionInfo &info = cocoaModalSessionStack[i]; + if (info.widget == widget) + info.widget = 0; + } - QMacCocoaAutoReleasePool pool; - [NSApp stopModal]; - [NSApp postEvent:[NSEvent otherEventWithType:NSApplicationDefined location:NSZeroPoint - modifierFlags:0 timestamp:0. windowNumber:0 context:0 - subtype:SHRT_MAX data1:0 data2:0] atStart:NO]; + // Now we stop, and remove, all sessions marked as pending + // to be stopped on _top_ of the stack, if any: + bool needToInterruptEventDispatcher = false; + bool needToUpdateChildrenWorksWhenModal = false; - for (int i=0; i<cocoaModalSessionStack.size(); ++i){ + for (int i=stackSize-1; i>=0; --i) { QCocoaModalSessionInfo &info = cocoaModalSessionStack[i]; + if (info.widget) + break; + cocoaModalSessionStack.remove(i); + needToUpdateChildrenWorksWhenModal = true; + currentModalSessionCached = 0; if (info.session) { [NSApp endModalSession:info.session]; - info.session = 0; + needToInterruptEventDispatcher = true; } } - if (pop) { - QCocoaModalSessionInfo info = cocoaModalSessionStack.pop(); - if (info.widget) - qt_mac_setChildDialogsResponsive(info.widget, false); - } - - if (!cocoaModalSessionStack.isEmpty()) { - // Since we now have pending modal sessions again, make - // sure that we enter modal for the one on the top later: - qApp->postEvent(qApp, new QEvent(QEvent::CocoaRequestModal)); - } else { - QCoreApplication::removePostedEvents(qApp, QEvent::CocoaRequestModal); - } + if (needToUpdateChildrenWorksWhenModal) + updateChildrenWorksWhenModal(); + if (needToInterruptEventDispatcher) + QEventDispatcherMac::instance()->interrupt(); } #endif @@ -858,27 +938,29 @@ void QEventDispatcherMacPrivate::postedEventsSourcePerformCallback(void *info) } } -#ifdef QT_MAC_USE_COCOA -static void stopNSApp() -{ - QMacCocoaAutoReleasePool pool; - static const short NSAppShouldStopForQt = SHRT_MAX; - [NSApp stop:NSApp]; - [NSApp postEvent:[NSEvent otherEventWithType:NSApplicationDefined location:NSZeroPoint - modifierFlags:0 timestamp:0. windowNumber:0 context:0 - subtype:NSAppShouldStopForQt data1:0 data2:0] atStart:NO]; -} -#endif - void QEventDispatcherMac::interrupt() { Q_D(QEventDispatcherMac); d->interrupt = true; wakeUp(); + #ifndef QT_MAC_USE_COCOA CFRunLoopStop(mainRunLoop()); #else - stopNSApp(); + QMacCocoaAutoReleasePool pool; + // In case we wait for more events inside + // processEvents (or NSApp run), post a dummy to wake it up: + static const short NSAppShouldStopForQt = SHRT_MAX; + [NSApp postEvent:[NSEvent otherEventWithType:NSApplicationDefined location:NSZeroPoint + modifierFlags:0 timestamp:0. windowNumber:0 context:0 + subtype:NSAppShouldStopForQt data1:0 data2:0] atStart:NO]; + + if (d->activeModalSessionCount() == 0) { + // We should only stop NSApp if we actually started it (and + // not some 3rd party application, e.g. if we are a plugin). + if (d->nsAppRunCalledByQt) + [NSApp stop:NSApp]; + } #endif } @@ -916,5 +998,52 @@ QEventDispatcherMac::~QEventDispatcherMac() CFRelease(d->waitingObserver); } +///////////////////////////////////////////////////////////////////////////// + +#ifdef QT_MAC_USE_COCOA + +QtMacInterruptDispatcherHelp* QtMacInterruptDispatcherHelp::instance = 0; + +QtMacInterruptDispatcherHelp::QtMacInterruptDispatcherHelp() : cancelled(false) +{ + // This is the whole point of encapsulation this code + // inside a class; we can make the code (inside destructor) + // execute on lower loop level: + deleteLater(); +} + +QtMacInterruptDispatcherHelp::~QtMacInterruptDispatcherHelp() +{ + if (cancelled) + return; + + instance = 0; + + if (QEventDispatcherMacPrivate::currentExecIsNSAppRun) { + int activeCount = QEventDispatcherMacPrivate::activeModalSessionCount(); + if (activeCount > 0) { + // The problem we now have hit: [NSApp stop] will not stop NSApp + // if a session is active; it will stop the session instead. + // So to stop NSApp, we need to temporarily stop all the + // sessions, then stop NSApp, then restart the session on top again. + // We need to do this to ensure that we're not stuck inside + // [NSApp run] when we really should be running a modal session: + QEventDispatcherMacPrivate::temporarilyStopAllModalSessions(); + } + } + // Always interrupt once more in case the modal session stack changed + // while processEvents was called manually from within the application: + QEventDispatcherMac::instance()->interrupt(); +} + +void QtMacInterruptDispatcherHelp::interruptLater() { + if (instance) { + instance->cancelled = true; + delete instance; + } + instance = new QtMacInterruptDispatcherHelp; +} + +#endif QT_END_NAMESPACE diff --git a/src/gui/kernel/qeventdispatcher_mac_p.h b/src/gui/kernel/qeventdispatcher_mac_p.h index 225d32e..6747d52 100644 --- a/src/gui/kernel/qeventdispatcher_mac_p.h +++ b/src/gui/kernel/qeventdispatcher_mac_p.h @@ -172,9 +172,15 @@ public: #ifdef QT_MAC_USE_COCOA // The following variables help organizing modal sessions: static QStack<QCocoaModalSessionInfo> cocoaModalSessionStack; - static bool blockCocoaRequestModal; - static NSModalSession activeModalSession(); - static void rebuildModalSessionStack(bool pop); + static bool currentExecIsNSAppRun; + static bool nsAppRunCalledByQt; + static NSModalSession currentModalSessionCached; + static void updateChildrenWorksWhenModal(); + static NSModalSession currentModalSession(); + static int activeModalSessionCount(); + static void temporarilyStopAllModalSessions(); + static void beginModalSession(QWidget *widget); + static void endModalSession(QWidget *widget); #endif MacSocketHash macSockets; @@ -192,6 +198,20 @@ private: CFRunLoopActivity activity, void *info); }; +#ifdef QT_MAC_USE_COCOA +class QtMacInterruptDispatcherHelp : public QObject +{ + static QtMacInterruptDispatcherHelp *instance; + bool cancelled; + + QtMacInterruptDispatcherHelp(); + ~QtMacInterruptDispatcherHelp(); + + public: + static void interruptLater(); +}; +#endif + QT_END_NAMESPACE #endif // QEVENTDISPATCHER_MAC_P_H diff --git a/src/gui/kernel/qformlayout.cpp b/src/gui/kernel/qformlayout.cpp index 4e632de..b3ecc35 100644 --- a/src/gui/kernel/qformlayout.cpp +++ b/src/gui/kernel/qformlayout.cpp @@ -1006,10 +1006,8 @@ QStyle* QFormLayoutPrivate::getStyle() const \since 4.4 \brief The QFormLayout class manages forms of input widgets and their associated labels. - \ingroup appearance \ingroup geomanagement - \mainclass QFormLayout is a convenience layout class that lays out its children in a two-column form. The left column consists of labels diff --git a/src/gui/kernel/qgridlayout.cpp b/src/gui/kernel/qgridlayout.cpp index 6624b77..1f25c63 100644 --- a/src/gui/kernel/qgridlayout.cpp +++ b/src/gui/kernel/qgridlayout.cpp @@ -980,8 +980,7 @@ QRect QGridLayoutPrivate::cellRect(int row, int col) const \brief The QGridLayout class lays out widgets in a grid. \ingroup geomanagement - \ingroup appearance - \mainclass + QGridLayout takes the space made available to it (by its parent layout or by the parentWidget()), divides it up into rows and diff --git a/src/gui/kernel/qkde.cpp b/src/gui/kernel/qkde.cpp index 23de838..98bf0a0 100644 --- a/src/gui/kernel/qkde.cpp +++ b/src/gui/kernel/qkde.cpp @@ -139,8 +139,6 @@ QString QKde::kdeStyle() return QLatin1String("plastique"); else return QLatin1String("windows"); - - return QString(); } /*!\internal diff --git a/src/gui/kernel/qkeymapper.cpp b/src/gui/kernel/qkeymapper.cpp index 0730ef6..7143358 100644 --- a/src/gui/kernel/qkeymapper.cpp +++ b/src/gui/kernel/qkeymapper.cpp @@ -51,7 +51,6 @@ QT_BEGIN_NAMESPACE /*! \class QKeyMapper \since 4.2 - \ingroup application \internal \sa QObject diff --git a/src/gui/kernel/qkeysequence.cpp b/src/gui/kernel/qkeysequence.cpp index 0716c37..53120da 100644 --- a/src/gui/kernel/qkeysequence.cpp +++ b/src/gui/kernel/qkeysequence.cpp @@ -152,9 +152,8 @@ void Q_AUTOTEST_EXPORT qt_set_sequence_auto_mnemonic(bool b) { qt_sequence_no_mn \brief The QKeySequence class encapsulates a key sequence as used by shortcuts. - \ingroup misc \ingroup shared - \mainclass + In its most common form, a key sequence describes a combination of keys that must be used together to perform some action. Key sequences diff --git a/src/gui/kernel/qlayout.cpp b/src/gui/kernel/qlayout.cpp index 3febd2c..4f1f52f 100644 --- a/src/gui/kernel/qlayout.cpp +++ b/src/gui/kernel/qlayout.cpp @@ -75,7 +75,6 @@ static int menuBarHeightForWidth(QWidget *menubar, int w) \class QLayout \brief The QLayout class is the base class of geometry managers. - \ingroup appearance \ingroup geomanagement This is an abstract base class inherited by the concrete classes diff --git a/src/gui/kernel/qlayoutitem.cpp b/src/gui/kernel/qlayoutitem.cpp index 47fe5e6..54f37bf 100644 --- a/src/gui/kernel/qlayoutitem.cpp +++ b/src/gui/kernel/qlayoutitem.cpp @@ -87,7 +87,6 @@ QSizePolicy::operator QVariant() const \brief The QLayoutItem class provides an abstract item that a QLayout manipulates. - \ingroup appearance \ingroup geomanagement This is used by custom layouts. @@ -116,7 +115,6 @@ QSizePolicy::operator QVariant() const /*! \class QSpacerItem - \ingroup appearance \ingroup geomanagement \brief The QSpacerItem class provides blank space in a layout. @@ -144,7 +142,6 @@ QSizePolicy::operator QVariant() const /*! \class QWidgetItem - \ingroup appearance \ingroup geomanagement \brief The QWidgetItem class is a layout item that represents a widget. diff --git a/src/gui/kernel/qmime_mac.cpp b/src/gui/kernel/qmime_mac.cpp index f4d4707..9e8de67 100644 --- a/src/gui/kernel/qmime_mac.cpp +++ b/src/gui/kernel/qmime_mac.cpp @@ -126,9 +126,8 @@ CFStringRef qt_mac_mime_typeUTI = CFSTR("com.pasteboard.trolltech.marker"); \l{http://developer.apple.com/macosx/uniformtypeidentifiers.html}{Uniform Type Identifier (UTI)} format. \since 4.2 - \ingroup io + \ingroup draganddrop - \ingroup misc Qt's drag and drop and clipboard facilities use the MIME standard. On X11, this maps trivially to the Xdnd protocol. On diff --git a/src/gui/kernel/qmime_win.cpp b/src/gui/kernel/qmime_win.cpp index 63f37af..7f82f53 100644 --- a/src/gui/kernel/qmime_win.cpp +++ b/src/gui/kernel/qmime_win.cpp @@ -219,9 +219,7 @@ Q_GLOBAL_STATIC(QWindowsMimeList, theMimeList); /*! \class QWindowsMime \brief The QWindowsMime class maps open-standard MIME to Window Clipboard formats. - \ingroup io \ingroup draganddrop - \ingroup misc Qt's drag-and-drop and clipboard facilities use the MIME standard. On X11, this maps trivially to the Xdnd protocol, but on Windows diff --git a/src/gui/kernel/qpalette.cpp b/src/gui/kernel/qpalette.cpp index 24e735c..c5ae66b 100644 --- a/src/gui/kernel/qpalette.cpp +++ b/src/gui/kernel/qpalette.cpp @@ -399,8 +399,8 @@ void QPalette::setColorGroup(ColorGroup cg, const QColorGroup &g) \ingroup appearance \ingroup shared - \ingroup multimedia - \mainclass + \ingroup painting + A palette consists of three color groups: \e Active, \e Disabled, and \e Inactive. All widgets in Qt contain a palette and diff --git a/src/gui/kernel/qshortcut.cpp b/src/gui/kernel/qshortcut.cpp index 194f648..1c5917c 100644 --- a/src/gui/kernel/qshortcut.cpp +++ b/src/gui/kernel/qshortcut.cpp @@ -63,7 +63,7 @@ QT_BEGIN_NAMESPACE \brief The QShortcut class is used to create keyboard shortcuts. \ingroup events - \mainclass + The QShortcut class provides a way of connecting keyboard shortcuts to Qt's \l{signals and slots} mechanism, so that diff --git a/src/gui/kernel/qsizepolicy.qdoc b/src/gui/kernel/qsizepolicy.qdoc new file mode 100644 index 0000000..200deb5 --- /dev/null +++ b/src/gui/kernel/qsizepolicy.qdoc @@ -0,0 +1,521 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \class QSizePolicy + \brief The QSizePolicy class is a layout attribute describing horizontal + and vertical resizing policy. + + \ingroup geomanagement + + The size policy of a widget is an expression of its willingness to + be resized in various ways, and affects how the widget is treated + by the \l{Layout Management}{layout engine}. Each widget returns a + QSizePolicy that describes the horizontal and vertical resizing + policy it prefers when being laid out. You can change this for + a specific widget by changing its QWidget::sizePolicy property. + + QSizePolicy contains two independent QSizePolicy::Policy values + and two stretch factors; one describes the widgets's horizontal + size policy, and the other describes its vertical size policy. It + also contains a flag to indicate whether the height and width of + its preferred size are related. + + The horizontal and vertical policies can be set in the + constructor, and altered using the setHorizontalPolicy() and + setVerticalPolicy() functions. The stretch factors can be set + using the setHorizontalStretch() and setVerticalStretch() + functions. The flag indicating whether the widget's + \l{QWidget::sizeHint()}{sizeHint()} is width-dependent (such as a + menu bar or a word-wrapping label) can be set using the + setHeightForWidth() function. + + The current size policies and stretch factors be retrieved using + the horizontalPolicy(), verticalPolicy(), horizontalStretch() and + verticalStretch() functions. Alternatively, use the transpose() + function to swap the horizontal and vertical policies and + stretches. The hasHeightForWidth() function returns the current + status of the flag indicating the size hint dependencies. + + Use the expandingDirections() function to determine whether the + associated widget can make use of more space than its + \l{QWidget::sizeHint()}{sizeHint()} function indicates, as well as + find out in which directions it can expand. + + Finally, the QSizePolicy class provides operators comparing this + size policy to a given policy, as well as a QVariant operator + storing this QSizePolicy as a QVariant object. + + \sa QSize, QWidget::sizeHint(), QWidget::sizePolicy, + QLayoutItem::sizeHint() +*/ + +/*! + \enum QSizePolicy::PolicyFlag + + These flags are combined together to form the various \l{Policy} + values: + + \value GrowFlag The widget can grow beyond its size hint if necessary. + \value ExpandFlag The widget should get as much space as possible. + \value ShrinkFlag The widget can shrink below its size hint if necessary. + \value IgnoreFlag The widget's size hint is ignored. The widget will get + as much space as possible. + + \sa Policy +*/ + +/*! + \enum QSizePolicy::Policy + + This enum describes the various per-dimension sizing types used + when constructing a QSizePolicy. + + \value Fixed The QWidget::sizeHint() is the only acceptable + alternative, so the widget can never grow or shrink (e.g. the + vertical direction of a push button). + + \value Minimum The sizeHint() is minimal, and sufficient. The + widget can be expanded, but there is no advantage to it being + larger (e.g. the horizontal direction of a push button). + It cannot be smaller than the size provided by sizeHint(). + + \value Maximum The sizeHint() is a maximum. The widget can be + shrunk any amount without detriment if other widgets need the + space (e.g. a separator line). + It cannot be larger than the size provided by sizeHint(). + + \value Preferred The sizeHint() is best, but the widget can be + shrunk and still be useful. The widget can be expanded, but there + is no advantage to it being larger than sizeHint() (the default + QWidget policy). + + \value Expanding The sizeHint() is a sensible size, but the + widget can be shrunk and still be useful. The widget can make use + of extra space, so it should get as much space as possible (e.g. + the horizontal direction of a horizontal slider). + + \value MinimumExpanding The sizeHint() is minimal, and sufficient. + The widget can make use of extra space, so it should get as much + space as possible (e.g. the horizontal direction of a horizontal + slider). + + \value Ignored The sizeHint() is ignored. The widget will get as + much space as possible. + + \sa PolicyFlag, setHorizontalPolicy(), setVerticalPolicy() +*/ + +/*! + \fn QSizePolicy::QSizePolicy() + + Constructs a QSizePolicy object with \l Fixed as its horizontal + and vertical policies. + + The policies can be altered using the setHorizontalPolicy() and + setVerticalPolicy() functions. Use the setHeightForWidth() + function if the preferred height of the widget is dependent on the + width of the widget (for example, a QLabel with line wrapping). + + \sa setHorizontalStretch(), setVerticalStretch() +*/ + +/*! + \fn QSizePolicy::QSizePolicy(Policy horizontal, Policy vertical) + + Constructs a QSizePolicy object with the given \a horizontal and + \a vertical policies, and DefaultType as the control type. + + Use setHeightForWidth() if the preferred height of the widget is + dependent on the width of the widget (for example, a QLabel with + line wrapping). + + \sa setHorizontalStretch(), setVerticalStretch() +*/ + +/*! + \fn QSizePolicy::QSizePolicy(Policy horizontal, Policy vertical, ControlType type) + \since 4.3 + + Constructs a QSizePolicy object with the given \a horizontal and + \a vertical policies, and the specified control \a type. + + Use setHeightForWidth() if the preferred height of the widget is + dependent on the width of the widget (for example, a QLabel with + line wrapping). + + \sa setHorizontalStretch(), setVerticalStretch(), controlType() +*/ + +/*! + \fn QSizePolicy::Policy QSizePolicy::horizontalPolicy() const + + Returns the horizontal component of the size policy. + + \sa setHorizontalPolicy(), verticalPolicy(), horizontalStretch() +*/ + +/*! + \fn QSizePolicy::Policy QSizePolicy::verticalPolicy() const + + Returns the vertical component of the size policy. + + \sa setVerticalPolicy(), horizontalPolicy(), verticalStretch() +*/ + +/*! + \fn void QSizePolicy::setHorizontalPolicy(Policy policy) + + Sets the horizontal component to the given \a policy. + + \sa horizontalPolicy(), setVerticalPolicy(), setHorizontalStretch() +*/ + +/*! + \fn void QSizePolicy::setVerticalPolicy(Policy policy) + + Sets the vertical component to the given \a policy. + + \sa verticalPolicy(), setHorizontalPolicy(), setVerticalStretch() +*/ + +/*! + \fn Qt::Orientations QSizePolicy::expandingDirections() const + + Returns whether a widget can make use of more space than the + QWidget::sizeHint() function indicates. + + A value of Qt::Horizontal or Qt::Vertical means that the widget + can grow horizontally or vertically (i.e., the horizontal or + vertical policy is \l Expanding or \l MinimumExpanding), whereas + Qt::Horizontal | Qt::Vertical means that it can grow in both + dimensions. + + \sa horizontalPolicy(), verticalPolicy() +*/ + +/*! + \fn ControlType QSizePolicy::controlType() const + \since 4.3 + + Returns the control type associated with the widget for which + this size policy applies. +*/ + +/*! + \fn void QSizePolicy::setControlType(ControlType type) + \since 4.3 + + Sets the control type associated with the widget for which this + size policy applies to \a type. + + The control type specifies the type of the widget for which this + size policy applies. It is used by some styles, notably + QMacStyle, to insert proper spacing between widgets. For example, + the Mac OS X Aqua guidelines specify that push buttons should be + separated by 12 pixels, whereas vertically stacked radio buttons + only require 6 pixels. + + \sa QStyle::layoutSpacing() +*/ + +/*! + \fn void QSizePolicy::setHeightForWidth(bool dependent) + + Sets the flag determining whether the widget's preferred height + depends on its width, to \a dependent. + + \sa hasHeightForWidth() +*/ + +/*! + \fn bool QSizePolicy::hasHeightForWidth() const + + Returns true if the widget's preferred height depends on its + width; otherwise returns false. + + \sa setHeightForWidth() +*/ + +/*! + \fn bool QSizePolicy::operator==(const QSizePolicy &other) const + + Returns true if this policy is equal to \a other; otherwise + returns false. + + \sa operator!=() +*/ + +/*! + \fn bool QSizePolicy::operator!=(const QSizePolicy &other) const + + Returns true if this policy is different from \a other; otherwise + returns false. + + \sa operator==() +*/ + +/*! + \fn int QSizePolicy::horizontalStretch() const + + Returns the horizontal stretch factor of the size policy. + + \sa setHorizontalStretch(), verticalStretch(), horizontalPolicy() +*/ + +/*! + \fn int QSizePolicy::verticalStretch() const + + Returns the vertical stretch factor of the size policy. + + \sa setVerticalStretch(), horizontalStretch(), verticalPolicy() +*/ + +/*! + \fn void QSizePolicy::setHorizontalStretch(uchar stretchFactor) + + Sets the horizontal stretch factor of the size policy to the given \a + stretchFactor. + + \sa horizontalStretch(), setVerticalStretch(), setHorizontalPolicy() +*/ + +/*! + \fn void QSizePolicy::setVerticalStretch(uchar stretchFactor) + + Sets the vertical stretch factor of the size policy to the given + \a stretchFactor. + + \sa verticalStretch(), setHorizontalStretch(), setVerticalPolicy() +*/ + +/*! + \fn void QSizePolicy::transpose() + + Swaps the horizontal and vertical policies and stretches. +*/ + +/*! + \enum QSizePolicy::ControlType + \since 4.3 + + This enum specifies the different types of widgets in terms of + layout interaction: + + \value DefaultType The default type, when none is specified. + \value ButtonBox A QDialogButtonBox instance. + \value CheckBox A QCheckBox instance. + \value ComboBox A QComboBox instance. + \value Frame A QFrame instance. + \value GroupBox A QGroupBox instance. + \value Label A QLabel instance. + \value Line A QFrame instance with QFrame::HLine or QFrame::VLine. + \value LineEdit A QLineEdit instance. + \value PushButton A QPushButton instance. + \value RadioButton A QRadioButton instance. + \value Slider A QAbstractSlider instance. + \value SpinBox A QAbstractSpinBox instance. + \value TabWidget A QTabWidget instance. + \value ToolButton A QToolButton instance. + + \sa setControlType(), controlType() +*/ + +#ifdef QT3_SUPPORT +/*! + \typedef QSizePolicy::SizeType + \compat + + Use the QSizePolicy::Policy enum instead. +*/ + +/*! + \enum QSizePolicy::ExpandData + \compat + + Use the Qt::Orientations enum instead. + + \value NoDirection Use 0 instead. + \value Horizontally Use Qt::Horizontal instead. + \value Vertically Use Qt::Vertical instead. + \value BothDirections Use Qt::Horizontal | Qt::Vertical instead. +*/ + +/*! + \fn bool QSizePolicy::mayShrinkHorizontally() const + + Use the horizontalPolicy() function combined with the + QSizePolicy::PolicyFlag enum instead. + + \oldcode + bool policy = mayShrinkHorizontally(); + \newcode + bool policy = horizontalPolicy() & QSizePolicy::ShrinkFlag; + \endcode +*/ + +/*! + \fn bool QSizePolicy::mayShrinkVertically() const + + Use the verticalPolicy() function combined with the + QSizePolicy::PolicyFlag enum instead. + + \oldcode + bool policy = mayShrinkVertically(); + \newcode + bool policy = verticalPolicy() & QSizePolicy::ShrinkFlag; + \endcode +*/ + +/*! + \fn bool QSizePolicy::mayGrowHorizontally() const + + Use the horizontalPolicy() function combined with the + QSizePolicy::PolicyFlag enum instead. + + \oldcode + bool policy = mayGrowHorizontally(); + \newcode + bool policy = horizontalPolicy() & QSizePolicy::GrowFlag; + \endcode +*/ + +/*! + \fn bool QSizePolicy::mayGrowVertically() const + + Use the verticalPolicy() function combined with the + QSizePolicy::PolicyFlag enum instead. + + \oldcode + bool policy = mayGrowVertically(); + \newcode + bool policy = verticalPolicy() & QSizePolicy::GrowFlag; + \endcode +*/ + +/*! + \fn Qt::QSizePolicy::Orientations QSizePolicy::expanding() const + + Use expandingDirections() instead. +*/ + +/*! + \fn QSizePolicy::QSizePolicy(Policy horizontal, Policy vertical, bool dependent) + + Use the QSizePolicy() constructor and the setHeightForWidth() + function instead. + + \oldcode + QSizePolicy *policy = new QSizePolicy(horizontal, vertical, dependent); + \newcode + QSizePolicy *policy = new QSizePolicy(horizontal, vertical); + policy->setHeightForWidth(dependent); + \endcode +*/ + +/*! + \fn QSizePolicy::QSizePolicy(Policy horizontal, Policy vertical, uchar horizontalStretch, + uchar verticalStretch, bool dependent) + + Use the QSizePolicy() constructor and call the + setHorizontalStretch(), setVerticalStretch(), and + setHeightForWidth() functions instead. + + \oldcode + QSizePolicy *policy = new QSizePolicy(horizontal, vertical, + horizontalStretch, verticalStretch, + dependent); + \newcode + QSizePolicy *policy = new QSizePolicy(horizontal, vertical); + policy->setHorizontalStretch(horizontalStretch); + policy->setVerticalStretch(verticalStretch); + policy->setHeightForWidth(dependent); + \endcode +*/ + +/*! + \fn QSizePolicy::Policy QSizePolicy::horData() const + + Use horizontalPolicy() instead. +*/ + +/*! + \fn QSizePolicy::Policy QSizePolicy::verData() const + + Use verticalPolicy() instead. +*/ + +/*! + \fn void QSizePolicy::setHorData(Policy policy) + + Use setHorizontalPolicy() instead. +*/ + +/*! + \fn void QSizePolicy::setVerData(Policy policy) + + Use setVerticalPolicy() instead. +*/ + +/*! + \fn uint QSizePolicy::horStretch() const + + Use horizontalStretch() instead. +*/ + +/*! + \fn uint QSizePolicy::verStretch() const + + Use verticalStretch() instead. +*/ + +/*! + \fn void QSizePolicy::setHorStretch(uchar stretch) + + Use setHorizontalStretch() instead. +*/ + +/*! + \fn void QSizePolicy::setVerStretch(uchar stretch) + + Use setVerticalStretch() instead. +*/ +#endif diff --git a/src/gui/kernel/qsound.cpp b/src/gui/kernel/qsound.cpp index 4e58c3a..7a16acf 100644 --- a/src/gui/kernel/qsound.cpp +++ b/src/gui/kernel/qsound.cpp @@ -106,7 +106,7 @@ public: \brief The QSound class provides access to the platform audio facilities. \ingroup multimedia - \mainclass + Qt provides the most commonly required audio operation in GUI applications: asynchronously playing a sound file. This is most diff --git a/src/gui/kernel/qstackedlayout.cpp b/src/gui/kernel/qstackedlayout.cpp index 4025b73..c7e25b0 100644 --- a/src/gui/kernel/qstackedlayout.cpp +++ b/src/gui/kernel/qstackedlayout.cpp @@ -65,8 +65,6 @@ public: only one widget is visible at a time. \ingroup geomanagement - \ingroup appearance - \mainclass QStackedLayout can be used to create a user interface similar to the one provided by QTabWidget. There is also a convenience diff --git a/src/gui/kernel/qtooltip.cpp b/src/gui/kernel/qtooltip.cpp index 3ea9cb4..8193c55 100644 --- a/src/gui/kernel/qtooltip.cpp +++ b/src/gui/kernel/qtooltip.cpp @@ -73,7 +73,7 @@ QT_BEGIN_NAMESPACE widget. \ingroup helpsystem - \mainclass + The tip is a short piece of text reminding the user of the widget's function. It is drawn immediately below the given diff --git a/src/gui/kernel/qwhatsthis.cpp b/src/gui/kernel/qwhatsthis.cpp index 5a37801..6d0bc33 100644 --- a/src/gui/kernel/qwhatsthis.cpp +++ b/src/gui/kernel/qwhatsthis.cpp @@ -78,7 +78,7 @@ QT_BEGIN_NAMESPACE widget, i.e. answering the question "What's This?". \ingroup helpsystem - \mainclass + "What's This?" help is part of an application's online help system, and provides users with information about the diff --git a/src/gui/kernel/qwidget.cpp b/src/gui/kernel/qwidget.cpp index 633e8bf..4de08fd 100644 --- a/src/gui/kernel/qwidget.cpp +++ b/src/gui/kernel/qwidget.cpp @@ -460,7 +460,7 @@ void QWidget::setAutoFillBackground(bool enabled) \brief The QWidget class is the base class of all user interface objects. \ingroup basicwidgets - \mainclass + The widget is the atom of the user interface: it receives mouse, keyboard and other events from the window system, and paints a representation of @@ -2785,7 +2785,7 @@ void QWidget::showFullScreen() Calling this function only affects \l{isWindow()}{windows}. On X11, this function may not work properly with certain window - managers. See \l{geometry.html}{Window Geometry} for an explanation. + managers. See the \l{Window Geometry} documentation for an explanation. \sa setWindowState(), showNormal(), showMinimized(), show(), hide(), isVisible() */ @@ -2840,7 +2840,7 @@ void QWidget::showNormal() bool QWidget::isEnabledTo(QWidget* ancestor) const { const QWidget * w = this; - while (w && !w->testAttribute(Qt::WA_ForceDisabled) + while (!w->testAttribute(Qt::WA_ForceDisabled) && !w->isWindow() && w->parentWidget() && w->parentWidget() != ancestor) @@ -3134,8 +3134,8 @@ void QWidget::setDisabled(bool disable) \brief geometry of the widget relative to its parent including any window frame - See the \link geometry.html Window Geometry documentation\endlink - for an overview of geometry issues with windows. + See the \l{Window Geometry} documentation for an overview of geometry + issues with windows. By default, this property contains a value that depends on the user's platform and screen geometry. @@ -3161,8 +3161,8 @@ QRect QWidget::frameGeometry() const \brief the x coordinate of the widget relative to its parent including any window frame - See the \link geometry.html Window Geometry documentation\endlink - for an overview of window geometry. + See the \l{Window Geometry} documentation for an overview of geometry + issues with windows. By default, this property has a value of 0. @@ -3181,8 +3181,8 @@ int QWidget::x() const \brief the y coordinate of the widget relative to its parent and including any window frame - See the \link geometry.html Window Geometry documentation\endlink - for an overview of window geometry. + See the \l{Window Geometry} documentation for an overview of geometry + issues with windows. By default, this property has a value of 0. @@ -3214,8 +3214,8 @@ int QWidget::y() const \warning Calling move() or setGeometry() inside moveEvent() can lead to infinite recursion. - See the \link geometry.html Window Geometry documentation\endlink - for an overview of window geometry. + See the \l{Window Geometry} documentation for an overview of geometry + issues with windows. \sa frameGeometry, size x(), y() */ @@ -3245,8 +3245,8 @@ QPoint QWidget::pos() const \warning Calling setGeometry() inside resizeEvent() or moveEvent() can lead to infinite recursion. - See the \link geometry.html Window Geometry documentation\endlink - for an overview of window geometry. + See the \l{Window Geometry} documentation for an overview of geometry + issues with windows. By default, this property contains a value that depends on the user's platform and screen geometry. @@ -3295,8 +3295,8 @@ QPoint QWidget::pos() const \property QWidget::width \brief the width of the widget excluding any window frame - See the \link geometry.html Window Geometry documentation\endlink - for an overview of window geometry. + See the \l{Window Geometry} documentation for an overview of geometry + issues with windows. \note Do not use this function to find the width of a screen on a \l{QDesktopWidget}{multiple screen desktop}. Read @@ -3312,8 +3312,8 @@ QPoint QWidget::pos() const \property QWidget::height \brief the height of the widget excluding any window frame - See the \link geometry.html Window Geometry documentation\endlink - for an overview of window geometry. + See the \l{Window Geometry} documentation for an overview of geometry + issues with windows. \note Do not use this function to find the height of a screen on a \l {QDesktopWidget} {multiple screen desktop}. Read @@ -3332,8 +3332,8 @@ QPoint QWidget::pos() const The rect property equals QRect(0, 0, width(), height()). - See the \link geometry.html Window Geometry documentation\endlink - for an overview of window geometry. + See the \l{Window Geometry} documentation for an overview of geometry + issues with windows. By default, this property contains a value that depends on the user's platform and screen geometry. @@ -6347,8 +6347,8 @@ void QWidget::setGeometry(const QRect &r) \snippet doc/src/snippets/code/src_gui_kernel_qwidget.cpp 11 - See the \link geometry.html Window Geometry documentation\endlink - for an overview of geometry issues with windows. + See the \l{Window Geometry} documentation for an overview of geometry + issues with windows. Use QMainWindow::saveState() to save the geometry and the state of toolbars and dock widgets. @@ -6389,8 +6389,8 @@ QByteArray QWidget::saveGeometry() const \snippet doc/src/snippets/code/src_gui_kernel_qwidget.cpp 12 - See the \link geometry.html Window Geometry documentation\endlink - for an overview of geometry issues with windows. + See the \l{Window Geometry} documentation for an overview of geometry + issues with windows. Use QMainWindow::restoreState() to restore the geometry and the state of toolbars and dock widgets. @@ -7358,8 +7358,7 @@ bool QWidget::isVisibleTo(QWidget* ancestor) const if (!ancestor) return isVisible(); const QWidget * w = this; - while (w - && !w->isHidden() + while (!w->isHidden() && !w->isWindow() && w->parentWidget() && w->parentWidget() != ancestor) diff --git a/src/gui/kernel/qwidget_mac.mm b/src/gui/kernel/qwidget_mac.mm index 0a21af7..fbb05c4 100644 --- a/src/gui/kernel/qwidget_mac.mm +++ b/src/gui/kernel/qwidget_mac.mm @@ -72,7 +72,6 @@ ** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ** ****************************************************************************/ -//#define QT_RASTER_PAINTENGINE #include <private/qt_mac_p.h> #include <private/qeventdispatcher_mac_p.h> @@ -88,9 +87,6 @@ #include "qlayout.h" #include "qmenubar.h" #include <private/qbackingstore_p.h> -#ifdef QT_RASTER_PAINTENGINE -# include <private/qpaintengine_raster_p.h> -#endif #include <private/qwindowsurface_mac_p.h> #include <private/qpaintengine_mac_p.h> #include "qpainter.h" @@ -1220,11 +1216,6 @@ OSStatus QWidgetPrivate::qt_widget_event(EventHandlerCallRef er, EventRef event, QApplication::sendSpontaneousEvent(widget, &e); if (!redirectionOffset.isNull()) widget->d_func()->restoreRedirected(); -#ifdef QT_RASTER_PAINTENGINE - if(engine && engine->type() == QPaintEngine::Raster) - static_cast<QRasterPaintEngine*>(engine)->flush(widget, - qrgn.boundingRect().topLeft()); -#endif //cleanup if (engine) @@ -3105,7 +3096,7 @@ void QWidgetPrivate::update_sys(const QRegion &rgn) dirtyOnWidget += rgn; #ifndef QT_MAC_USE_COCOA RgnHandle rgnHandle = rgn.toQDRgnForUpdate_sys(); - if (rgnHandle) + if (rgnHandle) HIViewSetNeedsDisplayInRegion(qt_mac_nativeview_for(q), QMacSmartQuickDrawRegion(rgnHandle), true); else { HIViewSetNeedsDisplay(qt_mac_nativeview_for(q), true); // do a complete repaint on overflow. @@ -3201,10 +3192,13 @@ void QWidgetPrivate::show_sys() #else // sync the opacity value back (in case of a fade). [window setAlphaValue:q->windowOpacity()]; - [window makeKeyAndOrderFront:window]; + + // If this window is app modal, we need to start spinning + // a modal session for it. Interrupting + // the event dispatcher will make this happend: if (data.window_modality == Qt::ApplicationModal) - QCoreApplication::postEvent(qApp, new QEvent(QEvent::CocoaRequestModal)); + QEventDispatcherMac::instance()->interrupt(); #endif if (q->windowType() == Qt::Popup) { if (q->focusWidget()) @@ -3222,13 +3216,6 @@ void QWidgetPrivate::show_sys() #endif } else if (!q->testAttribute(Qt::WA_ShowWithoutActivating)) { qt_event_request_activate(q); -#ifdef QT_MAC_USE_COCOA - if (q->windowModality() == Qt::ApplicationModal) { - // We call 'activeModalSession' early to force creation of q's modal - // session. This seems neccessary for child dialogs to pop to front: - QEventDispatcherMacPrivate::activeModalSession(); - } -#endif } } else if(topData()->embedded || !q->parentWidget() || q->parentWidget()->isVisible()) { #ifndef QT_MAC_USE_COCOA @@ -4563,21 +4550,6 @@ Q_GLOBAL_STATIC(QPaintEngineCleanupHandler, engineHandler) QPaintEngine *QWidget::paintEngine() const { QPaintEngine *&pe = engineHandler()->engine; -#ifdef QT_RASTER_PAINTENGINE - if (!pe) { - if(qgetenv("QT_MAC_USE_COREGRAPHICS").isNull()) - pe = new QRasterPaintEngine(); - else - pe = new QCoreGraphicsPaintEngine(); - } - if (pe->isActive()) { - QPaintEngine *engine = - qgetenv("QT_MAC_USE_COREGRAPHICS").isNull() - ? (QPaintEngine*)new QRasterPaintEngine() : (QPaintEngine*)new QCoreGraphicsPaintEngine(); - engine->setAutoDestruct(true); - return engine; - } -#else if (!pe) pe = new QCoreGraphicsPaintEngine(); if (pe->isActive()) { @@ -4585,7 +4557,6 @@ QPaintEngine *QWidget::paintEngine() const engine->setAutoDestruct(true); return engine; } -#endif return pe; } diff --git a/src/gui/kernel/qwidgetaction.cpp b/src/gui/kernel/qwidgetaction.cpp index 911d332..a397e39 100644 --- a/src/gui/kernel/qwidgetaction.cpp +++ b/src/gui/kernel/qwidgetaction.cpp @@ -54,6 +54,8 @@ QT_BEGIN_NAMESPACE for inserting custom widgets into action based containers, such as toolbars. + \ingroup mainwindow-classes + Most actions in an application are represented as items in menus or buttons in toolbars. However sometimes more complex widgets are necessary. For example a zoom action in a word processor may be @@ -100,9 +102,6 @@ QT_BEGIN_NAMESPACE DirectConnection. \endlist - \ingroup application - \mainclass - \sa QAction, QActionGroup, QWidget */ diff --git a/src/gui/kernel/qx11info_x11.cpp b/src/gui/kernel/qx11info_x11.cpp index 786d48d..136f7f8 100644 --- a/src/gui/kernel/qx11info_x11.cpp +++ b/src/gui/kernel/qx11info_x11.cpp @@ -179,6 +179,7 @@ QX11InfoData* QX11Info::getX11Data(bool def) const QX11InfoData* res = 0; if (def) { res = new QX11InfoData; + res->ref = 0; res->screen = appScreen(); res->depth = appDepth(); res->cells = appCells(); @@ -189,8 +190,8 @@ QX11InfoData* QX11Info::getX11Data(bool def) const } else if (x11data) { res = new QX11InfoData; *res = *x11data; + res->ref = 0; } - res->ref = 0; return res; } diff --git a/src/gui/kernel/x11.pri b/src/gui/kernel/x11.pri index ac40f69..82de1b6 100644 --- a/src/gui/kernel/x11.pri +++ b/src/gui/kernel/x11.pri @@ -1,4 +1,4 @@ x11 { - contains(QT_CONFIG, nas): LIBS += -laudio -lXt + contains(QT_CONFIG, nas): LIBS_PRIVATE += -laudio -lXt } diff --git a/src/gui/math3d/qgenericmatrix.cpp b/src/gui/math3d/qgenericmatrix.cpp index 271571c..1c924c7 100644 --- a/src/gui/math3d/qgenericmatrix.cpp +++ b/src/gui/math3d/qgenericmatrix.cpp @@ -47,6 +47,8 @@ QT_BEGIN_NAMESPACE \class QGenericMatrix \brief The QGenericMatrix class is a template class that represents a NxM transformation matrix with N columns and M rows. \since 4.6 + \ingroup painting + \ingroup painting-3D The QGenericMatrix template has four parameters: diff --git a/src/gui/math3d/qmatrix4x4.cpp b/src/gui/math3d/qmatrix4x4.cpp index a67a832..8fc439b 100644 --- a/src/gui/math3d/qmatrix4x4.cpp +++ b/src/gui/math3d/qmatrix4x4.cpp @@ -52,6 +52,7 @@ QT_BEGIN_NAMESPACE \class QMatrix4x4 \brief The QMatrix4x4 class represents a 4x4 transformation matrix in 3D space. \since 4.6 + \ingroup painting-3D \sa QVector3D, QGenericMatrix */ @@ -1009,11 +1010,24 @@ QMatrix4x4& QMatrix4x4::rotate(qreal angle, const QVector3D& vector) */ QMatrix4x4& QMatrix4x4::rotate(qreal angle, qreal x, qreal y, qreal z) { + if (angle == 0.0f) + return *this; QMatrix4x4 m(1); // The "1" says to not load the identity. - qreal a = angle * M_PI / 180.0f; - qreal c = qCos(a); - qreal s = qSin(a); - qreal ic; + qreal c, s, ic; + if (angle == 90.0f || angle == -270.0f) { + s = 1.0f; + c = 0.0f; + } else if (angle == -90.0f || angle == 270.0f) { + s = -1.0f; + c = 0.0f; + } else if (angle == 180.0f || angle == -180.0f) { + s = 0.0f; + c = -1.0f; + } else { + qreal a = angle * M_PI / 180.0f; + c = qCos(a); + s = qSin(a); + } bool quick = false; if (x == 0.0f) { if (y == 0.0f) { diff --git a/src/gui/math3d/qquaternion.cpp b/src/gui/math3d/qquaternion.cpp index 9e56966..b2c598f 100644 --- a/src/gui/math3d/qquaternion.cpp +++ b/src/gui/math3d/qquaternion.cpp @@ -51,6 +51,7 @@ QT_BEGIN_NAMESPACE \class QQuaternion \brief The QQuaternion class represents a quaternion consisting of a vector and scalar. \since 4.6 + \ingroup painting-3D Quaternions are used to represent rotations in 3D space, and consist of a 3D rotation axis specified by the x, y, and z diff --git a/src/gui/math3d/qvector2d.cpp b/src/gui/math3d/qvector2d.cpp index f7fef6c..1662020 100644 --- a/src/gui/math3d/qvector2d.cpp +++ b/src/gui/math3d/qvector2d.cpp @@ -53,6 +53,8 @@ QT_BEGIN_NAMESPACE \class QVector2D \brief The QVector2D class represents a vector or vertex in 2D space. \since 4.6 + \ingroup painting + \ingroup painting-3D The QVector2D class can also be used to represent vertices in 2D space. We therefore do not need to provide a separate vertex class. diff --git a/src/gui/math3d/qvector3d.cpp b/src/gui/math3d/qvector3d.cpp index 2915d3a..0e3f4e1 100644 --- a/src/gui/math3d/qvector3d.cpp +++ b/src/gui/math3d/qvector3d.cpp @@ -53,6 +53,7 @@ QT_BEGIN_NAMESPACE \class QVector3D \brief The QVector3D class represents a vector or vertex in 3D space. \since 4.6 + \ingroup painting-3D Vectors are one of the main building blocks of 3D representation and drawing. They consist of three coordinates, traditionally called diff --git a/src/gui/math3d/qvector4d.cpp b/src/gui/math3d/qvector4d.cpp index dd64103..a2efff7 100644 --- a/src/gui/math3d/qvector4d.cpp +++ b/src/gui/math3d/qvector4d.cpp @@ -53,6 +53,7 @@ QT_BEGIN_NAMESPACE \class QVector4D \brief The QVector4D class represents a vector or vertex in 4D space. \since 4.6 + \ingroup painting-3D The QVector4D class can also be used to represent vertices in 4D space. We therefore do not need to provide a separate vertex class. diff --git a/src/gui/painting/painting.pri b/src/gui/painting/painting.pri index 2f5b2d6..7ea4dc1 100644 --- a/src/gui/painting/painting.pri +++ b/src/gui/painting/painting.pri @@ -46,7 +46,7 @@ HEADERS += \ SOURCES += \ painting/qbezier.cpp \ - painting/qblendfunctions.cpp \ + painting/qblendfunctions.cpp \ painting/qbrush.cpp \ painting/qcolor.cpp \ painting/qcolor_p.cpp \ @@ -57,6 +57,7 @@ SOURCES += \ painting/qmatrix.cpp \ painting/qmemrotate.cpp \ painting/qoutlinemapper.cpp \ + painting/qpaintdevice.cpp \ painting/qpaintengine.cpp \ painting/qpaintengine_alpha.cpp \ painting/qpaintengine_preview.cpp \ @@ -75,13 +76,10 @@ SOURCES += \ painting/qstroker.cpp \ painting/qstylepainter.cpp \ painting/qtessellator.cpp \ - painting/qwindowsurface.cpp \ painting/qtextureglyphcache.cpp \ painting/qtransform.cpp \ + painting/qwindowsurface.cpp \ - DEFINES += QT_RASTER_IMAGEENGINE - win32:DEFINES += QT_RASTER_PAINTENGINE - embedded:DEFINES += QT_RASTER_PAINTENGINE symbian:DEFINES += QT_RASTER_PAINTENGINE SOURCES += \ painting/qpaintengine_raster.cpp \ @@ -361,6 +359,7 @@ embedded { } + symbian { HEADERS += painting/qwindowsurface_s60_p.h SOURCES += painting/qwindowsurface_s60.cpp @@ -376,3 +375,10 @@ symbian { QMAKE_CXXFLAGS.ARMCC *= -O3 } +contains(QT_CONFIG, zlib) { + INCLUDEPATH += ../3rdparty/zlib +} else:!contains(QT_CONFIG, no-zlib) { + unix:LIBS_PRIVATE += -lz +# win32:LIBS += libz.lib +} + diff --git a/src/gui/painting/qblendfunctions.cpp b/src/gui/painting/qblendfunctions.cpp index 1121c0e..e447301 100644 --- a/src/gui/painting/qblendfunctions.cpp +++ b/src/gui/painting/qblendfunctions.cpp @@ -793,8 +793,351 @@ void qt_scale_image_argb32_on_argb32(uchar *destPixels, int dbpl, } } +struct QTransformImageVertex +{ + qreal x, y, u, v; // destination coordinates (x, y) and source coordinates (u, v) +}; + +template <class SrcT, class DestT, class Blender> +void qt_transform_image_rasterize(DestT *destPixels, int dbpl, + const SrcT *srcPixels, int sbpl, + const QTransformImageVertex &topLeft, const QTransformImageVertex &bottomLeft, + const QTransformImageVertex &topRight, const QTransformImageVertex &bottomRight, + const QRect &sourceRect, + const QRect &clip, + qreal topY, qreal bottomY, + int dudx, int dvdx, int dudy, int dvdy, int u0, int v0, + Blender blender) +{ + int fromY = qMax(qRound(topY), clip.top()); + int toY = qMin(qRound(bottomY), clip.top() + clip.height()); + if (fromY >= toY) + return; + + qreal leftSlope = (bottomLeft.x - topLeft.x) / (bottomLeft.y - topLeft.y); + qreal rightSlope = (bottomRight.x - topRight.x) / (bottomRight.y - topRight.y); + int dx_l = int(leftSlope * 0x10000); + int dx_r = int(rightSlope * 0x10000); + int x_l = int((topLeft.x + (0.5 + fromY - topLeft.y) * leftSlope + 0.5) * 0x10000); + int x_r = int((topRight.x + (0.5 + fromY - topRight.y) * rightSlope + 0.5) * 0x10000); + + int fromX, toX, x1, x2, u, v, i, ii; + DestT *line; + for (int y = fromY; y < toY; ++y) { + line = reinterpret_cast<DestT *>(reinterpret_cast<uchar *>(destPixels) + y * dbpl); + + fromX = qMax(x_l >> 16, clip.left()); + toX = qMin(x_r >> 16, clip.left() + clip.width()); + if (fromX < toX) { + // Because of rounding, we can get source coordinates outside the source image. + // Clamp these coordinates to the source rect to avoid segmentation fault and + // garbage on the screen. + + // Find the first pixel on the current scan line where the source coordinates are within the source rect. + x1 = fromX; + u = x1 * dudx + y * dudy + u0; + v = x1 * dvdx + y * dvdy + v0; + for (; x1 < toX; ++x1) { + int uu = u >> 16; + int vv = v >> 16; + if (uu >= sourceRect.left() && uu < sourceRect.left() + sourceRect.width() + && vv >= sourceRect.top() && vv < sourceRect.top() + sourceRect.height()) { + break; + } + u += dudx; + v += dvdx; + } + + // Find the last pixel on the current scan line where the source coordinates are within the source rect. + x2 = toX; + u = (x2 - 1) * dudx + y * dudy + u0; + v = (x2 - 1) * dvdx + y * dvdy + v0; + for (; x2 > x1; --x2) { + int uu = u >> 16; + int vv = v >> 16; + if (uu >= sourceRect.left() && uu < sourceRect.left() + sourceRect.width() + && vv >= sourceRect.top() && vv < sourceRect.top() + sourceRect.height()) { + break; + } + u -= dudx; + v -= dvdx; + } + + // Set up values at the beginning of the scan line. + u = fromX * dudx + y * dudy + u0; + v = fromX * dvdx + y * dvdy + v0; + line += fromX; + + // Beginning of the scan line, with per-pixel checks. + i = x1 - fromX; + while (i) { + int uu = qBound(sourceRect.left(), u >> 16, sourceRect.left() + sourceRect.width() - 1); + int vv = qBound(sourceRect.top(), v >> 16, sourceRect.top() + sourceRect.height() - 1); + blender.write(line, reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + vv * sbpl)[uu]); + u += dudx; + v += dvdx; + ++line; + --i; + } + + // Middle of the scan line, without checks. + // Manual loop unrolling. + i = x2 - x1; + ii = i >> 3; + while (ii) { + blender.write(&line[0], reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; + blender.write(&line[1], reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; + blender.write(&line[2], reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; + blender.write(&line[3], reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; + blender.write(&line[4], reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; + blender.write(&line[5], reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; + blender.write(&line[6], reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; + blender.write(&line[7], reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; + line += 8; + --ii; + } + switch (i & 7) { + case 7: blender.write(line, reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; ++line; + case 6: blender.write(line, reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; ++line; + case 5: blender.write(line, reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; ++line; + case 4: blender.write(line, reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; ++line; + case 3: blender.write(line, reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; ++line; + case 2: blender.write(line, reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; ++line; + case 1: blender.write(line, reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; ++line; + } + + // End of the scan line, with per-pixel checks. + i = toX - x2; + while (i) { + int uu = qBound(sourceRect.left(), u >> 16, sourceRect.left() + sourceRect.width() - 1); + int vv = qBound(sourceRect.top(), v >> 16, sourceRect.top() + sourceRect.height() - 1); + blender.write(line, reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + vv * sbpl)[uu]); + u += dudx; + v += dvdx; + ++line; + --i; + } + } + x_l += dx_l; + x_r += dx_r; + } +} + +template <class SrcT, class DestT, class Blender> +void qt_transform_image(DestT *destPixels, int dbpl, + const SrcT *srcPixels, int sbpl, + const QRectF &targetRect, + const QRectF &sourceRect, + const QRect &clip, + const QTransform &targetRectTransform, + Blender blender) +{ + enum Corner + { + TopLeft, + TopRight, + BottomRight, + BottomLeft + }; + + // map source rectangle to destination. + QTransformImageVertex v[4]; + v[TopLeft].u = v[BottomLeft].u = sourceRect.left(); + v[TopLeft].v = v[TopRight].v = sourceRect.top(); + v[TopRight].u = v[BottomRight].u = sourceRect.right(); + v[BottomLeft].v = v[BottomRight].v = sourceRect.bottom(); + targetRectTransform.map(targetRect.left(), targetRect.top(), &v[TopLeft].x, &v[TopLeft].y); + targetRectTransform.map(targetRect.right(), targetRect.top(), &v[TopRight].x, &v[TopRight].y); + targetRectTransform.map(targetRect.left(), targetRect.bottom(), &v[BottomLeft].x, &v[BottomLeft].y); + targetRectTransform.map(targetRect.right(), targetRect.bottom(), &v[BottomRight].x, &v[BottomRight].y); + + // find topmost vertex. + int topmost = 0; + for (int i = 1; i < 4; ++i) { + if (v[i].y < v[topmost].y) + topmost = i; + } + // rearrange array such that topmost vertex is at index 0. + switch (topmost) { + case 1: + { + QTransformImageVertex t = v[0]; + for (int i = 0; i < 3; ++i) + v[i] = v[i+1]; + v[3] = t; + } + break; + case 2: + qSwap(v[0], v[2]); + qSwap(v[1], v[3]); + break; + case 3: + { + QTransformImageVertex t = v[3]; + for (int i = 3; i > 0; --i) + v[i] = v[i-1]; + v[0] = t; + } + break; + } + + // if necessary, swap vertex 1 and 3 such that 1 is to the left of 3. + qreal dx1 = v[1].x - v[0].x; + qreal dy1 = v[1].y - v[0].y; + qreal dx2 = v[3].x - v[0].x; + qreal dy2 = v[3].y - v[0].y; + if (dx1 * dy2 - dx2 * dy1 > 0) + qSwap(v[1], v[3]); + + QTransformImageVertex u = {v[1].x - v[0].x, v[1].y - v[0].y, v[1].u - v[0].u, v[1].v - v[0].v}; + QTransformImageVertex w = {v[2].x - v[0].x, v[2].y - v[0].y, v[2].u - v[0].u, v[2].v - v[0].v}; + + qreal det = u.x * w.y - u.y * w.x; + if (det == 0) + return; + + qreal invDet = 1.0 / det; + qreal m11, m12, m21, m22, mdx, mdy; + + m11 = (u.u * w.y - u.y * w.u) * invDet; + m12 = (u.x * w.u - u.u * w.x) * invDet; + m21 = (u.v * w.y - u.y * w.v) * invDet; + m22 = (u.x * w.v - u.v * w.x) * invDet; + mdx = v[0].u - m11 * v[0].x - m12 * v[0].y; + mdy = v[0].v - m21 * v[0].x - m22 * v[0].y; + + int dudx = int(m11 * 0x10000); + int dvdx = int(m21 * 0x10000); + int dudy = int(m12 * 0x10000); + int dvdy = int(m22 * 0x10000); + int u0 = qCeil((0.5 * m11 + 0.5 * m12 + mdx) * 0x10000) - 1; + int v0 = qCeil((0.5 * m21 + 0.5 * m22 + mdy) * 0x10000) - 1; + + int x1 = qFloor(sourceRect.left()); + int y1 = qFloor(sourceRect.top()); + int x2 = qCeil(sourceRect.right()); + int y2 = qCeil(sourceRect.bottom()); + QRect sourceRectI(x1, y1, x2 - x1, y2 - y1); + + // rasterize trapezoids. + if (v[1].y < v[3].y) { + qt_transform_image_rasterize(destPixels, dbpl, srcPixels, sbpl, v[0], v[1], v[0], v[3], sourceRectI, clip, v[0].y, v[1].y, dudx, dvdx, dudy, dvdy, u0, v0, blender); + qt_transform_image_rasterize(destPixels, dbpl, srcPixels, sbpl, v[1], v[2], v[0], v[3], sourceRectI, clip, v[1].y, v[3].y, dudx, dvdx, dudy, dvdy, u0, v0, blender); + qt_transform_image_rasterize(destPixels, dbpl, srcPixels, sbpl, v[1], v[2], v[3], v[2], sourceRectI, clip, v[3].y, v[2].y, dudx, dvdx, dudy, dvdy, u0, v0, blender); + } else { + qt_transform_image_rasterize(destPixels, dbpl, srcPixels, sbpl, v[0], v[1], v[0], v[3], sourceRectI, clip, v[0].y, v[3].y, dudx, dvdx, dudy, dvdy, u0, v0, blender); + qt_transform_image_rasterize(destPixels, dbpl, srcPixels, sbpl, v[0], v[1], v[3], v[2], sourceRectI, clip, v[3].y, v[1].y, dudx, dvdx, dudy, dvdy, u0, v0, blender); + qt_transform_image_rasterize(destPixels, dbpl, srcPixels, sbpl, v[1], v[2], v[3], v[2], sourceRectI, clip, v[1].y, v[2].y, dudx, dvdx, dudy, dvdy, u0, v0, blender); + } +} + +void qt_transform_image_rgb16_on_rgb16(uchar *destPixels, int dbpl, + const uchar *srcPixels, int sbpl, + const QRectF &targetRect, + const QRectF &sourceRect, + const QRect &clip, + const QTransform &targetRectTransform, + int const_alpha) +{ + if (const_alpha == 256) { + Blend_RGB16_on_RGB16_NoAlpha noAlpha; + qt_transform_image(reinterpret_cast<quint16 *>(destPixels), dbpl, + reinterpret_cast<const quint16 *>(srcPixels), sbpl, + targetRect, sourceRect, clip, targetRectTransform, noAlpha); + } else { + Blend_RGB16_on_RGB16_ConstAlpha constAlpha(const_alpha); + qt_transform_image(reinterpret_cast<quint16 *>(destPixels), dbpl, + reinterpret_cast<const quint16 *>(srcPixels), sbpl, + targetRect, sourceRect, clip, targetRectTransform, constAlpha); + } +} + +void qt_transform_image_argb24_on_rgb16(uchar *destPixels, int dbpl, + const uchar *srcPixels, int sbpl, + const QRectF &targetRect, + const QRectF &sourceRect, + const QRect &clip, + const QTransform &targetRectTransform, + int const_alpha) +{ + if (const_alpha == 256) { + Blend_ARGB24_on_RGB16_SourceAlpha noAlpha; + qt_transform_image(reinterpret_cast<quint16 *>(destPixels), dbpl, + reinterpret_cast<const qargb8565 *>(srcPixels), sbpl, + targetRect, sourceRect, clip, targetRectTransform, noAlpha); + } else { + Blend_ARGB24_on_RGB16_SourceAndConstAlpha constAlpha(const_alpha); + qt_transform_image(reinterpret_cast<quint16 *>(destPixels), dbpl, + reinterpret_cast<const qargb8565 *>(srcPixels), sbpl, + targetRect, sourceRect, clip, targetRectTransform, constAlpha); + } +} +void qt_transform_image_argb32_on_rgb16(uchar *destPixels, int dbpl, + const uchar *srcPixels, int sbpl, + const QRectF &targetRect, + const QRectF &sourceRect, + const QRect &clip, + const QTransform &targetRectTransform, + int const_alpha) +{ + if (const_alpha == 256) { + Blend_ARGB32_on_RGB16_SourceAlpha noAlpha; + qt_transform_image(reinterpret_cast<quint16 *>(destPixels), dbpl, + reinterpret_cast<const quint32 *>(srcPixels), sbpl, + targetRect, sourceRect, clip, targetRectTransform, noAlpha); + } else { + Blend_ARGB32_on_RGB16_SourceAndConstAlpha constAlpha(const_alpha); + qt_transform_image(reinterpret_cast<quint16 *>(destPixels), dbpl, + reinterpret_cast<const quint32 *>(srcPixels), sbpl, + targetRect, sourceRect, clip, targetRectTransform, constAlpha); + } +} + + +void qt_transform_image_rgb32_on_rgb32(uchar *destPixels, int dbpl, + const uchar *srcPixels, int sbpl, + const QRectF &targetRect, + const QRectF &sourceRect, + const QRect &clip, + const QTransform &targetRectTransform, + int const_alpha) +{ + if (const_alpha == 256) { + Blend_RGB32_on_RGB32_NoAlpha noAlpha; + qt_transform_image(reinterpret_cast<quint32 *>(destPixels), dbpl, + reinterpret_cast<const quint32 *>(srcPixels), sbpl, + targetRect, sourceRect, clip, targetRectTransform, noAlpha); + } else { + Blend_RGB32_on_RGB32_ConstAlpha constAlpha(const_alpha); + qt_transform_image(reinterpret_cast<quint32 *>(destPixels), dbpl, + reinterpret_cast<const quint32 *>(srcPixels), sbpl, + targetRect, sourceRect, clip, targetRectTransform, constAlpha); + } +} + +void qt_transform_image_argb32_on_argb32(uchar *destPixels, int dbpl, + const uchar *srcPixels, int sbpl, + const QRectF &targetRect, + const QRectF &sourceRect, + const QRect &clip, + const QTransform &targetRectTransform, + int const_alpha) +{ + if (const_alpha == 256) { + Blend_ARGB32_on_ARGB32_SourceAlpha sourceAlpha; + qt_transform_image(reinterpret_cast<quint32 *>(destPixels), dbpl, + reinterpret_cast<const quint32 *>(srcPixels), sbpl, + targetRect, sourceRect, clip, targetRectTransform, sourceAlpha); + } else { + Blend_ARGB32_on_ARGB32_SourceAndConstAlpha constAlpha(const_alpha); + qt_transform_image(reinterpret_cast<quint32 *>(destPixels), dbpl, + reinterpret_cast<const quint32 *>(srcPixels), sbpl, + targetRect, sourceRect, clip, targetRectTransform, constAlpha); + } +} + SrcOverScaleFunc qScaleFunctions[QImage::NImageFormats][QImage::NImageFormats] = { { // Format_Invalid 0, // Format_Invalid, @@ -1378,5 +1721,295 @@ SrcOverBlendFunc qBlendFunctions[QImage::NImageFormats][QImage::NImageFormats] = } }; +SrcOverTransformFunc qTransformFunctions[QImage::NImageFormats][QImage::NImageFormats] = { + { // Format_Invalid + 0, // Format_Invalid, + 0, // Format_Mono, + 0, // Format_MonoLSB, + 0, // Format_Indexed8, + 0, // Format_RGB32, + 0, // Format_ARGB32, + 0, // Format_ARGB32_Premultiplied, + 0, // Format_RGB16, + 0, // Format_ARGB8565_Premultiplied, + 0, // Format_RGB666, + 0, // Format_ARGB6666_Premultiplied, + 0, // Format_RGB555, + 0, // Format_ARGB8555_Premultiplied, + 0, // Format_RGB888, + 0, // Format_RGB444, + 0 // Format_ARGB4444_Premultiplied, + }, + { // Format_Mono + 0, // Format_Invalid, + 0, // Format_Mono, + 0, // Format_MonoLSB, + 0, // Format_Indexed8, + 0, // Format_RGB32, + 0, // Format_ARGB32, + 0, // Format_ARGB32_Premultiplied, + 0, // Format_RGB16, + 0, // Format_ARGB8565_Premultiplied, + 0, // Format_RGB666, + 0, // Format_ARGB6666_Premultiplied, + 0, // Format_RGB555, + 0, // Format_ARGB8555_Premultiplied, + 0, // Format_RGB888, + 0, // Format_RGB444, + 0 // Format_ARGB4444_Premultiplied, + }, + { // Format_MonoLSB + 0, // Format_Invalid, + 0, // Format_Mono, + 0, // Format_MonoLSB, + 0, // Format_Indexed8, + 0, // Format_RGB32, + 0, // Format_ARGB32, + 0, // Format_ARGB32_Premultiplied, + 0, // Format_RGB16, + 0, // Format_ARGB8565_Premultiplied, + 0, // Format_RGB666, + 0, // Format_ARGB6666_Premultiplied, + 0, // Format_RGB555, + 0, // Format_ARGB8555_Premultiplied, + 0, // Format_RGB888, + 0, // Format_RGB444, + 0 // Format_ARGB4444_Premultiplied, + }, + { // Format_Indexed8 + 0, // Format_Invalid, + 0, // Format_Mono, + 0, // Format_MonoLSB, + 0, // Format_Indexed8, + 0, // Format_RGB32, + 0, // Format_ARGB32, + 0, // Format_ARGB32_Premultiplied, + 0, // Format_RGB16, + 0, // Format_ARGB8565_Premultiplied, + 0, // Format_RGB666, + 0, // Format_ARGB6666_Premultiplied, + 0, // Format_RGB555, + 0, // Format_ARGB8555_Premultiplied, + 0, // Format_RGB888, + 0, // Format_RGB444, + 0 // Format_ARGB4444_Premultiplied, + }, + { // Format_RGB32 + 0, // Format_Invalid, + 0, // Format_Mono, + 0, // Format_MonoLSB, + 0, // Format_Indexed8, + qt_transform_image_rgb32_on_rgb32, // Format_RGB32, + 0, // Format_ARGB32, + qt_transform_image_argb32_on_argb32, // Format_ARGB32_Premultiplied, + 0, // Format_RGB16, + 0, // Format_ARGB8565_Premultiplied, + 0, // Format_RGB666, + 0, // Format_ARGB6666_Premultiplied, + 0, // Format_RGB555, + 0, // Format_ARGB8555_Premultiplied, + 0, // Format_RGB888, + 0, // Format_RGB444, + 0 // Format_ARGB4444_Premultiplied, + }, + { // Format_ARGB32 + 0, // Format_Invalid, + 0, // Format_Mono, + 0, // Format_MonoLSB, + 0, // Format_Indexed8, + 0, // Format_RGB32, + 0, // Format_ARGB32, + 0, // Format_ARGB32_Premultiplied, + 0, // Format_RGB16, + 0, // Format_ARGB8565_Premultiplied, + 0, // Format_RGB666, + 0, // Format_ARGB6666_Premultiplied, + 0, // Format_RGB555, + 0, // Format_ARGB8555_Premultiplied, + 0, // Format_RGB888, + 0, // Format_RGB444, + 0 // Format_ARGB4444_Premultiplied, + }, + { // Format_ARGB32_Premultiplied + 0, // Format_Invalid, + 0, // Format_Mono, + 0, // Format_MonoLSB, + 0, // Format_Indexed8, + qt_transform_image_rgb32_on_rgb32, // Format_RGB32, + 0, // Format_ARGB32, + qt_transform_image_argb32_on_argb32, // Format_ARGB32_Premultiplied, + 0, // Format_RGB16, + 0, // Format_ARGB8565_Premultiplied, + 0, // Format_RGB666, + 0, // Format_ARGB6666_Premultiplied, + 0, // Format_RGB555, + 0, // Format_ARGB8555_Premultiplied, + 0, // Format_RGB888, + 0, // Format_RGB444, + 0 // Format_ARGB4444_Premultiplied, + }, + { // Format_RGB16 + 0, // Format_Invalid, + 0, // Format_Mono, + 0, // Format_MonoLSB, + 0, // Format_Indexed8, + 0, // Format_RGB32, + 0, // Format_ARGB32, + qt_transform_image_argb32_on_rgb16, // Format_ARGB32_Premultiplied, + qt_transform_image_rgb16_on_rgb16, // Format_RGB16, + qt_transform_image_argb24_on_rgb16, // Format_ARGB8565_Premultiplied, + 0, // Format_RGB666, + 0, // Format_ARGB6666_Premultiplied, + 0, // Format_RGB555, + 0, // Format_ARGB8555_Premultiplied, + 0, // Format_RGB888, + 0, // Format_RGB444, + 0 // Format_ARGB4444_Premultiplied, + }, + { // Format_ARGB8565_Premultiplied + 0, // Format_Invalid, + 0, // Format_Mono, + 0, // Format_MonoLSB, + 0, // Format_Indexed8, + 0, // Format_RGB32, + 0, // Format_ARGB32, + 0, // Format_ARGB32_Premultiplied, + 0, // Format_RGB16, + 0, // Format_ARGB8565_Premultiplied, + 0, // Format_RGB666, + 0, // Format_ARGB6666_Premultiplied, + 0, // Format_RGB555, + 0, // Format_ARGB8555_Premultiplied, + 0, // Format_RGB888, + 0, // Format_RGB444, + 0 // Format_ARGB4444_Premultiplied, + }, + { // Format_RGB666 + 0, // Format_Invalid, + 0, // Format_Mono, + 0, // Format_MonoLSB, + 0, // Format_Indexed8, + 0, // Format_RGB32, + 0, // Format_ARGB32, + 0, // Format_ARGB32_Premultiplied, + 0, // Format_RGB16, + 0, // Format_ARGB8565_Premultiplied, + 0, // Format_RGB666, + 0, // Format_ARGB6666_Premultiplied, + 0, // Format_RGB555, + 0, // Format_ARGB8555_Premultiplied, + 0, // Format_RGB888, + 0, // Format_RGB444, + 0 // Format_ARGB4444_Premultiplied, + }, + { // Format_ARGB6666_Premultiplied + 0, // Format_Invalid, + 0, // Format_Mono, + 0, // Format_MonoLSB, + 0, // Format_Indexed8, + 0, // Format_RGB32, + 0, // Format_ARGB32, + 0, // Format_ARGB32_Premultiplied, + 0, // Format_RGB16, + 0, // Format_ARGB8565_Premultiplied, + 0, // Format_RGB666, + 0, // Format_ARGB6666_Premultiplied, + 0, // Format_RGB555, + 0, // Format_ARGB8555_Premultiplied, + 0, // Format_RGB888, + 0, // Format_RGB444, + 0 // Format_ARGB4444_Premultiplied, + }, + { // Format_RGB555 + 0, // Format_Invalid, + 0, // Format_Mono, + 0, // Format_MonoLSB, + 0, // Format_Indexed8, + 0, // Format_RGB32, + 0, // Format_ARGB32, + 0, // Format_ARGB32_Premultiplied, + 0, // Format_RGB16, + 0, // Format_ARGB8565_Premultiplied, + 0, // Format_RGB666, + 0, // Format_ARGB6666_Premultiplied, + 0, // Format_RGB555, + 0, // Format_ARGB8555_Premultiplied, + 0, // Format_RGB888, + 0, // Format_RGB444, + 0 // Format_ARGB4444_Premultiplied, + }, + { // Format_ARGB8555_Premultiplied + 0, // Format_Invalid, + 0, // Format_Mono, + 0, // Format_MonoLSB, + 0, // Format_Indexed8, + 0, // Format_RGB32, + 0, // Format_ARGB32, + 0, // Format_ARGB32_Premultiplied, + 0, // Format_RGB16, + 0, // Format_ARGB8565_Premultiplied, + 0, // Format_RGB666, + 0, // Format_ARGB6666_Premultiplied, + 0, // Format_RGB555, + 0, // Format_ARGB8555_Premultiplied, + 0, // Format_RGB888, + 0, // Format_RGB444, + 0 // Format_ARGB4444_Premultiplied, + }, + { // Format_RGB888 + 0, // Format_Invalid, + 0, // Format_Mono, + 0, // Format_MonoLSB, + 0, // Format_Indexed8, + 0, // Format_RGB32, + 0, // Format_ARGB32, + 0, // Format_ARGB32_Premultiplied, + 0, // Format_RGB16, + 0, // Format_ARGB8565_Premultiplied, + 0, // Format_RGB666, + 0, // Format_ARGB6666_Premultiplied, + 0, // Format_RGB555, + 0, // Format_ARGB8555_Premultiplied, + 0, // Format_RGB888, + 0, // Format_RGB444, + 0 // Format_ARGB4444_Premultiplied, + }, + { // Format_RGB444 + 0, // Format_Invalid, + 0, // Format_Mono, + 0, // Format_MonoLSB, + 0, // Format_Indexed8, + 0, // Format_RGB32, + 0, // Format_ARGB32, + 0, // Format_ARGB32_Premultiplied, + 0, // Format_RGB16, + 0, // Format_ARGB8565_Premultiplied, + 0, // Format_RGB666, + 0, // Format_ARGB6666_Premultiplied, + 0, // Format_RGB555, + 0, // Format_ARGB8555_Premultiplied, + 0, // Format_RGB888, + 0, // Format_RGB444, + 0 // Format_ARGB4444_Premultiplied, + }, + { // Format_ARGB4444_Premultiplied + 0, // Format_Invalid, + 0, // Format_Mono, + 0, // Format_MonoLSB, + 0, // Format_Indexed8, + 0, // Format_RGB32, + 0, // Format_ARGB32, + 0, // Format_ARGB32_Premultiplied, + 0, // Format_RGB16, + 0, // Format_ARGB8565_Premultiplied, + 0, // Format_RGB666, + 0, // Format_ARGB6666_Premultiplied, + 0, // Format_RGB555, + 0, // Format_ARGB8555_Premultiplied, + 0, // Format_RGB888, + 0, // Format_RGB444, + 0 // Format_ARGB4444_Premultiplied, + } +}; QT_END_NAMESPACE diff --git a/src/gui/painting/qbrush.cpp b/src/gui/painting/qbrush.cpp index 1289403..b005842 100644 --- a/src/gui/painting/qbrush.cpp +++ b/src/gui/painting/qbrush.cpp @@ -258,7 +258,7 @@ struct QBrushDataPointerDeleter /*! \class QBrush - \ingroup multimedia + \ingroup painting \ingroup shared \brief The QBrush class defines the fill pattern of shapes drawn @@ -1164,7 +1164,7 @@ QDataStream &operator>>(QDataStream &s, QBrush &b) /*! \class QGradient - \ingroup multimedia + \ingroup painting \ingroup shared \brief The QGradient class is used in combination with QBrush to @@ -1528,7 +1528,7 @@ bool QGradient::operator==(const QGradient &gradient) /*! \class QLinearGradient - \ingroup multimedia + \ingroup painting \brief The QLinearGradient class is used in combination with QBrush to specify a linear gradient brush. @@ -1707,7 +1707,7 @@ void QLinearGradient::setFinalStop(const QPointF &stop) /*! \class QRadialGradient - \ingroup multimedia + \ingroup painting \brief The QRadialGradient class is used in combination with QBrush to specify a radial gradient brush. @@ -1964,7 +1964,7 @@ void QRadialGradient::setFocalPoint(const QPointF &focalPoint) /*! \class QConicalGradient - \ingroup multimedia + \ingroup painting \brief The QConicalGradient class is used in combination with QBrush to specify a conical gradient brush. diff --git a/src/gui/painting/qcolor.cpp b/src/gui/painting/qcolor.cpp index 11a9ae7..4e93f04 100644 --- a/src/gui/painting/qcolor.cpp +++ b/src/gui/painting/qcolor.cpp @@ -66,9 +66,9 @@ QT_BEGIN_NAMESPACE \class QColor \brief The QColor class provides colors based on RGB, HSV or CMYK values. - \ingroup multimedia + \ingroup painting \ingroup appearance - \mainclass + A color is normally specified in terms of RGB (red, green, and blue) components, but it is also possible to specify it in terms diff --git a/src/gui/painting/qcolormap.qdoc b/src/gui/painting/qcolormap.qdoc new file mode 100644 index 0000000..e4a88f0 --- /dev/null +++ b/src/gui/painting/qcolormap.qdoc @@ -0,0 +1,152 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \class QColormap + \ingroup painting + + \brief The QColormap class maps device independent QColors to device + dependent pixel values. +*/ + +/*! \enum QColormap::Mode + + This enum describes how QColormap maps device independent RGB + values to device dependent pixel values. + + \value Direct Pixel values are derived directly from the RGB + values, also known as "True Color." + + \value Indexed Pixel values represent indexes into a vector of + available colors, i.e. QColormap uses the index of the color that + most closely matches an RGB value. + + \value Gray Similar to \c Indexed, pixel values represent a vector + of available gray tones. QColormap uses the index of the gray + tone that most closely matches the computed gray tone of an RGB + value. +*/ + +/*! + \fn QColormap QColormap::instance(int screen) + + Returns the colormap for the specified \a screen. If \a screen is + -1, this function returns the colormap for the default screen. +*/ + +/*! + \fn QColormap::QColormap(const QColormap &colormap) + + Constructs a copy of another \a colormap. +*/ + +/*! + \fn QColormap::~QColormap() + + Destroys the colormap. +*/ + +/*! + \fn int QColormap::size() const + + Returns the size of the colormap for \c Indexed and \c Gray modes; + Returns -1 for \c Direct mode. + + \sa colormap() +*/ + +/*! + \fn uint QColormap::pixel(const QColor &color) const + + Returns a device dependent pixel value for the \a color. + + \sa colorAt() +*/ + +/*! + \fn int QColormap::depth() const + + Returns the depth of the device. + + \sa size() +*/ + +/*! + \fn QColormap::Mode QColormap::mode() const + + Returns the mode of this colormap. + + \sa QColormap::Mode +*/ + +/*! + \fn const QColor QColormap::colorAt(uint pixel) const + + Returns a QColor for the \a pixel. + + \sa pixel() +*/ + +/*! + \fn const QVector<QColor> QColormap::colormap() const + + Returns a vector of colors which represents the devices colormap + for \c Indexed and \c Gray modes. This function returns an empty + vector for \c Direct mode. + + \sa size() +*/ + +/*! \fn HPALETTE QColormap::hPal() + + This function is only available on Windows. + + Returns an handle to the HPALETTE used by this colormap. If no + HPALETTE is being used, this function returns zero. +*/ + +/*! \since 4.2 + + \fn QColormap &QColormap::operator=(const QColormap &colormap) + + Assigns the given \a colormap to \e this color map and returns + a reference to \e this color map. +*/ diff --git a/src/gui/painting/qdrawhelper_p.h b/src/gui/painting/qdrawhelper_p.h index 942b088..0607867 100644 --- a/src/gui/painting/qdrawhelper_p.h +++ b/src/gui/painting/qdrawhelper_p.h @@ -146,6 +146,14 @@ typedef void (*SrcOverScaleFunc)(uchar *destPixels, int dbpl, const QRect &clipRect, int const_alpha); +typedef void (*SrcOverTransformFunc)(uchar *destPixels, int dbpl, + const uchar *src, int spbl, + const QRectF &targetRect, + const QRectF &sourceRect, + const QRect &clipRect, + const QTransform &targetRectTransform, + int const_alpha); + struct DrawHelper { ProcessSpans blendColor; @@ -158,6 +166,7 @@ struct DrawHelper { extern SrcOverBlendFunc qBlendFunctions[QImage::NImageFormats][QImage::NImageFormats]; extern SrcOverScaleFunc qScaleFunctions[QImage::NImageFormats][QImage::NImageFormats]; +extern SrcOverTransformFunc qTransformFunctions[QImage::NImageFormats][QImage::NImageFormats]; extern DrawHelper qDrawHelper[QImage::NImageFormats]; diff --git a/src/gui/painting/qmatrix.cpp b/src/gui/painting/qmatrix.cpp index ce71a84..abff9bf 100644 --- a/src/gui/painting/qmatrix.cpp +++ b/src/gui/painting/qmatrix.cpp @@ -57,7 +57,7 @@ QT_BEGIN_NAMESPACE coordinate system. \obsolete - \ingroup multimedia + \ingroup painting A matrix specifies how to translate, scale, shear or rotate the coordinate system, and is typically used when rendering graphics. diff --git a/src/gui/painting/qpaintdevice.cpp b/src/gui/painting/qpaintdevice.cpp new file mode 100644 index 0000000..6477952 --- /dev/null +++ b/src/gui/painting/qpaintdevice.cpp @@ -0,0 +1,66 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qpaintdevice.h" + +QT_BEGIN_NAMESPACE + +extern void qt_painter_removePaintDevice(QPaintDevice *); //qpainter.cpp + +QPaintDevice::QPaintDevice() +{ + painters = 0; +} + +QPaintDevice::~QPaintDevice() +{ + if (paintingActive()) + qWarning("QPaintDevice: Cannot destroy paint device that is being " + "painted"); + qt_painter_removePaintDevice(this); +} + + +int QPaintDevice::metric(PaintDeviceMetric) const +{ + qWarning("QPaintDevice::metrics: Device has no metric information"); + return 0; +} diff --git a/src/gui/painting/qpaintdevice.qdoc b/src/gui/painting/qpaintdevice.qdoc new file mode 100644 index 0000000..5933484 --- /dev/null +++ b/src/gui/painting/qpaintdevice.qdoc @@ -0,0 +1,289 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \class QPaintDevice + \brief The QPaintDevice class is the base class of objects that + can be painted. + + \ingroup painting + + A paint device is an abstraction of a two-dimensional space that + can be drawn using a QPainter. Its default coordinate system has + its origin located at the top-left position. X increases to the + right and Y increases downwards. The unit is one pixel. + + The drawing capabilities of QPaintDevice are currently implemented + by the QWidget, QImage, QPixmap, QGLPixelBuffer, QPicture, and + QPrinter subclasses. + + To implement support for a new backend, you must derive from + QPaintDevice and reimplement the virtual paintEngine() function to + tell QPainter which paint engine should be used to draw on this + particular device. Note that you also must create a corresponding + paint engine to be able to draw on the device, i.e derive from + QPaintEngine and reimplement its virtual functions. + + \warning Qt requires that a QApplication object exists before + any paint devices can be created. Paint devices access window + system resources, and these resources are not initialized before + an application object is created. + + The QPaintDevice class provides several functions returning the + various device metrics: The depth() function returns its bit depth + (number of bit planes). The height() function returns its height + in default coordinate system units (e.g. pixels for QPixmap and + QWidget) while heightMM() returns the height of the device in + millimeters. Similiarily, the width() and widthMM() functions + return the width of the device in default coordinate system units + and in millimeters, respectively. Alternatively, the protected + metric() function can be used to retrieve the metric information + by specifying the desired PaintDeviceMetric as argument. + + The logicalDpiX() and logicalDpiY() functions return the + horizontal and vertical resolution of the device in dots per + inch. The physicalDpiX() and physicalDpiY() functions also return + the resolution of the device in dots per inch, but note that if + the logical and vertical resolution differ, the corresponding + QPaintEngine must handle the mapping. Finally, the numColors() + function returns the number of different colors available for the + paint device. + + \sa QPaintEngine, QPainter, {The Coordinate System}, {The Paint + System} +*/ + +/*! + \enum QPaintDevice::PaintDeviceMetric + + Describes the various metrics of a paint device. + + \value PdmWidth The width of the paint device in default + coordinate system units (e.g. pixels for QPixmap and QWidget). See + also width(). + + \value PdmHeight The height of the paint device in default + coordinate system units (e.g. pixels for QPixmap and QWidget). See + also height(). + + \value PdmWidthMM The width of the paint device in millimeters. See + also widthMM(). + + \value PdmHeightMM The height of the paint device in millimeters. See + also heightMM(). + + \value PdmNumColors The number of different colors available for + the paint device. See also numColors(). + + \value PdmDepth The bit depth (number of bit planes) of the paint + device. See also depth(). + + \value PdmDpiX The horizontal resolution of the device in dots per + inch. See also logicalDpiX(). + + \value PdmDpiY The vertical resolution of the device in dots per inch. See + also logicalDpiY(). + + \value PdmPhysicalDpiX The horizontal resolution of the device in + dots per inch. See also physicalDpiX(). + + \value PdmPhysicalDpiY The vertical resolution of the device in + dots per inch. See also physicalDpiY(). + + \sa metric() +*/ + +/*! + \fn QPaintDevice::QPaintDevice() + + Constructs a paint device. This constructor can be invoked only from + subclasses of QPaintDevice. +*/ + +/*! + \fn QPaintDevice::~QPaintDevice() + + Destroys the paint device and frees window system resources. +*/ + +/*! + \fn int QPaintDevice::devType() const + + \internal + + Returns the device type identifier, which is QInternal::Widget + if the device is a QWidget, QInternal::Pixmap if it's a + QPixmap, QInternal::Printer if it's a QPrinter, + QInternal::Picture if it's a QPicture, or + QInternal::UnknownDevice in other cases. +*/ + +/*! + \fn bool QPaintDevice::paintingActive() const + + Returns true if the device is currently being painted on, i.e. someone has + called QPainter::begin() but not yet called QPainter::end() for + this device; otherwise returns false. + + \sa QPainter::isActive() +*/ + +/*! + \fn QPaintEngine *QPaintDevice::paintEngine() const + + Returns a pointer to the paint engine used for drawing on the + device. +*/ + +/*! + \fn int QPaintDevice::metric(PaintDeviceMetric metric) const + + Returns the metric information for the given paint device \a metric. + + \sa PaintDeviceMetric +*/ + +/*! + \fn int QPaintDevice::width() const + + Returns the width of the paint device in default coordinate system + units (e.g. pixels for QPixmap and QWidget). + + \sa widthMM() +*/ + +/*! + \fn int QPaintDevice::height() const + + Returns the height of the paint device in default coordinate + system units (e.g. pixels for QPixmap and QWidget). + + \sa heightMM() +*/ + +/*! + \fn int QPaintDevice::widthMM() const + + Returns the width of the paint device in millimeters. Due to platform + limitations it may not be possible to use this function to determine + the actual physical size of a widget on the screen. + + \sa width() +*/ + +/*! + \fn int QPaintDevice::heightMM() const + + Returns the height of the paint device in millimeters. Due to platform + limitations it may not be possible to use this function to determine + the actual physical size of a widget on the screen. + + \sa height() +*/ + +/*! + \fn int QPaintDevice::numColors() const + + Returns the number of different colors available for the paint + device. Since this value is an int, it will not be sufficient to represent + the number of colors on 32 bit displays, in this case INT_MAX is + returned instead. +*/ + +/*! + \fn int QPaintDevice::depth() const + + Returns the bit depth (number of bit planes) of the paint device. +*/ + +/*! + \fn int QPaintDevice::logicalDpiX() const + + Returns the horizontal resolution of the device in dots per inch, + which is used when computing font sizes. For X11, this is usually + the same as could be computed from widthMM(). + + Note that if the logicalDpiX() doesn't equal the physicalDpiX(), + the corresponding QPaintEngine must handle the resolution mapping. + + \sa logicalDpiY(), physicalDpiX() +*/ + +/*! + \fn int QPaintDevice::logicalDpiY() const + + Returns the vertical resolution of the device in dots per inch, + which is used when computing font sizes. For X11, this is usually + the same as could be computed from heightMM(). + + Note that if the logicalDpiY() doesn't equal the physicalDpiY(), + the corresponding QPaintEngine must handle the resolution mapping. + + \sa logicalDpiX(), physicalDpiY() +*/ + +/*! + \fn int QPaintDevice::physicalDpiX() const + + Returns the horizontal resolution of the device in dots per inch. + For example, when printing, this resolution refers to the physical + printer's resolution. The logical DPI on the other hand, refers to + the resolution used by the actual paint engine. + + Note that if the physicalDpiX() doesn't equal the logicalDpiX(), + the corresponding QPaintEngine must handle the resolution mapping. + + \sa physicalDpiY(), logicalDpiX() +*/ + +/*! + \fn int QPaintDevice::physicalDpiY() const + + Returns the horizontal resolution of the device in dots per inch. + For example, when printing, this resolution refers to the physical + printer's resolution. The logical DPI on the other hand, refers to + the resolution used by the actual paint engine. + + Note that if the physicalDpiY() doesn't equal the logicalDpiY(), + the corresponding QPaintEngine must handle the resolution mapping. + + \sa physicalDpiX(), logicalDpiY() +*/ diff --git a/src/gui/painting/qpaintdevice_mac.cpp b/src/gui/painting/qpaintdevice_mac.cpp index bf5e261..aa7c2ac 100644 --- a/src/gui/painting/qpaintdevice_mac.cpp +++ b/src/gui/painting/qpaintdevice_mac.cpp @@ -57,34 +57,6 @@ QT_BEGIN_NAMESPACE Internal variables and functions *****************************************************************************/ - -/***************************************************************************** - External functions - *****************************************************************************/ - -extern void qt_painter_removePaintDevice(QPaintDevice *); //qpainter.cpp - -/***************************************************************************** - QPaintDevice member functions - *****************************************************************************/ -QPaintDevice::QPaintDevice() -{ - painters = 0; -} - -QPaintDevice::~QPaintDevice() -{ - if(paintingActive()) - qWarning("QPaintDevice: Cannot destroy paint device that is being " - "painted, be sure to QPainter::end() painters"); - qt_painter_removePaintDevice(this); -} - -int QPaintDevice::metric(PaintDeviceMetric) const -{ - return 0; -} - /*! \internal */ float qt_mac_defaultDpi_x() { diff --git a/src/gui/painting/qpaintdevice_qws.cpp b/src/gui/painting/qpaintdevice_qws.cpp index 9a6a3d3..b161cb8 100644 --- a/src/gui/painting/qpaintdevice_qws.cpp +++ b/src/gui/painting/qpaintdevice_qws.cpp @@ -48,39 +48,6 @@ QT_BEGIN_NAMESPACE -QPaintDevice::QPaintDevice() -{ - painters = 0; -} - -extern void qt_painter_removePaintDevice(QPaintDevice *); //qpainter.cpp - - -QPaintDevice::~QPaintDevice() -{ - if (paintingActive()) - qWarning("QPaintDevice: Cannot destroy paint device that is being " - "painted"); - qt_painter_removePaintDevice(this); -} - - -int QPaintDevice::metric(PaintDeviceMetric m) const -{ - qWarning("QPaintDevice::metrics: Device has no metric information"); - if (m == PdmDpiX) { - return 72; - } else if (m == PdmDpiY) { - return 72; - } else if (m == PdmNumColors) { - // FIXME: does this need to be a real value? - return 256; - } else { - qDebug("Unrecognised metric %d!",m); - return 0; - } -} - QWSDisplay *QPaintDevice::qwsDisplay() { return qt_fbdpy; diff --git a/src/gui/painting/qpaintdevice_win.cpp b/src/gui/painting/qpaintdevice_win.cpp index 86de028..f964feb 100644 --- a/src/gui/painting/qpaintdevice_win.cpp +++ b/src/gui/painting/qpaintdevice_win.cpp @@ -50,27 +50,6 @@ QT_BEGIN_NAMESPACE -QPaintDevice::QPaintDevice() -{ - painters = 0; -} - -extern void qt_painter_removePaintDevice(QPaintDevice *); //qpainter.cpp - -QPaintDevice::~QPaintDevice() -{ - if (paintingActive()) - qWarning("QPaintDevice: Cannot destroy paint device that is being " - "painted. Be sure to QPainter::end() painters!"); - qt_painter_removePaintDevice(this); -} - -int QPaintDevice::metric(PaintDeviceMetric) const -{ - qWarning("QPaintDevice::metrics: Device has no metric information"); - return 0; -} - HDC QPaintDevice::getDC() const { return 0; diff --git a/src/gui/painting/qpaintdevice_x11.cpp b/src/gui/painting/qpaintdevice_x11.cpp index b0ed732..474f3f1 100644 --- a/src/gui/painting/qpaintdevice_x11.cpp +++ b/src/gui/painting/qpaintdevice_x11.cpp @@ -49,21 +49,6 @@ QT_BEGIN_NAMESPACE -QPaintDevice::QPaintDevice() -{ - painters = 0; -} - -extern void qt_painter_removePaintDevice(QPaintDevice *); //qpainter.cpp - -QPaintDevice::~QPaintDevice() -{ - if (paintingActive()) - qWarning("QPaintDevice: Cannot destroy paint device that is being " - "painted"); - qt_painter_removePaintDevice(this); -} - /*! \internal Returns the X11 Drawable of the paint device. 0 is returned if it @@ -96,12 +81,6 @@ const Q_GUI_EXPORT QX11Info *qt_x11Info(const QPaintDevice *pd) return 0; } -int QPaintDevice::metric(PaintDeviceMetric) const -{ - qWarning("QPaintDevice::metrics: Device has no metric information"); - return 0; -} - #ifdef QT3_SUPPORT diff --git a/src/gui/painting/qpaintengine.cpp b/src/gui/painting/qpaintengine.cpp index a91db26..5dc0922 100644 --- a/src/gui/painting/qpaintengine.cpp +++ b/src/gui/painting/qpaintengine.cpp @@ -145,7 +145,7 @@ QFont QTextItem::font() const /*! \class QPaintEngine - \ingroup multimedia + \ingroup painting \brief The QPaintEngine class provides an abstract definition of how QPainter draws to a given device on a given platform. diff --git a/src/gui/painting/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp index d4e988b..ef4904f 100644 --- a/src/gui/painting/qpaintengine_raster.cpp +++ b/src/gui/painting/qpaintengine_raster.cpp @@ -1019,9 +1019,6 @@ void QRasterPaintEnginePrivate::drawImage(const QPointF &pt, if (alpha == 0 || !clip.isValid()) return; - if (alpha ==0) - return; - Q_ASSERT(img.depth() >= 8); int srcBPL = img.bytesPerLine(); @@ -2495,10 +2492,7 @@ void QRasterPaintEngine::drawImage(const QPointF &p, const QImage &img) const QClipData *clip = d->clip(); QPointF pt(p.x() + s->matrix.dx(), p.y() + s->matrix.dy()); - // ### TODO: remove this eventually... - static bool NO_BLEND_FUNC = !qgetenv("QT_NO_BLEND_FUNCTIONS").isNull(); - - if (s->flags.fast_images && !NO_BLEND_FUNC) { + if (s->flags.fast_images) { SrcOverBlendFunc func = qBlendFunctions[d->rasterBuffer->format][img.format()]; if (func) { if (!clip) { @@ -2511,6 +2505,8 @@ void QRasterPaintEngine::drawImage(const QPointF &p, const QImage &img) } } + + d->image_filler.clip = clip; d->image_filler.initTexture(&img, s->intOpacity, QTextureData::Plain, img.rect()); if (!d->image_filler.blend) @@ -2562,14 +2558,24 @@ void QRasterPaintEngine::drawImage(const QRectF &r, const QImage &img, const QRe if (s->matrix.type() > QTransform::TxTranslate || stretch_sr) { if (s->flags.fast_images) { - SrcOverScaleFunc func = qScaleFunctions[d->rasterBuffer->format][img.format()]; - if (func && (!clip || clip->hasRectClip)) { - func(d->rasterBuffer->buffer(), d->rasterBuffer->bytesPerLine(), - img.bits(), img.bytesPerLine(), - qt_mapRect_non_normalizing(r, s->matrix), sr, - !clip ? d->deviceRect : clip->clipRect, - s->intOpacity); - return; + if (s->matrix.type() > QTransform::TxScale) { + SrcOverTransformFunc func = qTransformFunctions[d->rasterBuffer->format][img.format()]; + if (func && (!clip || clip->hasRectClip)) { + func(d->rasterBuffer->buffer(), d->rasterBuffer->bytesPerLine(), img.bits(), + img.bytesPerLine(), r, sr, !clip ? d->deviceRect : clip->clipRect, + s->matrix, s->intOpacity); + return; + } + } else { + SrcOverScaleFunc func = qScaleFunctions[d->rasterBuffer->format][img.format()]; + if (func && (!clip || clip->hasRectClip)) { + func(d->rasterBuffer->buffer(), d->rasterBuffer->bytesPerLine(), + img.bits(), img.bytesPerLine(), + qt_mapRect_non_normalizing(r, s->matrix), sr, + !clip ? d->deviceRect : clip->clipRect, + s->intOpacity); + return; + } } } @@ -4057,7 +4063,7 @@ void QRasterPaintEnginePrivate::recalculateFastImages() s->flags.fast_images = !(s->renderHints & QPainter::SmoothPixmapTransform) && rasterBuffer->compositionMode == QPainter::CompositionMode_SourceOver - && s->matrix.type() <= QTransform::TxScale; + && s->matrix.type() <= QTransform::TxShear; } diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp index fe1fb06..0bca8f7 100644 --- a/src/gui/painting/qpainter.cpp +++ b/src/gui/painting/qpainter.cpp @@ -924,8 +924,8 @@ void QPainterPrivate::updateState(QPainterState *newState) \brief The QPainter class performs low-level painting on widgets and other paint devices. - \ingroup multimedia - \mainclass + \ingroup painting + \reentrant QPainter provides highly optimized functions to do most of the @@ -7501,8 +7501,8 @@ void qt_format_text(const QFont &fnt, const QRectF &_r, QFontMetricsF fm(fnt); QString text = str; int offset = 0; -start_lenghtVariant: - bool hasMoreLenghtVariants = false; +start_lengthVariant: + bool hasMoreLengthVariants = false; // compatible behaviour to the old implementation. Replace // tabs by spaces bool has_tab = false; @@ -7524,7 +7524,7 @@ start_lenghtVariant: has_tab = true; } else if (chr == QChar(ushort(0x9c))) { // string with multiple length variants - hasMoreLenghtVariants = true; + hasMoreLengthVariants = true; break; } } @@ -7648,9 +7648,9 @@ start_lenghtVariant: } QRectF bounds = QRectF(r.x() + xoff, r.y() + yoff, width, height); - if (hasMoreLenghtVariants && !(tf & Qt::TextLongestVariant) && !r.contains(bounds)) { + if (hasMoreLengthVariants && !(tf & Qt::TextLongestVariant) && !r.contains(bounds)) { offset++; - goto start_lenghtVariant; + goto start_lengthVariant; } if (brect) *brect = bounds; diff --git a/src/gui/painting/qpainterpath.cpp b/src/gui/painting/qpainterpath.cpp index 994217e..eb8b964 100644 --- a/src/gui/painting/qpainterpath.cpp +++ b/src/gui/painting/qpainterpath.cpp @@ -164,7 +164,7 @@ static void qt_debug_path(const QPainterPath &path) /*! \class QPainterPath - \ingroup multimedia + \ingroup painting \ingroup shared \brief The QPainterPath class provides a container for painting operations, @@ -2399,7 +2399,7 @@ void qt_path_stroke_cubic_to(qfixed c1x, qfixed c1y, /*! \since 4.1 \class QPainterPathStroker - \ingroup multimedia + \ingroup painting \brief The QPainterPathStroker class is used to generate fillable outlines for a given painter path. diff --git a/src/gui/painting/qpainterpath.h b/src/gui/painting/qpainterpath.h index eb1c7d3..21894a7 100644 --- a/src/gui/painting/qpainterpath.h +++ b/src/gui/painting/qpainterpath.h @@ -301,9 +301,9 @@ inline void QPainterPath::lineTo(qreal x, qreal y) lineTo(QPointF(x, y)); } -inline void QPainterPath::arcTo(qreal x, qreal y, qreal w, qreal h, qreal startAngle, qreal arcLenght) +inline void QPainterPath::arcTo(qreal x, qreal y, qreal w, qreal h, qreal startAngle, qreal arcLength) { - arcTo(QRectF(x, y, w, h), startAngle, arcLenght); + arcTo(QRectF(x, y, w, h), startAngle, arcLength); } inline void QPainterPath::arcMoveTo(qreal x, qreal y, qreal w, qreal h, qreal angle) diff --git a/src/gui/painting/qpdf.cpp b/src/gui/painting/qpdf.cpp index 3f5643e..478a2a8 100644 --- a/src/gui/painting/qpdf.cpp +++ b/src/gui/painting/qpdf.cpp @@ -313,7 +313,7 @@ QByteArray QPdf::generatePath(const QPainterPath &path, const QTransform &matrix Qt::FillRule fillRule = path.fillRule(); - const char *op = 0; + const char *op = ""; switch (flags) { case ClipPath: op = (fillRule == Qt::WindingFill) ? "W n\n" : "W* n\n"; @@ -1471,10 +1471,10 @@ void QPdfBaseEngine::setProperty(PrintEnginePropertyKey key, const QVariant &val { QList<QVariant> margins(value.toList()); Q_ASSERT(margins.size() == 4); - d->leftMargin = margins.at(0).toDouble(); - d->topMargin = margins.at(1).toDouble(); - d->rightMargin = margins.at(2).toDouble(); - d->bottomMargin = margins.at(3).toDouble(); + d->leftMargin = margins.at(0).toReal(); + d->topMargin = margins.at(1).toReal(); + d->rightMargin = margins.at(2).toReal(); + d->bottomMargin = margins.at(3).toReal(); d->hasCustomPageMargins = true; break; } @@ -1576,7 +1576,7 @@ QVariant QPdfBaseEngine::property(PrintEnginePropertyKey key) const margins << d->leftMargin << d->topMargin << d->rightMargin << d->bottomMargin; } else { - const int defaultMargin = 10; // ~3.5 mm + const qreal defaultMargin = 10; // ~3.5 mm margins << defaultMargin << defaultMargin << defaultMargin << defaultMargin; } @@ -1773,6 +1773,9 @@ bool QPdfBaseEnginePrivate::openPrintDevice() (void)execv("/bin/lpr", lprargs); (void)execv("/usr/bin/lp", lpargs); (void)execv("/usr/bin/lpr", lprargs); + + delete []lpargs; + delete []lprargs; } // if we couldn't exec anything, close the fd, // wait for a second so the parent process (the diff --git a/src/gui/painting/qpen.cpp b/src/gui/painting/qpen.cpp index 047fd9b..51929a2 100644 --- a/src/gui/painting/qpen.cpp +++ b/src/gui/painting/qpen.cpp @@ -52,9 +52,9 @@ typedef QPenPrivate QPenData; /*! \class QPen - \ingroup multimedia + \ingroup painting \ingroup shared - \mainclass + \brief The QPen class defines how a QPainter should draw lines and outlines of shapes. diff --git a/src/gui/painting/qpolygon.cpp b/src/gui/painting/qpolygon.cpp index 87a9848..044b2c5 100644 --- a/src/gui/painting/qpolygon.cpp +++ b/src/gui/painting/qpolygon.cpp @@ -91,7 +91,7 @@ static void qt_polygon_isect_line(const QPointF &p1, const QPointF &p2, const QP \reentrant - \ingroup multimedia + \ingroup painting \ingroup shared A QPolygon object is a QVector<QPoint>. The easiest way to add @@ -489,7 +489,7 @@ QDebug operator<<(QDebug dbg, const QPolygon &a) floating point precision. \reentrant - \ingroup multimedia + \ingroup painting \ingroup shared A QPolygonF is a QVector<QPointF>. The easiest way to add points diff --git a/src/gui/painting/qprintengine_win.cpp b/src/gui/painting/qprintengine_win.cpp index 7ac3224..21c0873 100644 --- a/src/gui/painting/qprintengine_win.cpp +++ b/src/gui/painting/qprintengine_win.cpp @@ -1360,10 +1360,10 @@ void QWin32PrintEngine::setProperty(PrintEnginePropertyKey key, const QVariant & Q_ASSERT(margins.size() == 4); int left, top, right, bottom; // specified in 1/100 mm - left = (margins.at(0).toDouble()*25.4/72.0) * 100; - top = (margins.at(1).toDouble()*25.4/72.0) * 100; - right = (margins.at(2).toDouble()*25.4/72.0) * 100; - bottom = (margins.at(3).toDouble()*25.4/72.0) * 100; + left = (margins.at(0).toReal()*25.4/72.0) * 100; + top = (margins.at(1).toReal()*25.4/72.0) * 100; + right = (margins.at(2).toReal()*25.4/72.0) * 100; + bottom = (margins.at(3).toReal()*25.4/72.0) * 100; d->setPageMargins(left, top, right, bottom); break; } diff --git a/src/gui/painting/qprinter.cpp b/src/gui/painting/qprinter.cpp index 326b7b0..df33034 100644 --- a/src/gui/painting/qprinter.cpp +++ b/src/gui/painting/qprinter.cpp @@ -268,8 +268,8 @@ void QPrinterPrivate::addToManualSetList(QPrintEngine::PrintEnginePropertyKey ke \brief The QPrinter class is a paint device that paints on a printer. - \ingroup multimedia - \mainclass + \ingroup printing + This device represents a series of pages of printed output, and is used in almost exactly the same way as other paint devices such as @@ -1664,10 +1664,10 @@ void QPrinter::getPageMargins(qreal *left, qreal *top, qreal *right, qreal *bott Q_ASSERT(left && top && right && bottom); const qreal multiplier = qt_multiplierForUnit(unit, resolution()); QList<QVariant> margins(d->printEngine->property(QPrintEngine::PPK_PageMargins).toList()); - *left = margins.at(0).toDouble() / multiplier; - *top = margins.at(1).toDouble() / multiplier; - *right = margins.at(2).toDouble() / multiplier; - *bottom = margins.at(3).toDouble() / multiplier; + *left = margins.at(0).toReal() / multiplier; + *top = margins.at(1).toReal() / multiplier; + *right = margins.at(2).toReal() / multiplier; + *bottom = margins.at(3).toReal() / multiplier; } /*! @@ -2203,7 +2203,7 @@ bool QPrinter::isOptionEnabled( PrinterOption option ) const \class QPrintEngine \reentrant - \ingroup multimedia + \ingroup printing \brief The QPrintEngine class defines an interface for how QPrinter interacts with a given printing subsystem. diff --git a/src/gui/painting/qprinterinfo.qdoc b/src/gui/painting/qprinterinfo.qdoc new file mode 100644 index 0000000..e3cbe96 --- /dev/null +++ b/src/gui/painting/qprinterinfo.qdoc @@ -0,0 +1,139 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \class QPrinterInfo + + \brief The QPrinterInfo class gives access to information about + existing printers. + + \ingroup printing + + Use the static functions to generate a list of QPrinterInfo + objects. Each QPrinterInfo object in the list represents a single + printer and can be queried for name, supported paper sizes, and + whether or not it is the default printer. + + \since 4.4 +*/ + +/*! + \fn QList<QPrinterInfo> QPrinterInfo::availablePrinters() + + Returns a list of available printers on the system. +*/ + +/*! + \fn QPrinterInfo QPrinterInfo::defaultPrinter() + + Returns the default printer on the system. + + The return value should be checked using isNull() before being + used, in case there is no default printer. + + \sa isNull() +*/ + +/*! + \fn QPrinterInfo::QPrinterInfo() + + Constructs an empty QPrinterInfo object. + + \sa isNull() +*/ + +/*! + \fn QPrinterInfo::QPrinterInfo(const QPrinterInfo& src) + + Constructs a copy of \a src. +*/ + +/*! + \fn QPrinterInfo::QPrinterInfo(const QPrinter& printer) + + Constructs a QPrinterInfo object from \a printer. +*/ + +/*! + \fn QPrinterInfo::~QPrinterInfo() + + Destroys the QPrinterInfo object. References to the values in the + object become invalid. +*/ + +/*! + \fn QPrinterInfo& QPrinterInfo::operator=(const QPrinterInfo& src) + + Sets the QPrinterInfo object to be equal to \a src. +*/ + +/*! + \fn QString QPrinterInfo::printerName() const + + Returns the name of the printer. + + \sa QPrinter::setPrinterName() +*/ + +/*! + \fn bool QPrinterInfo::isNull() const + + Returns whether this QPrinterInfo object holds a printer definition. + + An empty QPrinterInfo object could result for example from calling + defaultPrinter() when there are no printers on the system. +*/ + +/*! + \fn bool QPrinterInfo::isDefault() const + + Returns whether this printer is the default printer. +*/ + +/*! + \fn QList< QPrinter::PaperSize> QPrinterInfo::supportedPaperSizes() const + \since 4.4 + + Returns a list of supported paper sizes by the printer. + + Not all printer drivers support this query, so the list may be empty. + On Mac OS X 10.3, this function always returns an empty list. +*/ diff --git a/src/gui/painting/qregion.cpp b/src/gui/painting/qregion.cpp index dd684db..0db700a 100644 --- a/src/gui/painting/qregion.cpp +++ b/src/gui/painting/qregion.cpp @@ -61,7 +61,7 @@ QT_BEGIN_NAMESPACE \class QRegion \brief The QRegion class specifies a clip region for a painter. - \ingroup multimedia + \ingroup painting \ingroup shared QRegion is used with QPainter::setClipRegion() to limit the paint diff --git a/src/gui/painting/qstylepainter.cpp b/src/gui/painting/qstylepainter.cpp index 959caa9..93512d0 100644 --- a/src/gui/painting/qstylepainter.cpp +++ b/src/gui/painting/qstylepainter.cpp @@ -50,7 +50,7 @@ QT_BEGIN_NAMESPACE elements inside a widget. \ingroup appearance - \ingroup multimedia + \ingroup painting QStylePainter extends QPainter with a set of high-level \c draw...() functions implemented on top of QStyle's API. The diff --git a/src/gui/painting/qtransform.cpp b/src/gui/painting/qtransform.cpp index 8832a3d..859767b 100644 --- a/src/gui/painting/qtransform.cpp +++ b/src/gui/painting/qtransform.cpp @@ -93,7 +93,7 @@ QT_BEGIN_NAMESPACE \class QTransform \brief The QTransform class specifies 2D transformations of a coordinate system. \since 4.3 - \ingroup multimedia + \ingroup painting A transformation specifies how to translate, scale, shear, rotate or project the coordinate system, and is typically used when diff --git a/src/gui/styles/qcommonstyle.cpp b/src/gui/styles/qcommonstyle.cpp index ff50d81..d1bed3e 100644 --- a/src/gui/styles/qcommonstyle.cpp +++ b/src/gui/styles/qcommonstyle.cpp @@ -5198,8 +5198,7 @@ int QCommonStyle::styleHint(StyleHint sh, const QStyleOption *opt, const QWidget ret = Qt::ToolButtonIconOnly; #ifdef Q_WS_X11 { - Q_D(const QCommonStyle); - static int buttonStyle = d->lookupToolButtonStyle(); + static int buttonStyle = d_func()->lookupToolButtonStyle(); return buttonStyle; } #endif diff --git a/src/gui/styles/qmacstyle.qdoc b/src/gui/styles/qmacstyle.qdoc new file mode 100644 index 0000000..171ddb0 --- /dev/null +++ b/src/gui/styles/qmacstyle.qdoc @@ -0,0 +1,261 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +/*! + \class QMacStyle + \brief The QMacStyle class provides a Mac OS X style using the Apple Appearance Manager. + + \ingroup appearance + + This class is implemented as a wrapper to the HITheme + APIs, allowing applications to be styled according to the current + theme in use on Mac OS X. This is done by having primitives + in QStyle implemented in terms of what Mac OS X would normally theme. + + \warning This style is only available on Mac OS X because it relies on the + HITheme APIs. + + There are additional issues that should be taken + into consideration to make an application compatible with the + \link http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/index.html + Apple Human Interface Guidelines \endlink. Some of these issues are outlined + below. + + \list + + \i Layout - The restrictions on window layout are such that some + aspects of layout that are style-dependent cannot be achieved + using QLayout. Changes are being considered (and feedback would be + appreciated) to make layouts QStyle-able. Some of the restrictions + involve horizontal and vertical widget alignment and widget size + (covered below). + + \i Widget size - Mac OS X allows widgets to have specific fixed sizes. Qt + does not fully implement this behavior so as to maintain cross-platform + compatibility. As a result some widgets sizes may be inappropriate (and + subsequently not rendered correctly by the HITheme APIs).The + QWidget::sizeHint() will return the appropriate size for many + managed widgets (widgets enumerated in \l QStyle::ContentsType). + + \i Effects - QMacStyle uses HITheme for performing most of the drawing, but + also uses emulation in a few cases where HITheme does not provide the + required functionality (for example, tab bars on Panther, the toolbar + separator, etc). We tried to make the emulation as close to the original as + possible. Please report any issues you see in effects or non-standard + widgets. + + \endlist + + There are other issues that need to be considered in the feel of + your application (including the general color scheme to match the + Aqua colors). The Guidelines mentioned above will remain current + with new advances and design suggestions for Mac OS X. + + Note that the functions provided by QMacStyle are + reimplementations of QStyle functions; see QStyle for their + documentation. + + \img qmacstyle.png + \sa QWindowsXPStyle, QWindowsStyle, QPlastiqueStyle, QCDEStyle, QMotifStyle +*/ + + +/*! + \enum QMacStyle::WidgetSizePolicy + + \value SizeSmall + \value SizeLarge + \value SizeMini + \value SizeDefault + \omitvalue SizeNone +*/ + +/*! \fn QMacStyle::QMacStyle() + Constructs a QMacStyle object. +*/ + +/*! \fn QMacStyle::~QMacStyle() + Destructs a QMacStyle object. +*/ + +/*! \fn void QMacStyle::polish(QPalette &pal) + \reimp +*/ + +/*! \fn void QMacStyle::polish(QApplication *) + \reimp +*/ + +/*! \fn void QMacStyle::unpolish(QApplication *) + \reimp +*/ + +/*! \fn void QMacStyle::polish(QWidget* w) + \reimp +*/ + +/*! \fn void QMacStyle::unpolish(QWidget* w) + \reimp +*/ + +/*! \fn int QMacStyle::pixelMetric(PixelMetric metric, const QStyleOption *opt, const QWidget *widget) const + \reimp +*/ + +/*! \fn QPalette QMacStyle::standardPalette() const + \reimp +*/ + +/*! \fn int QMacStyle::styleHint(StyleHint sh, const QStyleOption *opt, const QWidget *w, QStyleHintReturn *hret) const + \reimp +*/ + +/*! \fn QPixmap QMacStyle::generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, const QStyleOption *opt) const + \reimp +*/ + +/*! \fn QPixmap QMacStyle::standardPixmap(StandardPixmap standardPixmap, const QStyleOption *opt, const QWidget *widget) const + \reimp +*/ + +/*! + \enum QMacStyle::FocusRectPolicy + + This type is used to signify a widget's focus rectangle policy. + + \value FocusEnabled show a focus rectangle when the widget has focus. + \value FocusDisabled never show a focus rectangle for the widget. + \value FocusDefault show a focus rectangle when the widget has + focus and the widget is a QSpinWidget, QDateTimeEdit, QLineEdit, + QListBox, QListView, editable QTextEdit, or one of their + subclasses. +*/ + +/*! \fn void QMacStyle::setFocusRectPolicy(QWidget *w, FocusRectPolicy policy) + \obsolete + Sets the focus rectangle policy of \a w. The \a policy can be one of + \l{QMacStyle::FocusRectPolicy}. + + This is now simply an interface to the Qt::WA_MacShowFocusRect attribute and the + FocusDefault value does nothing anymore. If you want to set a widget back + to its default value, you must save the old value of the attribute before + you change it. + + \sa focusRectPolicy() QWidget::setAttribute() +*/ + +/*! \fn QMacStyle::FocusRectPolicy QMacStyle::focusRectPolicy(const QWidget *w) + \obsolete + Returns the focus rectangle policy for the widget \a w. + + The focus rectangle policy can be one of \l{QMacStyle::FocusRectPolicy}. + + In 4.3 and up this function will simply test for the + Qt::WA_MacShowFocusRect attribute and will never return + QMacStyle::FocusDefault. + + \sa setFocusRectPolicy(), QWidget::testAttribute() +*/ + +/*! \fn void QMacStyle::setWidgetSizePolicy(const QWidget *widget, WidgetSizePolicy policy) + + \obsolete + + Call QWidget::setAttribute() with Qt::WA_MacMiniSize, Qt::WA_MacSmallSize, + or Qt::WA_MacNormalSize instead. +*/ + +/*! \fn QMacStyle::WidgetSizePolicy QMacStyle::widgetSizePolicy(const QWidget *widget) + \obsolete + + Call QWidget::testAttribute() with Qt::WA_MacMiniSize, Qt::WA_MacSmallSize, + or Qt::WA_MacNormalSize instead. +*/ + +/*! \fn void QMacStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPainter *p, const QWidget *w) const + + \reimp +*/ + +/*! \fn void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter *p, const QWidget *w) const + + \reimp +*/ + +/*! \fn QRect QMacStyle::subElementRect(SubElement sr, const QStyleOption *opt, const QWidget *widget) const + + \reimp +*/ + +/*! \fn void QMacStyle::drawComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p, const QWidget *widget) const + \reimp +*/ + +/*! \fn QStyle::SubControl QMacStyle::hitTestComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, const QPoint &pt, const QWidget *widget) const + \reimp +*/ + +/*! \fn QRect QMacStyle::subControlRect(ComplexControl cc, const QStyleOptionComplex *opt, SubControl sc, const QWidget *widget) const + \reimp +*/ + +/*! \fn QSize QMacStyle::sizeFromContents(ContentsType ct, const QStyleOption *opt, const QSize &csz, const QWidget *widget) const + \reimp +*/ + +/*! \fn void QMacStyle::drawItemText(QPainter *p, const QRect &r, int flags, const QPalette &pal, bool enabled, const QString &text, QPalette::ColorRole textRole) const + \reimp +*/ + +/*! \fn bool QMacStyle::event(QEvent *e) + \reimp +*/ + +/*! \fn QIcon QMacStyle::standardIconImplementation(StandardPixmap standardIcon, const QStyleOption *opt, const QWidget *widget) const + \internal +*/ + +/*! \fn int QMacStyle::layoutSpacingImplementation(QSizePolicy::ControlType control1, QSizePolicy::ControlType control2, Qt::Orientation orientation, const QStyleOption *option, const QWidget *widget) const + + \internal +*/ + diff --git a/src/gui/styles/qmacstyle_mac.mm b/src/gui/styles/qmacstyle_mac.mm index 8736769..08b6ad8 100644 --- a/src/gui/styles/qmacstyle_mac.mm +++ b/src/gui/styles/qmacstyle_mac.mm @@ -4635,12 +4635,12 @@ void QMacStyle::drawComplexControl(ComplexControl cc, const QStyleOptionComplex // no longer possible to move it, second the up/down buttons are removed when // there is not enough space for them. if (cc == CC_ScrollBar) { - const int scrollBarLenght = (slider->orientation == Qt::Horizontal) + const int scrollBarLength = (slider->orientation == Qt::Horizontal) ? slider->rect.width() : slider->rect.height(); const QMacStyle::WidgetSizePolicy sizePolicy = widgetSizePolicy(widget); - if (scrollBarLenght < scrollButtonsCutoffSize(thumbIndicatorCutoff, sizePolicy)) + if (scrollBarLength < scrollButtonsCutoffSize(thumbIndicatorCutoff, sizePolicy)) tdi.attributes &= ~kThemeTrackShowThumb; - if (scrollBarLenght < scrollButtonsCutoffSize(scrollButtonsCutoff, sizePolicy)) + if (scrollBarLength < scrollButtonsCutoffSize(scrollButtonsCutoff, sizePolicy)) tdi.enableState = kThemeTrackNothingToScroll; } @@ -5109,9 +5109,9 @@ QStyle::SubControl QMacStyle::hitTestComplexControl(ComplexControl cc, // The arrow buttons are not drawn if the scroll bar is to short, // exclude them from the hit test. - const int scrollBarLenght = (sb->orientation == Qt::Horizontal) + const int scrollBarLength = (sb->orientation == Qt::Horizontal) ? sb->rect.width() : sb->rect.height(); - if (scrollBarLenght < scrollButtonsCutoffSize(scrollButtonsCutoff, widgetSizePolicy(widget))) + if (scrollBarLength < scrollButtonsCutoffSize(scrollButtonsCutoff, widgetSizePolicy(widget))) sbi.enableState = kThemeTrackNothingToScroll; sbi.viewsize = sb->pageStep; diff --git a/src/gui/styles/qstyleoption.cpp b/src/gui/styles/qstyleoption.cpp index 38abd95..04ecbc4 100644 --- a/src/gui/styles/qstyleoption.cpp +++ b/src/gui/styles/qstyleoption.cpp @@ -712,7 +712,7 @@ QStyleOptionFrameV2 &QStyleOptionFrameV2::operator=(const QStyleOptionFrame &oth Constructs a QStyleOptionFrameV3 object. */ QStyleOptionFrameV3::QStyleOptionFrameV3() - : QStyleOptionFrameV2(Version), frameShape(QFrame::NoFrame) + : QStyleOptionFrameV2(Version), frameShape(QFrame::NoFrame), unused(0) { } @@ -726,7 +726,7 @@ QStyleOptionFrameV3::QStyleOptionFrameV3() \internal */ QStyleOptionFrameV3::QStyleOptionFrameV3(int version) - : QStyleOptionFrameV2(version), frameShape(QFrame::NoFrame) + : QStyleOptionFrameV2(version), frameShape(QFrame::NoFrame), unused(0) { } @@ -954,7 +954,7 @@ QStyleOptionViewItemV2 &QStyleOptionViewItemV2::operator=(const QStyleOptionView Constructs a QStyleOptionViewItemV3 object. */ QStyleOptionViewItemV3::QStyleOptionViewItemV3() - : QStyleOptionViewItemV2(Version) + : QStyleOptionViewItemV2(Version), widget(0) { } @@ -962,7 +962,7 @@ QStyleOptionViewItemV3::QStyleOptionViewItemV3() Constructs a copy of \a other. */ QStyleOptionViewItemV3::QStyleOptionViewItemV3(const QStyleOptionViewItem &other) - : QStyleOptionViewItemV2(Version) + : QStyleOptionViewItemV2(Version), widget(0) { (void)QStyleOptionViewItemV3::operator=(other); } @@ -991,7 +991,7 @@ QStyleOptionViewItemV3 &QStyleOptionViewItemV3::operator = (const QStyleOptionVi \internal */ QStyleOptionViewItemV3::QStyleOptionViewItemV3(int version) - : QStyleOptionViewItemV2(version) + : QStyleOptionViewItemV2(version), widget(0) { } @@ -4845,7 +4845,7 @@ QStyleOptionTabBarBaseV2 &QStyleOptionTabBarBaseV2::operator = (const QStyleOpti /*! \internal */ QStyleOptionTabBarBaseV2::QStyleOptionTabBarBaseV2(int version) - : QStyleOptionTabBarBase(version) + : QStyleOptionTabBarBase(version), documentMode(false) { } @@ -4937,7 +4937,7 @@ QStyleOptionSizeGrip::QStyleOptionSizeGrip(int version) \brief The QStyleOptionGraphicsItem class is used to describe the parameters needed to draw a QGraphicsItem. \since 4.2 - \ingroup multimedia + \ingroup graphicsview-api For performance reasons, the access to the member variables is direct (i.e., using the \c . or \c -> operator). This low-level feel diff --git a/src/gui/styles/styles.pri b/src/gui/styles/styles.pri index 277be76..70ac6cb 100644 --- a/src/gui/styles/styles.pri +++ b/src/gui/styles/styles.pri @@ -37,7 +37,7 @@ x11|embedded|!macx-*:styles -= mac x11{ QMAKE_CXXFLAGS += $$QT_CFLAGS_QGTKSTYLE - LIBS += $$QT_LIBS_QGTKSTYLE + LIBS_PRIVATE += $$QT_LIBS_QGTKSTYLE styles += gtk } diff --git a/src/gui/text/qabstracttextdocumentlayout.cpp b/src/gui/text/qabstracttextdocumentlayout.cpp index 8b21c8f..f2ddeb6 100644 --- a/src/gui/text/qabstracttextdocumentlayout.cpp +++ b/src/gui/text/qabstracttextdocumentlayout.cpp @@ -55,7 +55,7 @@ QT_BEGIN_NAMESPACE \brief The QAbstractTextDocumentLayout class is an abstract base class used to implement custom layouts for QTextDocuments. - \ingroup text + \ingroup richtext-processing The standard layout provided by Qt can handle simple word processing including inline images, lists and tables. diff --git a/src/gui/text/qcssparser.cpp b/src/gui/text/qcssparser.cpp index 7f9cd9d..fcc26d6 100644 --- a/src/gui/text/qcssparser.cpp +++ b/src/gui/text/qcssparser.cpp @@ -383,10 +383,7 @@ LengthData ValueExtractor::lengthValue(const Value& v) if (data.unit != LengthData::None) s.chop(2); - bool ok; - data.number = s.toDouble(&ok); - if (!ok) - data.number = 0; + data.number = s.toDouble(); return data; } @@ -712,7 +709,7 @@ static ColorData parseColorValue(Value v) for (int i = 0; i < qMin(colorDigits.count(), 7); i += 2) { if (colorDigits.at(i).type == Value::Percentage) { - colorDigits[i].variant = colorDigits.at(i).variant.toDouble() * 255. / 100.; + colorDigits[i].variant = colorDigits.at(i).variant.toReal() * (255. / 100.); colorDigits[i].type = Value::Number; } else if (colorDigits.at(i).type != Value::Number) { return ColorData(); @@ -789,19 +786,19 @@ static BrushData parseBrushValue(const Value &v, const QPalette &pal) ColorData cd = parseColorValue(color); if(cd.type == ColorData::Role) dependsOnThePalette = true; - stops.append(QGradientStop(stop.variant.toDouble(), colorFromData(cd, pal))); + stops.append(QGradientStop(stop.variant.toReal(), colorFromData(cd, pal))); } else { parser.next(); Value value; - parser.parseTerm(&value); + (void)parser.parseTerm(&value); if (attr.compare(QLatin1String("spread"), Qt::CaseInsensitive) == 0) { spread = spreads.indexOf(value.variant.toString()); } else { - vars[attr] = value.variant.toString().toDouble(); + vars[attr] = value.variant.toReal(); } } parser.skipSpace(); - parser.test(COMMA); + (void)parser.test(COMMA); } if (gradType == 0) { @@ -1080,8 +1077,8 @@ static bool setFontSizeFromValue(Value value, QFont *font, int *fontSizeAdjustme if (s.endsWith(QLatin1String("pt"), Qt::CaseInsensitive)) { s.chop(2); value.variant = s; - if (value.variant.convert(QVariant::Double)) { - font->setPointSizeF(value.variant.toDouble()); + if (value.variant.convert((QVariant::Type)qMetaTypeId<qreal>())) { + font->setPointSizeF(value.variant.toReal()); valid = true; } } else if (s.endsWith(QLatin1String("px"), Qt::CaseInsensitive)) { @@ -2462,7 +2459,7 @@ bool Parser::parseAttrib(AttributeSelector *attr) bool Parser::parsePseudo(Pseudo *pseudo) { - test(COLON); + (void)test(COLON); pseudo->negated = test(EXCLAMATION_SYM); if (test(IDENT)) { pseudo->name = lexem(); diff --git a/src/gui/text/qcssparser_p.h b/src/gui/text/qcssparser_p.h index 2d21bc2..6f73445 100644 --- a/src/gui/text/qcssparser_p.h +++ b/src/gui/text/qcssparser_p.h @@ -368,18 +368,18 @@ struct Q_GUI_EXPORT Value }; struct ColorData { - ColorData() : type(Invalid) {} - ColorData(const QColor &col) : color(col) , type(Color) {} - ColorData(QPalette::ColorRole r) : role(r) , type(Role) {} + ColorData() : role(QPalette::NoRole), type(Invalid) {} + ColorData(const QColor &col) : color(col), role(QPalette::NoRole), type(Color) {} + ColorData(QPalette::ColorRole r) : role(r), type(Role) {} QColor color; QPalette::ColorRole role; enum { Invalid, Color, Role} type; }; struct BrushData { - BrushData() : type(Invalid) {} - BrushData(const QBrush &br) : brush(br) , type(Brush) {} - BrushData(QPalette::ColorRole r) : role(r) , type(Role) {} + BrushData() : role(QPalette::NoRole), type(Invalid) {} + BrushData(const QBrush &br) : brush(br), role(QPalette::NoRole), type(Brush) {} + BrushData(QPalette::ColorRole r) : role(r), type(Role) {} QBrush brush; QPalette::ColorRole role; enum { Invalid, Brush, Role, DependsOnThePalette } type; @@ -504,7 +504,7 @@ const int NumPseudos = 46; struct Pseudo { - Pseudo() : negated(false) { } + Pseudo() : type(0), negated(false) { } quint64 type; QString name; QString function; @@ -726,7 +726,7 @@ enum TokenType { struct Q_GUI_EXPORT Symbol { - inline Symbol() : start(0), len(-1) {} + inline Symbol() : token(NONE), start(0), len(-1) {} TokenType token; QString text; int start, len; diff --git a/src/gui/text/qfont.cpp b/src/gui/text/qfont.cpp index af382cb..96905d0 100644 --- a/src/gui/text/qfont.cpp +++ b/src/gui/text/qfont.cpp @@ -415,11 +415,11 @@ QFontEngineData::~QFontEngineData() \brief The QFont class specifies a font used for drawing text. - \ingroup multimedia + \ingroup painting \ingroup appearance \ingroup shared - \ingroup text - \mainclass + \ingroup richtext-processing + When you create a QFont object you specify various attributes that you want the font to have. Qt will use the font with the specified @@ -2276,9 +2276,8 @@ QDataStream &operator>>(QDataStream &s, QFont &font) \brief The QFontInfo class provides general information about fonts. - \ingroup multimedia + \ingroup appearance \ingroup shared - \ingroup text The QFontInfo class provides the same access functions as QFont, e.g. family(), pointSize(), italic(), weight(), fixedPitch(), diff --git a/src/gui/text/qfontdatabase.cpp b/src/gui/text/qfontdatabase.cpp index 1f9e8d7..a8513ce 100644 --- a/src/gui/text/qfontdatabase.cpp +++ b/src/gui/text/qfontdatabase.cpp @@ -1461,9 +1461,7 @@ QString QFontDatabase::styleString(const QFontInfo &fontInfo) \brief The QFontDatabase class provides information about the fonts available in the underlying window system. - \ingroup environment - \ingroup multimedia - \ingroup text + \ingroup appearance The most common uses of this class are to query the database for the list of font families() and for the pointSizes() and styles() @@ -2602,7 +2600,7 @@ QStringList QFontDatabase::applicationFontFamilies(int id) means that all QPainter::drawText() calls outside the GUI thread will not produce readable output. - \sa threads.html#painting-in-threads + \sa {Thread-Support in Qt Modules#Painting In Threads}{Painting In Threads} */ diff --git a/src/gui/text/qfontmetrics.cpp b/src/gui/text/qfontmetrics.cpp index 5b47772..c828c9e 100644 --- a/src/gui/text/qfontmetrics.cpp +++ b/src/gui/text/qfontmetrics.cpp @@ -75,9 +75,8 @@ extern int qt_defaultDpi(); \brief The QFontMetrics class provides font metrics information. - \ingroup multimedia + \ingroup painting \ingroup shared - \ingroup text QFontMetrics functions calculate the size of characters and strings for a given font. There are three ways you can create a @@ -859,24 +858,23 @@ QRect QFontMetrics::tightBoundingRect(const QString &text) const right-to-left layouts, and on the left side for right-to-left layouts. Note that this behavior is independent of the text language. - */ -QString QFontMetrics::elidedText(const QString &_text, Qt::TextElideMode mode, int width, int flags) const +QString QFontMetrics::elidedText(const QString &text, Qt::TextElideMode mode, int width, int flags) const { - QString text = _text; + QString _text = text; if (!(flags & Qt::TextLongestVariant)) { int posA = 0; - int posB = text.indexOf(QLatin1Char('\x9c')); + int posB = _text.indexOf(QLatin1Char('\x9c')); while (posB >= 0) { - QString portion = text.mid(posA, posB - posA); + QString portion = _text.mid(posA, posB - posA); if (size(flags, portion).width() <= width) return portion; posA = posB + 1; - posB = text.indexOf(QLatin1Char('\x9c'), posA); + posB = _text.indexOf(QLatin1Char('\x9c'), posA); } - text = text.mid(posA); + _text = _text.mid(posA); } - QStackTextEngine engine(text, QFont(d)); + QStackTextEngine engine(_text, QFont(d)); return engine.elidedText(mode, width, flags); } @@ -942,9 +940,8 @@ int QFontMetrics::lineWidth() const \brief The QFontMetricsF class provides font metrics information. - \ingroup multimedia + \ingroup painting \ingroup shared - \ingroup text QFontMetricsF functions calculate the size of characters and strings for a given font. You can construct a QFontMetricsF object diff --git a/src/gui/text/qsyntaxhighlighter.cpp b/src/gui/text/qsyntaxhighlighter.cpp index 5c54500..cdb30ef 100644 --- a/src/gui/text/qsyntaxhighlighter.cpp +++ b/src/gui/text/qsyntaxhighlighter.cpp @@ -219,7 +219,7 @@ void QSyntaxHighlighterPrivate::reformatBlock(QTextBlock block) \since 4.1 - \ingroup text + \ingroup richtext-processing The QSyntaxHighlighter class is a base class for implementing QTextEdit syntax highlighters. A syntax highligher automatically diff --git a/src/gui/text/qtextcontrol.cpp b/src/gui/text/qtextcontrol.cpp index 384e283..da09ee1 100644 --- a/src/gui/text/qtextcontrol.cpp +++ b/src/gui/text/qtextcontrol.cpp @@ -2288,7 +2288,7 @@ void QTextControl::print(QPrinter *printer) const { #ifndef QT_NO_PRINTER Q_D(const QTextControl); - if (printer && !printer->isValid()) + if (!printer || !printer->isValid()) return; QTextDocument *tempDoc = 0; const QTextDocument *doc = d->doc; diff --git a/src/gui/text/qtextcursor.cpp b/src/gui/text/qtextcursor.cpp index 6ab89dc..88ab9d0 100644 --- a/src/gui/text/qtextcursor.cpp +++ b/src/gui/text/qtextcursor.cpp @@ -84,8 +84,7 @@ QTextCursorPrivate::QTextCursorPrivate(const QTextCursorPrivate &rhs) QTextCursorPrivate::~QTextCursorPrivate() { - if (priv) - priv->removeCursor(this); + priv->removeCursor(this); } QTextCursorPrivate::AdjustResult QTextCursorPrivate::adjustPosition(int positionOfChange, int charsAddedOrRemoved, QTextUndoCommand::Operation op) @@ -125,7 +124,7 @@ QTextCursorPrivate::AdjustResult QTextCursorPrivate::adjustPosition(int position void QTextCursorPrivate::setX() { - if (priv && priv->isInEditBlock()) { + if (priv->isInEditBlock()) { x = -1; // mark dirty return; } @@ -855,9 +854,9 @@ QTextLayout *QTextCursorPrivate::blockLayout(QTextBlock &block) const{ \brief The QTextCursor class offers an API to access and modify QTextDocuments. - \ingroup text + \ingroup richtext-processing \ingroup shared - \mainclass + Text cursors are objects that are used to access and modify the contents and underlying structure of text documents via a programming interface diff --git a/src/gui/text/qtextdocument.cpp b/src/gui/text/qtextdocument.cpp index 6fa3e90..bfed368 100644 --- a/src/gui/text/qtextdocument.cpp +++ b/src/gui/text/qtextdocument.cpp @@ -247,8 +247,8 @@ QTextCodec *Qt::codecForHtml(const QByteArray &ba) \brief The QTextDocument class holds formatted text that can be viewed and edited using a QTextEdit. - \ingroup text - \mainclass + \ingroup richtext-processing + QTextDocument is a container for structured rich text documents, providing support for styled text and various types of document elements, such as diff --git a/src/gui/text/qtextdocumentfragment.cpp b/src/gui/text/qtextdocumentfragment.cpp index da7025c..953e965 100644 --- a/src/gui/text/qtextdocumentfragment.cpp +++ b/src/gui/text/qtextdocumentfragment.cpp @@ -259,7 +259,7 @@ void QTextDocumentFragmentPrivate::insert(QTextCursor &_cursor) const \brief The QTextDocumentFragment class represents a piece of formatted text from a QTextDocument. - \ingroup text + \ingroup richtext-processing \ingroup shared A QTextDocumentFragment is a fragment of rich text, that can be inserted into diff --git a/src/gui/text/qtextdocumentlayout.cpp b/src/gui/text/qtextdocumentlayout.cpp index cfec8e9..a795c1f 100644 --- a/src/gui/text/qtextdocumentlayout.cpp +++ b/src/gui/text/qtextdocumentlayout.cpp @@ -198,8 +198,8 @@ public: if (v.isNull()) { return cellPadding; } else { - Q_ASSERT(v.type() == QVariant::Double); - return QFixed::fromReal(v.toDouble() * deviceScale); + Q_ASSERT(v.userType() == QVariant::Double || v.userType() == QMetaType::Float); + return QFixed::fromReal(v.toReal() * deviceScale); } } @@ -2601,13 +2601,13 @@ void QTextDocumentLayoutPrivate::layoutBlock(const QTextBlock &bl, int blockPosi // float has been added in the meantime, redo layoutStruct->pendingFloats.clear(); - if (haveWordOrAnyWrapMode) { - option.setWrapMode(QTextOption::WrapAnywhere); - tl->setTextOption(option); - } - line.setLineWidth((right-left).toReal()); if (QFixed::fromReal(line.naturalTextWidth()) > right-left) { + if (haveWordOrAnyWrapMode) { + option.setWrapMode(QTextOption::WrapAnywhere); + tl->setTextOption(option); + } + layoutStruct->pendingFloats.clear(); // lines min width more than what we have layoutStruct->y = findY(layoutStruct->y, layoutStruct, QFixed::fromReal(line.naturalTextWidth())); @@ -2619,12 +2619,13 @@ void QTextDocumentLayoutPrivate::layoutBlock(const QTextBlock &bl, int blockPosi else right -= text_indent; line.setLineWidth(qMax<qreal>(line.naturalTextWidth(), (right-left).toReal())); - } - if (haveWordOrAnyWrapMode) { - option.setWrapMode(QTextOption::WordWrap); - tl->setTextOption(option); + if (haveWordOrAnyWrapMode) { + option.setWrapMode(QTextOption::WordWrap); + tl->setTextOption(option); + } } + } QFixed lineHeight = QFixed::fromReal(line.height()); diff --git a/src/gui/text/qtextdocumentwriter.cpp b/src/gui/text/qtextdocumentwriter.cpp index 33a5018..bdb5247 100644 --- a/src/gui/text/qtextdocumentwriter.cpp +++ b/src/gui/text/qtextdocumentwriter.cpp @@ -76,7 +76,7 @@ public: \brief The QTextDocumentWriter class provides a format-independent interface for writing a QTextDocument to files or other devices. - \ingroup text + \ingroup richtext-processing \ingroup io To write a document, construct a QTextDocumentWriter object with either a diff --git a/src/gui/text/qtextformat.cpp b/src/gui/text/qtextformat.cpp index 82c81ef..6a77fa5 100644 --- a/src/gui/text/qtextformat.cpp +++ b/src/gui/text/qtextformat.cpp @@ -57,7 +57,7 @@ QT_BEGIN_NAMESPACE \brief The QTextLength class encapsulates the different types of length used in a QTextDocument. - \ingroup text + \ingroup richtext-processing When we specify a value for the length of an element in a text document, we often need to provide some other information so that the length is @@ -267,10 +267,11 @@ private: static uint variantHash(const QVariant &variant) { - switch (variant.type()) { + switch (variant.userType()) { case QVariant::Invalid: return 0; case QVariant::Bool: return variant.toBool(); case QVariant::Int: return variant.toInt(); + case QMetaType::Float: return static_cast<int>(variant.toFloat()); case QVariant::Double: return static_cast<int>(variant.toDouble()); case QVariant::String: return qHash(variant.toString()); case QVariant::Color: return qHash(qvariant_cast<QColor>(variant).rgb()); @@ -325,7 +326,7 @@ void QTextFormatPrivate::recalcFont() const f.setFamily(props.at(i).value.toString()); break; case QTextFormat::FontPointSize: - f.setPointSizeF(props.at(i).value.toDouble()); + f.setPointSizeF(props.at(i).value.toReal()); break; case QTextFormat::FontPixelSize: f.setPixelSize(props.at(i).value.toInt()); @@ -352,10 +353,10 @@ void QTextFormatPrivate::recalcFont() const f.setStrikeOut(props.at(i).value.toBool()); break; case QTextFormat::FontLetterSpacing: - f.setLetterSpacing(QFont::PercentageSpacing, props.at(i).value.toDouble()); + f.setLetterSpacing(QFont::PercentageSpacing, props.at(i).value.toReal()); break; case QTextFormat::FontWordSpacing: - f.setWordSpacing(props.at(i).value.toDouble()); + f.setWordSpacing(props.at(i).value.toReal()); break; case QTextFormat::FontCapitalization: f.setCapitalization(static_cast<QFont::Capitalization> (props.at(i).value.toInt())); @@ -414,7 +415,7 @@ Q_GUI_EXPORT QDataStream &operator>>(QDataStream &stream, QTextFormat &fmt) \brief The QTextFormat class provides formatting information for a QTextDocument. - \ingroup text + \ingroup richtext-processing \ingroup shared A QTextFormat is a generic class used for describing the format of @@ -447,7 +448,7 @@ Q_GUI_EXPORT QDataStream &operator>>(QDataStream &stream, QTextFormat &fmt) associate the format with a QTextObject. It is used to represent lists, frames, and tables inside the document. - \sa {Text Processing Classes} + \sa {Rich Text Processing} */ /*! @@ -852,7 +853,7 @@ bool QTextFormat::boolProperty(int propertyId) const if (!d) return false; const QVariant prop = d->property(propertyId); - if (prop.type() != QVariant::Bool) + if (prop.userType() != QVariant::Bool) return false; return prop.toBool(); } @@ -868,7 +869,7 @@ int QTextFormat::intProperty(int propertyId) const if (!d) return 0; const QVariant prop = d->property(propertyId); - if (prop.type() != QVariant::Int) + if (prop.userType() != QVariant::Int) return 0; return prop.toInt(); } @@ -885,7 +886,7 @@ qreal QTextFormat::doubleProperty(int propertyId) const if (!d) return 0.; const QVariant prop = d->property(propertyId); - if (prop.type() != QVariant::Double && prop.type() != QMetaType::Float) + if (prop.userType() != QVariant::Double && prop.userType() != QMetaType::Float) return 0.; return qVariantValue<qreal>(prop); } @@ -902,7 +903,7 @@ QString QTextFormat::stringProperty(int propertyId) const if (!d) return QString(); const QVariant prop = d->property(propertyId); - if (prop.type() != QVariant::String) + if (prop.userType() != QVariant::String) return QString(); return prop.toString(); } @@ -920,7 +921,7 @@ QColor QTextFormat::colorProperty(int propertyId) const if (!d) return QColor(); const QVariant prop = d->property(propertyId); - if (prop.type() != QVariant::Color) + if (prop.userType() != QVariant::Color) return QColor(); return qvariant_cast<QColor>(prop); } @@ -937,7 +938,7 @@ QPen QTextFormat::penProperty(int propertyId) const if (!d) return QPen(Qt::NoPen); const QVariant prop = d->property(propertyId); - if (prop.type() != QVariant::Pen) + if (prop.userType() != QVariant::Pen) return QPen(Qt::NoPen); return qvariant_cast<QPen>(prop); } @@ -954,7 +955,7 @@ QBrush QTextFormat::brushProperty(int propertyId) const if (!d) return QBrush(Qt::NoBrush); const QVariant prop = d->property(propertyId); - if (prop.type() != QVariant::Brush) + if (prop.userType() != QVariant::Brush) return QBrush(Qt::NoBrush); return qvariant_cast<QBrush>(prop); } @@ -984,13 +985,13 @@ QVector<QTextLength> QTextFormat::lengthVectorProperty(int propertyId) const if (!d) return vector; const QVariant prop = d->property(propertyId); - if (prop.type() != QVariant::List) + if (prop.userType() != QVariant::List) return vector; QList<QVariant> propertyList = prop.toList(); for (int i=0; i<propertyList.size(); ++i) { QVariant var = propertyList.at(i); - if (var.type() == QVariant::TextLength) + if (var.userType() == QVariant::TextLength) vector.append(qvariant_cast<QTextLength>(var)); } @@ -1078,7 +1079,7 @@ int QTextFormat::objectIndex() const if (!d) return -1; const QVariant prop = d->property(ObjectIndex); - if (prop.type() != QVariant::Int) // #### + if (prop.userType() != QVariant::Int) // #### return -1; return prop.toInt(); } @@ -1183,7 +1184,7 @@ bool QTextFormat::operator==(const QTextFormat &rhs) const \brief The QTextCharFormat class provides formatting information for characters in a QTextDocument. - \ingroup text + \ingroup richtext-processing The character format of text in a document specifies the visual properties of the text, as well as information about its role in a hypertext document. @@ -1654,9 +1655,9 @@ void QTextCharFormat::setUnderlineStyle(UnderlineStyle style) QString QTextCharFormat::anchorName() const { QVariant prop = property(AnchorName); - if (prop.type() == QVariant::StringList) + if (prop.userType() == QVariant::StringList) return prop.toStringList().value(0); - else if (prop.type() != QVariant::String) + else if (prop.userType() != QVariant::String) return QString(); return prop.toString(); } @@ -1672,9 +1673,9 @@ QString QTextCharFormat::anchorName() const QStringList QTextCharFormat::anchorNames() const { QVariant prop = property(AnchorName); - if (prop.type() == QVariant::StringList) + if (prop.userType() == QVariant::StringList) return prop.toStringList(); - else if (prop.type() != QVariant::String) + else if (prop.userType() != QVariant::String) return QStringList(); return QStringList(prop.toString()); } @@ -1796,7 +1797,7 @@ QFont QTextCharFormat::font() const \brief The QTextBlockFormat class provides formatting information for blocks of text in a QTextDocument. - \ingroup text + \ingroup richtext-processing A document is composed of a list of blocks, represented by QTextBlock objects. Each block can contain an item of some kind, such as a @@ -2087,7 +2088,7 @@ QList<QTextOption::Tab> QTextBlockFormat::tabPositions() const \brief The QTextListFormat class provides formatting information for lists in a QTextDocument. - \ingroup text + \ingroup richtext-processing A list is composed of one or more items, represented as text blocks. The list's format specifies the appearance of items in the list. @@ -2197,7 +2198,7 @@ QTextListFormat::QTextListFormat(const QTextFormat &fmt) \brief The QTextFrameFormat class provides formatting information for frames in a QTextDocument. - \ingroup text + \ingroup richtext-processing A text frame groups together one or more blocks of text, providing a layer of structure larger than the paragraph. The format of a frame specifies @@ -2523,7 +2524,7 @@ qreal QTextFrameFormat::rightMargin() const \brief The QTextTableFormat class provides formatting information for tables in a QTextDocument. - \ingroup text + \ingroup richtext-processing A table is a group of cells ordered into rows and columns. Each table contains at least one row and one column. Each cell contains a block. @@ -2729,7 +2730,7 @@ QTextTableFormat::QTextTableFormat(const QTextFormat &fmt) \brief The QTextImageFormat class provides formatting information for images in a QTextDocument. - \ingroup text + \ingroup richtext-processing Inline images are represented by an object replacement character (0xFFFC in Unicode) which has an associated QTextImageFormat. The @@ -2998,7 +2999,7 @@ QTextTableCellFormat::QTextTableCellFormat(const QTextFormat &fmt) \brief The QTextTableCellFormat class provides formatting information for table cells in a QTextDocument. - \ingroup text + \ingroup richtext-processing The table cell format of a table cell in a document specifies the visual properties of the table cell. diff --git a/src/gui/text/qtexthtmlparser.cpp b/src/gui/text/qtexthtmlparser.cpp index 8910394..92b2d4e 100644 --- a/src/gui/text/qtexthtmlparser.cpp +++ b/src/gui/text/qtexthtmlparser.cpp @@ -1443,14 +1443,13 @@ static bool setFloatAttribute(qreal *destination, const QString &value) static void setWidthAttribute(QTextLength *width, QString value) { - qreal realVal; bool ok = false; - realVal = value.toDouble(&ok); + qreal realVal = value.toDouble(&ok); if (ok) { *width = QTextLength(QTextLength::FixedLength, realVal); } else { value = value.trimmed(); - if (!value.isEmpty() && value.at(value.length() - 1) == QLatin1Char('%')) { + if (!value.isEmpty() && value.endsWith(QLatin1Char('%'))) { value.chop(1); realVal = value.toDouble(&ok); if (ok) diff --git a/src/gui/text/qtextlayout.cpp b/src/gui/text/qtextlayout.cpp index 3520ab6..fcb22e4 100644 --- a/src/gui/text/qtextlayout.cpp +++ b/src/gui/text/qtextlayout.cpp @@ -128,7 +128,7 @@ static QFixed alignLine(QTextEngine *eng, const QScriptLine &line) \brief The QTextInlineObject class represents an inline object in a QTextLayout. - \ingroup text + \ingroup richtext-processing This class is only used if the text layout is used to lay out parts of a QTextDocument. @@ -285,7 +285,7 @@ Qt::LayoutDirection QTextInlineObject::textDirection() const \brief The QTextLayout class is used to lay out and paint a single paragraph of text. - \ingroup text + \ingroup richtext-processing It offers most features expected from a modern text layout engine, including Unicode compliant rendering, line breaking and @@ -1368,7 +1368,7 @@ void QTextLayout::drawCursor(QPainter *p, const QPointF &pos, int cursorPosition \brief The QTextLine class represents a line of text inside a QTextLayout. - \ingroup text + \ingroup richtext-processing A text line is usually created by QTextLayout::createLine(). diff --git a/src/gui/text/qtextlist.cpp b/src/gui/text/qtextlist.cpp index 8348c92..3e5d7b0 100644 --- a/src/gui/text/qtextlist.cpp +++ b/src/gui/text/qtextlist.cpp @@ -63,7 +63,7 @@ public: \brief The QTextList class provides a decorated list of items in a QTextDocument. - \ingroup text + \ingroup richtext-processing A list contains a sequence of text blocks, each of which is marked with a bullet point or other symbol. Multiple levels of lists can be used, and diff --git a/src/gui/text/qtextobject.cpp b/src/gui/text/qtextobject.cpp index 98c92eb..4ac0276 100644 --- a/src/gui/text/qtextobject.cpp +++ b/src/gui/text/qtextobject.cpp @@ -61,7 +61,7 @@ QT_BEGIN_NAMESPACE \brief The QTextObject class is a base class for different kinds of objects that can group parts of a QTextDocument together. - \ingroup text + \ingroup richtext-processing The common grouping text objects are lists (QTextList), frames (QTextFrame), and tables (QTextTable). A text object has an @@ -183,7 +183,7 @@ QTextDocumentPrivate *QTextObject::docHandle() const \brief The QTextBlockGroup class provides a container for text blocks within a QTextDocument. - \ingroup text + \ingroup richtext-processing Block groups can be used to organize blocks of text within a document. They maintain an up-to-date list of the text blocks that belong to @@ -305,7 +305,7 @@ QTextFrameLayoutData::~QTextFrameLayoutData() \brief The QTextFrame class represents a frame in a QTextDocument. - \ingroup text + \ingroup richtext-processing Text frames provide structure for the text in a document. They are used as generic containers for other document elements. @@ -412,11 +412,6 @@ QTextFrameLayoutData::~QTextFrameLayoutData() QTextFrame::QTextFrame(QTextDocument *doc) : QTextObject(*new QTextFramePrivate(doc), doc) { - Q_D(QTextFrame); - d->fragment_start = 0; - d->fragment_end = 0; - d->parentFrame = 0; - d->layoutData = 0; } // ### DOC: What does this do to child frames? @@ -435,11 +430,6 @@ QTextFrame::~QTextFrame() QTextFrame::QTextFrame(QTextFramePrivate &p, QTextDocument *doc) : QTextObject(p, doc) { - Q_D(QTextFrame); - d->fragment_start = 0; - d->fragment_end = 0; - d->parentFrame = 0; - d->layoutData = 0; } /*! @@ -609,7 +599,7 @@ void QTextFramePrivate::remove_me() \brief The iterator class provides an iterator for reading the contents of a QTextFrame. - \ingroup text + \ingroup richtext-processing A frame consists of an arbitrary sequence of \l{QTextBlock}s and child \l{QTextFrame}s. This class provides a way to iterate over the @@ -809,7 +799,7 @@ QTextFrame::iterator &QTextFrame::iterator::operator--() \brief The QTextBlockUserData class is used to associate custom data with blocks of text. \since 4.1 - \ingroup text + \ingroup richtext-processing QTextBlockUserData provides an abstract interface for container classes that are used to associate application-specific user data with text blocks in a QTextDocument. @@ -839,7 +829,7 @@ QTextBlockUserData::~QTextBlockUserData() \brief The QTextBlock class provides a container for text fragments in a QTextDocument. - \ingroup text + \ingroup richtext-processing A text block encapsulates a block or paragraph of text in a QTextDocument. QTextBlock provides read-only access to the block/paragraph structure of @@ -934,7 +924,7 @@ QTextBlockUserData::~QTextBlockUserData() \brief The QTextBlock::iterator class provides an iterator for reading the contents of a QTextBlock. - \ingroup text + \ingroup richtext-processing A block consists of a sequence of text fragments. This class provides a way to iterate over these, and read their contents. It does not provide @@ -1535,7 +1525,7 @@ QTextBlock::iterator &QTextBlock::iterator::operator--() \brief The QTextFragment class holds a piece of text in a QTextDocument with a single QTextCharFormat. - \ingroup text + \ingroup richtext-processing A text fragment describes a piece of text that is stored with a single character format. Text in which the character format changes can be diff --git a/src/gui/text/qtextobject_p.h b/src/gui/text/qtextobject_p.h index e862b30..22034c8 100644 --- a/src/gui/text/qtextobject_p.h +++ b/src/gui/text/qtextobject_p.h @@ -94,7 +94,7 @@ class QTextFramePrivate : public QTextObjectPrivate Q_DECLARE_PUBLIC(QTextFrame) public: QTextFramePrivate(QTextDocument *doc) - : QTextObjectPrivate(doc) + : QTextObjectPrivate(doc), fragment_start(0), fragment_end(0), parentFrame(0), layoutData(0) { } virtual void fragmentAdded(const QChar &type, uint fragment); diff --git a/src/gui/text/qtextoption.cpp b/src/gui/text/qtextoption.cpp index cc67113..97b3b35 100644 --- a/src/gui/text/qtextoption.cpp +++ b/src/gui/text/qtextoption.cpp @@ -201,7 +201,7 @@ QList<QTextOption::Tab> QTextOption::tabs() const \brief The QTextOption class provides a description of general rich text properties. - \ingroup text + \ingroup richtext-processing QTextOption is used to encapsulate common rich text properties in a single object. It contains information about text alignment, layout direction, diff --git a/src/gui/text/qtexttable.cpp b/src/gui/text/qtexttable.cpp index 07d09d1..3657698 100644 --- a/src/gui/text/qtexttable.cpp +++ b/src/gui/text/qtexttable.cpp @@ -58,7 +58,7 @@ QT_BEGIN_NAMESPACE \brief The QTextTableCell class represents the properties of a cell in a QTextTable. - \ingroup text + \ingroup richtext-processing Table cells are pieces of document structure that belong to a table. The table orders cells into particular rows and columns; cells can @@ -499,7 +499,7 @@ void QTextTablePrivate::update() const \brief The QTextTable class represents a table in a QTextDocument. - \ingroup text + \ingroup richtext-processing A table is a group of cells ordered into rows and columns. Each table contains at least one row and one column. Each cell contains a block, and diff --git a/src/gui/text/qtexttable_p.h b/src/gui/text/qtexttable_p.h index 4dd52c7..7783b5d 100644 --- a/src/gui/text/qtexttable_p.h +++ b/src/gui/text/qtexttable_p.h @@ -62,7 +62,7 @@ class QTextTablePrivate : public QTextFramePrivate { Q_DECLARE_PUBLIC(QTextTable) public: - QTextTablePrivate(QTextDocument *document) : QTextFramePrivate(document), grid(0), nRows(0), dirty(true), blockFragmentUpdates(false) {} + QTextTablePrivate(QTextDocument *document) : QTextFramePrivate(document), grid(0), nRows(0), nCols(0), dirty(true), blockFragmentUpdates(false) {} ~QTextTablePrivate(); static QTextTable *createTable(QTextDocumentPrivate *, int pos, int rows, int cols, const QTextTableFormat &tableFormat); diff --git a/src/gui/text/qzip.cpp b/src/gui/text/qzip.cpp index 13b98bd..70fc05e 100644 --- a/src/gui/text/qzip.cpp +++ b/src/gui/text/qzip.cpp @@ -772,7 +772,7 @@ QList<QZipReader::FileInfo> QZipReader::fileInfoList() const { d->scanFiles(); QList<QZipReader::FileInfo> files; - for (int i = 0; d && i < d->fileHeaders.size(); ++i) { + for (int i = 0; i < d->fileHeaders.size(); ++i) { QZipReader::FileInfo fi; d->fillFileInfo(i, fi); files.append(fi); diff --git a/src/gui/text/text.pri b/src/gui/text/text.pri index e4d24ff..b28ecd7 100644 --- a/src/gui/text/text.pri +++ b/src/gui/text/text.pri @@ -191,7 +191,7 @@ contains(QT_CONFIG, freetype) { embedded:CONFIG += opentype # pull in the proper freetype2 include directory include($$QT_SOURCE_TREE/config.tests/unix/freetype/freetype.pri) - LIBS += -lfreetype + LIBS_PRIVATE += -lfreetype } else { DEFINES *= QT_NO_FREETYPE } diff --git a/src/gui/util/qsystemtrayicon.cpp b/src/gui/util/qsystemtrayicon.cpp index f4d2f7f..64591c7 100644 --- a/src/gui/util/qsystemtrayicon.cpp +++ b/src/gui/util/qsystemtrayicon.cpp @@ -65,7 +65,6 @@ QT_BEGIN_NAMESPACE \class QSystemTrayIcon \brief The QSystemTrayIcon class provides an icon for an application in the system tray. \since 4.2 - \ingroup application \ingroup desktop Modern operating systems usually provide a special area on the desktop, diff --git a/src/gui/util/qundogroup.cpp b/src/gui/util/qundogroup.cpp index 9fcfe95..07a3a3d 100644 --- a/src/gui/util/qundogroup.cpp +++ b/src/gui/util/qundogroup.cpp @@ -61,7 +61,6 @@ public: \class QUndoGroup \brief The QUndoGroup class is a group of QUndoStack objects. \since 4.2 - \ingroup misc For an overview of the Qt's undo framework, see the \link qundo.html overview\endlink. diff --git a/src/gui/util/qundostack.cpp b/src/gui/util/qundostack.cpp index a5e8004..065cc24 100644 --- a/src/gui/util/qundostack.cpp +++ b/src/gui/util/qundostack.cpp @@ -52,7 +52,6 @@ QT_BEGIN_NAMESPACE \class QUndoCommand \brief The QUndoCommand class is the base class of all commands stored on a QUndoStack. \since 4.2 - \ingroup misc For an overview of Qt's Undo Framework, see the \l{Overview of Qt's Undo Framework}{overview document}. @@ -292,7 +291,6 @@ const QUndoCommand *QUndoCommand::child(int index) const \class QUndoStack \brief The QUndoStack class is a stack of QUndoCommand objects. \since 4.2 - \ingroup misc For an overview of Qt's Undo Framework, see the \l{Overview of Qt's Undo Framework}{overview document}. diff --git a/src/gui/util/qundoview.cpp b/src/gui/util/qundoview.cpp index 0241500..079a62f 100644 --- a/src/gui/util/qundoview.cpp +++ b/src/gui/util/qundoview.cpp @@ -253,7 +253,7 @@ QIcon QUndoModel::cleanIcon() const \class QUndoView \brief The QUndoView class displays the contents of a QUndoStack. \since 4.2 - \ingroup misc + \ingroup advanced QUndoView is a QListView which displays the list of commands pushed on an undo stack. diff --git a/src/gui/widgets/qbuttongroup.cpp b/src/gui/widgets/qbuttongroup.cpp index 8b89a86..26a9d51 100644 --- a/src/gui/widgets/qbuttongroup.cpp +++ b/src/gui/widgets/qbuttongroup.cpp @@ -48,8 +48,6 @@ \ingroup organizers \ingroup geomanagement - \ingroup appearance - \mainclass QButtonGroup provides an abstract container into which button widgets can be placed. It does not provide a visual representation of this container diff --git a/src/gui/widgets/qcalendarwidget.cpp b/src/gui/widgets/qcalendarwidget.cpp index 795bc17..e9042f9 100644 --- a/src/gui/widgets/qcalendarwidget.cpp +++ b/src/gui/widgets/qcalendarwidget.cpp @@ -332,10 +332,9 @@ QString QCalendarMonthValidator::text(const QDate &date, int repeat) const return str + QString::number(date.month()); } else if (repeat == 3) { return m_locale.standaloneMonthName(date.month(), QLocale::ShortFormat); - } else if (repeat >= 4) { + } else /*if (repeat >= 4)*/ { return m_locale.standaloneMonthName(date.month(), QLocale::LongFormat); } - return QString(); } ////////////////////////////////// @@ -1961,7 +1960,7 @@ void QCalendarWidgetPrivate::_q_editingFinished() \brief The QCalendarWidget class provides a monthly based calendar widget allowing the user to select a date. \since 4.2 - \mainclass + \ingroup advanced \image cleanlooks-calendarwidget.png diff --git a/src/gui/widgets/qcheckbox.cpp b/src/gui/widgets/qcheckbox.cpp index 8cdf3b9..faec9d0 100644 --- a/src/gui/widgets/qcheckbox.cpp +++ b/src/gui/widgets/qcheckbox.cpp @@ -73,7 +73,7 @@ public: \brief The QCheckBox widget provides a checkbox with a text label. \ingroup basicwidgets - \mainclass + A QCheckBox is an option button that can be switched on (checked) or off (unchecked). Checkboxes are typically used to represent features in an diff --git a/src/gui/widgets/qcombobox.cpp b/src/gui/widgets/qcombobox.cpp index 923ea05..bf0d52b 100644 --- a/src/gui/widgets/qcombobox.cpp +++ b/src/gui/widgets/qcombobox.cpp @@ -867,7 +867,7 @@ QComboBox::QComboBox(bool rw, QWidget *parent, const char *name) \brief The QComboBox widget is a combined button and popup list. \ingroup basicwidgets - \mainclass + A QComboBox provides a means of presenting a list of options to the user in a way that takes up the minimum amount of screen space. diff --git a/src/gui/widgets/qcommandlinkbutton.cpp b/src/gui/widgets/qcommandlinkbutton.cpp index 3d12ce9..206221f 100644 --- a/src/gui/widgets/qcommandlinkbutton.cpp +++ b/src/gui/widgets/qcommandlinkbutton.cpp @@ -57,7 +57,7 @@ QT_BEGIN_NAMESPACE \brief The QCommandLinkButton widget provides a Vista style command link button. \ingroup basicwidgets - \mainclass + The command link is a new control that was introduced by Windows Vista. It's intended use is similar to that of a radio button in that it is used to choose diff --git a/src/gui/widgets/qdatetimeedit.cpp b/src/gui/widgets/qdatetimeedit.cpp index 533f4d0..133d73c 100644 --- a/src/gui/widgets/qdatetimeedit.cpp +++ b/src/gui/widgets/qdatetimeedit.cpp @@ -75,7 +75,7 @@ QT_BEGIN_NAMESPACE \brief The QDateTimeEdit class provides a widget for editing dates and times. \ingroup basicwidgets - \mainclass + QDateTimeEdit allows the user to edit dates by using the keyboard or the arrow keys to increase and decrease date and time values. The @@ -1506,7 +1506,7 @@ void QDateTimeEdit::mousePressEvent(QMouseEvent *event) the QDateTimeEdit widget. \ingroup basicwidgets - \mainclass + Many of the properties and functions provided by QTimeEdit are implemented in QDateTimeEdit. The following properties are most relevant to users of this @@ -1568,7 +1568,7 @@ QTimeEdit::QTimeEdit(const QTime &time, QWidget *parent) the QDateTimeEdit widget. \ingroup basicwidgets - \mainclass + Many of the properties and functions provided by QDateEdit are implemented in QDateTimeEdit. The following properties are most relevant to users of this diff --git a/src/gui/widgets/qdial.cpp b/src/gui/widgets/qdial.cpp index 3fe7c68..90f1c85 100644 --- a/src/gui/widgets/qdial.cpp +++ b/src/gui/widgets/qdial.cpp @@ -168,7 +168,7 @@ int QDialPrivate::valueFromPoint(const QPoint &p) const \brief The QDial class provides a rounded range control (like a speedometer or potentiometer). \ingroup basicwidgets - \mainclass + QDial is used when the user needs to control a value within a program-definable range, and the range either wraps around diff --git a/src/gui/widgets/qdialogbuttonbox.cpp b/src/gui/widgets/qdialogbuttonbox.cpp index 5560367..515efc4 100644 --- a/src/gui/widgets/qdialogbuttonbox.cpp +++ b/src/gui/widgets/qdialogbuttonbox.cpp @@ -57,8 +57,8 @@ QT_BEGIN_NAMESPACE \brief The QDialogButtonBox class is a widget that presents buttons in a layout that is appropriate to the current widget style. - \ingroup application - \mainclass + \ingroup dialog-classes + Dialogs and message boxes typically present buttons in a layout that conforms to the interface guidelines for that platform. Invariably, diff --git a/src/gui/widgets/qdockwidget.cpp b/src/gui/widgets/qdockwidget.cpp index a521921..1193b3e 100644 --- a/src/gui/widgets/qdockwidget.cpp +++ b/src/gui/widgets/qdockwidget.cpp @@ -1069,7 +1069,7 @@ void QDockWidgetPrivate::setWindowState(bool floating, bool unplug, const QRect inside a QMainWindow or floated as a top-level window on the desktop. - \ingroup application + \ingroup mainwindow-classes QDockWidget provides the concept of dock widgets, also know as tool palettes or utility windows. Dock windows are secondary diff --git a/src/gui/widgets/qfocusframe.cpp b/src/gui/widgets/qfocusframe.cpp index 2c88a2e..65dc7d0 100644 --- a/src/gui/widgets/qfocusframe.cpp +++ b/src/gui/widgets/qfocusframe.cpp @@ -118,7 +118,7 @@ void QFocusFrame::initStyleOption(QStyleOption *option) const outside of a widget's normal paintable area. \ingroup basicwidgets - \mainclass + Normally an application will not need to create its own QFocusFrame as QStyle will handle this detail for diff --git a/src/gui/widgets/qfontcombobox.cpp b/src/gui/widgets/qfontcombobox.cpp index 24af989..d3f5bf9 100644 --- a/src/gui/widgets/qfontcombobox.cpp +++ b/src/gui/widgets/qfontcombobox.cpp @@ -276,7 +276,6 @@ void QFontComboBoxPrivate::_q_currentChanged(const QString &text) \since 4.2 \ingroup basicwidgets - \ingroup text The combobox is populated with an alphabetized list of font family names, such as Arial, Helvetica, and Times New Roman. diff --git a/src/gui/widgets/qframe.cpp b/src/gui/widgets/qframe.cpp index a7861ad..62f2ddf 100644 --- a/src/gui/widgets/qframe.cpp +++ b/src/gui/widgets/qframe.cpp @@ -73,7 +73,7 @@ inline void QFramePrivate::init() \brief The QFrame class is the base class of widgets that can have a frame. \ingroup abstractwidgets - \mainclass + QMenu uses this to "raise" the menu above the surrounding screen. QProgressBar has a "sunken" look. QLabel has a flat look. diff --git a/src/gui/widgets/qgroupbox.cpp b/src/gui/widgets/qgroupbox.cpp index 03a08e8..daf92c0 100644 --- a/src/gui/widgets/qgroupbox.cpp +++ b/src/gui/widgets/qgroupbox.cpp @@ -147,8 +147,6 @@ void QGroupBoxPrivate::click() \ingroup organizers \ingroup geomanagement - \ingroup appearance - \mainclass A group box provides a frame, a title and a keyboard shortcut, and displays various other widgets inside itself. The title is on top, diff --git a/src/gui/widgets/qlabel.cpp b/src/gui/widgets/qlabel.cpp index fd97c8f..a9c7e12 100644 --- a/src/gui/widgets/qlabel.cpp +++ b/src/gui/widgets/qlabel.cpp @@ -61,8 +61,6 @@ QT_BEGIN_NAMESPACE \brief The QLabel widget provides a text or image display. \ingroup basicwidgets - \ingroup text - \mainclass QLabel is used for displaying text or an image. No user interaction functionality is provided. The visual appearance of diff --git a/src/gui/widgets/qlcdnumber.cpp b/src/gui/widgets/qlcdnumber.cpp index c4c97ab..d6f5e61 100644 --- a/src/gui/widgets/qlcdnumber.cpp +++ b/src/gui/widgets/qlcdnumber.cpp @@ -74,7 +74,7 @@ public: \brief The QLCDNumber widget displays a number with LCD-like digits. \ingroup basicwidgets - \mainclass + It can display a number in just about any size. It can display decimal, hexadecimal, octal or binary numbers. It is easy to diff --git a/src/gui/widgets/qlineedit.cpp b/src/gui/widgets/qlineedit.cpp index ef6e511..9e15e80 100644 --- a/src/gui/widgets/qlineedit.cpp +++ b/src/gui/widgets/qlineedit.cpp @@ -128,7 +128,7 @@ void QLineEdit::initStyleOption(QStyleOptionFrame *option) const \brief The QLineEdit widget is a one-line text editor. \ingroup basicwidgets - \mainclass + A line edit allows the user to enter and edit a single line of plain text with a useful collection of editing functions, diff --git a/src/gui/widgets/qlineedit_p.cpp b/src/gui/widgets/qlineedit_p.cpp index d8d0796..cec34da 100644 --- a/src/gui/widgets/qlineedit_p.cpp +++ b/src/gui/widgets/qlineedit_p.cpp @@ -138,6 +138,7 @@ void QLineEditPrivate::init(const QString& txt) { Q_Q(QLineEdit); control = new QLineControl(txt); + control->setFont(q->font()); QObject::connect(control, SIGNAL(textChanged(const QString &)), q, SIGNAL(textChanged(const QString &))); QObject::connect(control, SIGNAL(textEdited(const QString &)), diff --git a/src/gui/widgets/qmainwindow.cpp b/src/gui/widgets/qmainwindow.cpp index 5672d3b..7db800b 100644 --- a/src/gui/widgets/qmainwindow.cpp +++ b/src/gui/widgets/qmainwindow.cpp @@ -73,7 +73,7 @@ class QMainWindowPrivate : public QWidgetPrivate Q_DECLARE_PUBLIC(QMainWindow) public: inline QMainWindowPrivate() - : layout(0), toolButtonStyle(Qt::ToolButtonIconOnly) + : layout(0), explicitIconSize(false), toolButtonStyle(Qt::ToolButtonIconOnly) #ifdef Q_WS_MAC , useHIToolBar(false) #endif @@ -107,8 +107,6 @@ void QMainWindowPrivate::init() layout = new QMainWindowLayout(q); const int metric = q->style()->pixelMetric(QStyle::PM_ToolBarIconSize, 0, q); iconSize = QSize(metric, metric); - explicitIconSize = false; - q->setAttribute(Qt::WA_Hover); } @@ -148,8 +146,8 @@ void QMainWindowPrivate::init() \class QMainWindow \brief The QMainWindow class provides a main application window. - \ingroup application - \mainclass + \ingroup mainwindow-classes + \tableofcontents diff --git a/src/gui/widgets/qmdiarea.cpp b/src/gui/widgets/qmdiarea.cpp index 2390c25..e206bcf 100644 --- a/src/gui/widgets/qmdiarea.cpp +++ b/src/gui/widgets/qmdiarea.cpp @@ -43,8 +43,8 @@ \class QMdiArea \brief The QMdiArea widget provides an area in which MDI windows are displayed. \since 4.3 - \ingroup application - \mainclass + \ingroup mainwindow-classes + QMdiArea functions, essentially, like a window manager for MDI windows. For instance, it draws the windows it manages on itself diff --git a/src/gui/widgets/qmdisubwindow.cpp b/src/gui/widgets/qmdisubwindow.cpp index c645429..d51bd99 100644 --- a/src/gui/widgets/qmdisubwindow.cpp +++ b/src/gui/widgets/qmdisubwindow.cpp @@ -44,8 +44,8 @@ \brief The QMdiSubWindow class provides a subwindow class for QMdiArea. \since 4.3 - \ingroup application - \mainclass + \ingroup mainwindow-classes + QMdiSubWindow represents a top-level window in a QMdiArea, and consists of a title bar with window decorations, an internal widget, and diff --git a/src/gui/widgets/qmenu.cpp b/src/gui/widgets/qmenu.cpp index d54200e..69ccae5 100644 --- a/src/gui/widgets/qmenu.cpp +++ b/src/gui/widgets/qmenu.cpp @@ -1207,9 +1207,9 @@ void QMenu::initStyleOption(QStyleOptionMenuItem *option, const QAction *action) \brief The QMenu class provides a menu widget for use in menu bars, context menus, and other popup menus. - \ingroup application + \ingroup mainwindow-classes \ingroup basicwidgets - \mainclass + A menu widget is a selection menu. It can be either a pull-down menu in a menu bar or a standalone context menu. Pull-down menus diff --git a/src/gui/widgets/qmenubar.cpp b/src/gui/widgets/qmenubar.cpp index 8c69843..82b3769 100644 --- a/src/gui/widgets/qmenubar.cpp +++ b/src/gui/widgets/qmenubar.cpp @@ -590,8 +590,7 @@ void QMenuBar::initStyleOption(QStyleOptionMenuItem *option, const QAction *acti \class QMenuBar \brief The QMenuBar class provides a horizontal menu bar. - \ingroup application - \mainclass + \ingroup mainwindow-classes A menu bar consists of a list of pull-down menu items. You add menu items with addMenu(). For example, asuming that \c menubar @@ -715,7 +714,7 @@ void QMenuBar::initStyleOption(QStyleOptionMenuItem *option, const QAction *acti \section1 Examples The \l{mainwindows/menus}{Menus} example shows how to use QMenuBar - and QMenu. The other \l{Qt Examples#Main Windows}{main window + and QMenu. The other \l{Main Window Examples}{main window application examples} also provide menus using these classes. \sa QMenu, QShortcut, QAction, diff --git a/src/gui/widgets/qplaintextedit.cpp b/src/gui/widgets/qplaintextedit.cpp index b365660..20de404 100644 --- a/src/gui/widgets/qplaintextedit.cpp +++ b/src/gui/widgets/qplaintextedit.cpp @@ -116,8 +116,7 @@ public: \since 4.4 \brief The QPlainTextDocumentLayout class implements a plain text layout for QTextDocument - \ingroup text - + \ingroup richtext-processing A QPlainTextDocumentLayout is required for text documents that can be display or edited in a QPlainTextEdit. See @@ -1013,8 +1012,8 @@ void QPlainTextEditPrivate::ensureViewportLayouted() \brief The QPlainTextEdit class provides a widget that is used to edit and display plain text. - \ingroup text - \mainclass + \ingroup richtext-processing + \tableofcontents diff --git a/src/gui/widgets/qprintpreviewwidget.cpp b/src/gui/widgets/qprintpreviewwidget.cpp index 384d2ca..9544fcf 100644 --- a/src/gui/widgets/qprintpreviewwidget.cpp +++ b/src/gui/widgets/qprintpreviewwidget.cpp @@ -452,7 +452,7 @@ void QPrintPreviewWidgetPrivate::setZoomFactor(qreal _zoomFactor) \brief The QPrintPreviewWidget class provides a widget for previewing page layouts for printer output. - \ingroup multimedia + \ingroup printing QPrintPreviewDialog uses a QPrintPreviewWidget internally, and the purpose of QPrintPreviewWidget is to make it possible to embed the diff --git a/src/gui/widgets/qprogressbar.cpp b/src/gui/widgets/qprogressbar.cpp index b35b9d3..9f91cf7 100644 --- a/src/gui/widgets/qprogressbar.cpp +++ b/src/gui/widgets/qprogressbar.cpp @@ -172,7 +172,7 @@ bool QProgressBarPrivate::repaintRequired() const \brief The QProgressBar widget provides a horizontal or vertical progress bar. \ingroup basicwidgets - \mainclass + A progress bar is used to give the user an indication of the progress of an operation and to reassure them that the application diff --git a/src/gui/widgets/qpushbutton.cpp b/src/gui/widgets/qpushbutton.cpp index 94b39e0..f991620 100644 --- a/src/gui/widgets/qpushbutton.cpp +++ b/src/gui/widgets/qpushbutton.cpp @@ -73,7 +73,7 @@ QT_BEGIN_NAMESPACE \brief The QPushButton widget provides a command button. \ingroup basicwidgets - \mainclass + The push button, or command button, is perhaps the most commonly used widget in any graphical user interface. Push (click) a button diff --git a/src/gui/widgets/qradiobutton.cpp b/src/gui/widgets/qradiobutton.cpp index feada97..4b5cead 100644 --- a/src/gui/widgets/qradiobutton.cpp +++ b/src/gui/widgets/qradiobutton.cpp @@ -80,7 +80,7 @@ void QRadioButtonPrivate::init() \brief The QRadioButton widget provides a radio button with a text label. \ingroup basicwidgets - \mainclass + A QRadioButton is an option button that can be switched on (checked) or off (unchecked). Radio buttons typically present the user with a "one diff --git a/src/gui/widgets/qrubberband.cpp b/src/gui/widgets/qrubberband.cpp index 5b61bd4..a04bc55 100644 --- a/src/gui/widgets/qrubberband.cpp +++ b/src/gui/widgets/qrubberband.cpp @@ -98,9 +98,6 @@ void QRubberBand::initStyleOption(QStyleOptionRubberBand *option) const \brief The QRubberBand class provides a rectangle or line that can indicate a selection or a boundary. - \ingroup misc - \mainclass - A rubber band is often used to show a new bounding area (as in a QSplitter or a QDockWidget that is undocking). Historically this has been implemented using a QPainter and XOR, but this approach diff --git a/src/gui/widgets/qscrollarea.cpp b/src/gui/widgets/qscrollarea.cpp index 32d3c2b..31e558b 100644 --- a/src/gui/widgets/qscrollarea.cpp +++ b/src/gui/widgets/qscrollarea.cpp @@ -61,7 +61,7 @@ QT_BEGIN_NAMESPACE another widget. \ingroup basicwidgets - \mainclass + A scroll area is used to display the contents of a child widget within a frame. If the widget exceeds the size of the frame, the diff --git a/src/gui/widgets/qscrollbar.cpp b/src/gui/widgets/qscrollbar.cpp index 390d1b8..37525e2 100644 --- a/src/gui/widgets/qscrollbar.cpp +++ b/src/gui/widgets/qscrollbar.cpp @@ -431,6 +431,12 @@ void QScrollBarPrivate::init() q->setSizePolicy(sp); q->setAttribute(Qt::WA_WState_OwnSizePolicy, false); q->setAttribute(Qt::WA_OpaquePaintEvent); + +#if !defined(QT_NO_CONTEXTMENU) && defined(Q_WS_WINCE) + if (!q->style()->styleHint(QStyle::SH_ScrollBar_ContextMenu, 0, q)) { + q->setContextMenuPolicy(Qt::PreventContextMenu); + } +#endif } #ifndef QT_NO_CONTEXTMENU diff --git a/src/gui/widgets/qsizegrip.cpp b/src/gui/widgets/qsizegrip.cpp index 080e328..8a1a0e6 100644 --- a/src/gui/widgets/qsizegrip.cpp +++ b/src/gui/widgets/qsizegrip.cpp @@ -165,9 +165,8 @@ Qt::Corner QSizeGripPrivate::corner() const \brief The QSizeGrip class provides a resize handle for resizing top-level windows. - \ingroup application + \ingroup mainwindow-classes \ingroup basicwidgets - \ingroup appearance This widget works like the standard Windows resize handle. In the X11 version this resize handle generally works differently from diff --git a/src/gui/widgets/qslider.cpp b/src/gui/widgets/qslider.cpp index 0b7e7c1..d9c98e1 100644 --- a/src/gui/widgets/qslider.cpp +++ b/src/gui/widgets/qslider.cpp @@ -203,7 +203,7 @@ QStyle::SubControl QSliderPrivate::newHoverControl(const QPoint &pos) \brief The QSlider widget provides a vertical or horizontal slider. \ingroup basicwidgets - \mainclass + The slider is the classic widget for controlling a bounded value. It lets the user move a slider handle along a horizontal or vertical diff --git a/src/gui/widgets/qspinbox.cpp b/src/gui/widgets/qspinbox.cpp index 563d18b..e6a4265 100644 --- a/src/gui/widgets/qspinbox.cpp +++ b/src/gui/widgets/qspinbox.cpp @@ -113,7 +113,7 @@ public: \brief The QSpinBox class provides a spin box widget. \ingroup basicwidgets - \mainclass + QSpinBox is designed to handle integers and discrete sets of values (e.g., month names); use QDoubleSpinBox for floating point @@ -534,7 +534,7 @@ void QSpinBox::fixup(QString &input) const takes doubles. \ingroup basicwidgets - \mainclass + QDoubleSpinBox allows the user to choose a value by clicking the up and down buttons or by pressing Up or Down on the keyboard to diff --git a/src/gui/widgets/qsplashscreen.cpp b/src/gui/widgets/qsplashscreen.cpp index e4f7307..2357164 100644 --- a/src/gui/widgets/qsplashscreen.cpp +++ b/src/gui/widgets/qsplashscreen.cpp @@ -72,9 +72,6 @@ public: \brief The QSplashScreen widget provides a splash screen that can be shown during application startup. - \ingroup misc - \mainclass - A splash screen is a widget that is usually displayed when an application is being started. Splash screens are often used for applications that have long start up times (e.g. database or diff --git a/src/gui/widgets/qsplitter.cpp b/src/gui/widgets/qsplitter.cpp index 98cf2a8..0aa89f4 100644 --- a/src/gui/widgets/qsplitter.cpp +++ b/src/gui/widgets/qsplitter.cpp @@ -931,7 +931,7 @@ QSplitterLayoutStruct *QSplitterPrivate::insertWidget(int index, QWidget *w) \brief The QSplitter class implements a splitter widget. \ingroup organizers - \mainclass + A splitter lets the user control the size of child widgets by dragging the boundary between the children. Any number of widgets may be controlled by a diff --git a/src/gui/widgets/qstackedwidget.cpp b/src/gui/widgets/qstackedwidget.cpp index da942d1..7dedf4a 100644 --- a/src/gui/widgets/qstackedwidget.cpp +++ b/src/gui/widgets/qstackedwidget.cpp @@ -65,8 +65,7 @@ public: \ingroup organizers \ingroup geomanagement - \ingroup appearance - \mainclass + QStackedWidget can be used to create a user interface similar to the one provided by QTabWidget. It is a convenience layout widget diff --git a/src/gui/widgets/qstatusbar.cpp b/src/gui/widgets/qstatusbar.cpp index ed2d5d8..eb58c61 100644 --- a/src/gui/widgets/qstatusbar.cpp +++ b/src/gui/widgets/qstatusbar.cpp @@ -158,9 +158,9 @@ QRect QStatusBarPrivate::messageRect() const \brief The QStatusBar class provides a horizontal bar suitable for presenting status information. - \ingroup application + \ingroup mainwindow-classes \ingroup helpsystem - \mainclass + Each status indicator falls into one of three categories: diff --git a/src/gui/widgets/qtabbar.cpp b/src/gui/widgets/qtabbar.cpp index 410c26f..5166390 100644 --- a/src/gui/widgets/qtabbar.cpp +++ b/src/gui/widgets/qtabbar.cpp @@ -192,7 +192,7 @@ void QTabBar::initStyleOption(QStyleOptionTab *option, int tabIndex) const \brief The QTabBar class provides a tab bar, e.g. for use in tabbed dialogs. \ingroup basicwidgets - \mainclass + QTabBar is straightforward to use; it draws the tabs using one of the predefined \link QTabBar::Shape shapes\endlink, and emits a diff --git a/src/gui/widgets/qtabwidget.cpp b/src/gui/widgets/qtabwidget.cpp index 6828c50..14a554a 100644 --- a/src/gui/widgets/qtabwidget.cpp +++ b/src/gui/widgets/qtabwidget.cpp @@ -64,7 +64,7 @@ QT_BEGIN_NAMESPACE \ingroup organizers \ingroup basicwidgets - \mainclass + A tab widget provides a tab bar (see QTabBar) and a "page area" that is used to display pages related to each tab. By default, the diff --git a/src/gui/widgets/qtextbrowser.cpp b/src/gui/widgets/qtextbrowser.cpp index 803b6fb..7a67a8d 100644 --- a/src/gui/widgets/qtextbrowser.cpp +++ b/src/gui/widgets/qtextbrowser.cpp @@ -580,7 +580,7 @@ void QTextBrowserPrivate::restoreHistoryEntry(const HistoryEntry entry) \class QTextBrowser \brief The QTextBrowser class provides a rich text browser with hypertext navigation. - \ingroup text + \ingroup richtext-processing This class extends QTextEdit (in read-only mode), adding some navigation functionality so that users can follow links in hypertext documents. diff --git a/src/gui/widgets/qtextedit.cpp b/src/gui/widgets/qtextedit.cpp index b0159b3..bedb3b6 100644 --- a/src/gui/widgets/qtextedit.cpp +++ b/src/gui/widgets/qtextedit.cpp @@ -338,8 +338,8 @@ void QTextEditPrivate::_q_ensureVisible(const QRectF &_rect) \brief The QTextEdit class provides a widget that is used to edit and display both plain and rich text. - \ingroup text - \mainclass + \ingroup richtext-processing + \tableofcontents diff --git a/src/gui/widgets/qtoolbar.cpp b/src/gui/widgets/qtoolbar.cpp index 37c7998..ef0847b 100644 --- a/src/gui/widgets/qtoolbar.cpp +++ b/src/gui/widgets/qtoolbar.cpp @@ -412,8 +412,8 @@ void QToolBarPrivate::plug(const QRect &r) \brief The QToolBar class provides a movable panel that contains a set of controls. - \ingroup application - \mainclass + \ingroup mainwindow-classes + Toolbar buttons are added by adding \e actions, using addAction() or insertAction(). Groups of buttons can be separated using diff --git a/src/gui/widgets/qtoolbox.cpp b/src/gui/widgets/qtoolbox.cpp index 803c6ab..378ed17 100644 --- a/src/gui/widgets/qtoolbox.cpp +++ b/src/gui/widgets/qtoolbox.cpp @@ -252,7 +252,7 @@ void QToolBoxButton::paintEvent(QPaintEvent *) \brief The QToolBox class provides a column of tabbed widget items. - \mainclass + \ingroup basicwidgets A toolbox is a widget that displays a column of tabs one above the diff --git a/src/gui/widgets/qtoolbutton.cpp b/src/gui/widgets/qtoolbutton.cpp index bb8c32f..4ca3d62 100644 --- a/src/gui/widgets/qtoolbutton.cpp +++ b/src/gui/widgets/qtoolbutton.cpp @@ -116,7 +116,7 @@ bool QToolButtonPrivate::hasMenu() const commands or options, usually used inside a QToolBar. \ingroup basicwidgets - \mainclass + A tool button is a special button that provides quick-access to specific commands or options. As opposed to a normal command diff --git a/src/gui/widgets/qvalidator.cpp b/src/gui/widgets/qvalidator.cpp index 7db0247..8f43097 100644 --- a/src/gui/widgets/qvalidator.cpp +++ b/src/gui/widgets/qvalidator.cpp @@ -55,9 +55,6 @@ QT_BEGIN_NAMESPACE \class QValidator \brief The QValidator class provides validation of input text. - \ingroup misc - \mainclass - The class itself is abstract. Two subclasses, \l QIntValidator and \l QDoubleValidator, provide basic numeric-range checking, and \l QRegExpValidator provides general checking using a custom regular @@ -246,8 +243,6 @@ void QValidator::fixup(QString &) const \brief The QIntValidator class provides a validator that ensures a string contains a valid integer within a specified range. - \ingroup misc - Example of use: \snippet doc/src/snippets/code/src_gui_widgets_qvalidator.cpp 0 @@ -497,8 +492,6 @@ public: \brief The QDoubleValidator class provides range checking of floating-point numbers. - \ingroup misc - QDoubleValidator provides an upper bound, a lower bound, and a limit on the number of digits after the decimal point. It does not provide a fixup() function. @@ -767,8 +760,6 @@ QDoubleValidator::Notation QDoubleValidator::notation() const \brief The QRegExpValidator class is used to check a string against a regular expression. - \ingroup misc - QRegExpValidator uses a regular expression (regexp) to determine whether an input string is \l Acceptable, \l Intermediate, or \l Invalid. The regexp can either be supplied diff --git a/src/gui/widgets/qworkspace.cpp b/src/gui/widgets/qworkspace.cpp index d8bcf9b..cd98671 100644 --- a/src/gui/widgets/qworkspace.cpp +++ b/src/gui/widgets/qworkspace.cpp @@ -834,7 +834,6 @@ QSize QWorkspaceTitleBar::sizeHint() const \obsolete \brief The QWorkspace widget provides a workspace window that can be used in an MDI application. - \ingroup application This class is deprecated. Use QMdiArea instead. diff --git a/src/multimedia/audio/audio.pri b/src/multimedia/audio/audio.pri index 3ddb23b..c7fbbb0 100644 --- a/src/multimedia/audio/audio.pri +++ b/src/multimedia/audio/audio.pri @@ -31,7 +31,7 @@ mac { $$PWD/qaudioinput_mac_p.cpp \ $$PWD/qaudio_mac.cpp - LIBS += -framework CoreAudio -framework AudioUnit -framework AudioToolbox + LIBS += -framework ApplicationServices -framework CoreAudio -framework AudioUnit -framework AudioToolbox } else:win32 { @@ -50,7 +50,7 @@ mac { SOURCES += $$PWD/qaudiodeviceinfo_alsa_p.cpp \ $$PWD/qaudiooutput_alsa_p.cpp \ $$PWD/qaudioinput_alsa_p.cpp - LIBS += -lasound + LIBS_PRIVATE += -lasound } } } diff --git a/src/network/access/access.pri b/src/network/access/access.pri index ab7b3a7..edc1b63 100644 --- a/src/network/access/access.pri +++ b/src/network/access/access.pri @@ -59,6 +59,6 @@ SOURCES += access/qftp.cpp \ contains(QT_CONFIG, zlib) { INCLUDEPATH += ../3rdparty/zlib } else:!contains(QT_CONFIG, no-zlib) { - unix:LIBS += -lz + unix:LIBS_PRIVATE += -lz # win32:LIBS += libz.lib } diff --git a/src/network/access/qftp.cpp b/src/network/access/qftp.cpp index d8b2232..5931a67 100644 --- a/src/network/access/qftp.cpp +++ b/src/network/access/qftp.cpp @@ -1296,9 +1296,9 @@ int QFtpPrivate::addCommand(QFtpCommand *cmd) \class QFtp \brief The QFtp class provides an implementation of the client side of FTP protocol. - \ingroup io + \ingroup network \inmodule QtNetwork - \mainclass + This class provides a direct interface to FTP that allows you to have more control over the requests. However, for new diff --git a/src/network/access/qhttp.cpp b/src/network/access/qhttp.cpp index 1f27742..17ea6df 100644 --- a/src/network/access/qhttp.cpp +++ b/src/network/access/qhttp.cpp @@ -516,7 +516,7 @@ public: \obsolete \brief The QHttpHeader class contains header information for HTTP. - \ingroup io + \ingroup network \inmodule QtNetwork In most cases you should use the more specialized derivatives of @@ -1010,7 +1010,7 @@ public: \obsolete \brief The QHttpResponseHeader class contains response header information for HTTP. - \ingroup io + \ingroup network \inmodule QtNetwork This class is used by the QHttp class to report the header @@ -1215,7 +1215,7 @@ public: \obsolete \brief The QHttpRequestHeader class contains request header information for HTTP. - \ingroup io + \ingroup network \inmodule QtNetwork This class is used in the QHttp class to report the header @@ -1420,9 +1420,9 @@ QString QHttpRequestHeader::toString() const \brief The QHttp class provides an implementation of the HTTP protocol. - \ingroup io + \ingroup network \inmodule QtNetwork - \mainclass + This class provides a direct interface to HTTP that allows you to download and upload data with the HTTP protocol. diff --git a/src/network/access/qnetworkrequest.cpp b/src/network/access/qnetworkrequest.cpp index dd8af60..9f6f224 100644 --- a/src/network/access/qnetworkrequest.cpp +++ b/src/network/access/qnetworkrequest.cpp @@ -55,7 +55,7 @@ QT_BEGIN_NAMESPACE \brief The QNetworkRequest class holds one request to be sent with the Network Access API. \since 4.4 - \ingroup io + \ingroup network \inmodule QtNetwork QNetworkRequest is part of the Network Access API and is the class diff --git a/src/network/kernel/kernel.pri b/src/network/kernel/kernel.pri index bf07aab..6145c43 100644 --- a/src/network/kernel/kernel.pri +++ b/src/network/kernel/kernel.pri @@ -24,7 +24,7 @@ symbian: SOURCES += kernel/qhostinfo_unix.cpp kernel/qnetworkinterface_symbian.c unix:!symbian:SOURCES += kernel/qhostinfo_unix.cpp kernel/qnetworkinterface_unix.cpp win32:SOURCES += kernel/qhostinfo_win.cpp kernel/qnetworkinterface_win.cpp -mac:LIBS+= -framework SystemConfiguration +mac:LIBS_PRIVATE += -framework SystemConfiguration -framework CoreFoundation mac:SOURCES += kernel/qnetworkproxy_mac.cpp else:win32:SOURCES += kernel/qnetworkproxy_win.cpp else:SOURCES += kernel/qnetworkproxy_generic.cpp diff --git a/src/network/kernel/qauthenticator.cpp b/src/network/kernel/qauthenticator.cpp index d0e60f7..fc9ff8b 100644 --- a/src/network/kernel/qauthenticator.cpp +++ b/src/network/kernel/qauthenticator.cpp @@ -64,7 +64,7 @@ static QByteArray qNtlmPhase3(QAuthenticatorPrivate *ctx, const QByteArray& phas \since 4.3 \reentrant - \ingroup io + \ingroup network \inmodule QtNetwork The QAuthenticator class is usually used in the diff --git a/src/network/kernel/qhostaddress.cpp b/src/network/kernel/qhostaddress.cpp index b47d20d..5336a1e 100644 --- a/src/network/kernel/qhostaddress.cpp +++ b/src/network/kernel/qhostaddress.cpp @@ -419,7 +419,7 @@ void QNetmaskAddress::setPrefixLength(QAbstractSocket::NetworkLayerProtocol prot /*! \class QHostAddress \brief The QHostAddress class provides an IP address. - \ingroup io + \ingroup network \inmodule QtNetwork This class holds an IPv4 or IPv6 address in a platform- and diff --git a/src/network/kernel/qhostinfo.cpp b/src/network/kernel/qhostinfo.cpp index 59901ee..c8def4a 100644 --- a/src/network/kernel/qhostinfo.cpp +++ b/src/network/kernel/qhostinfo.cpp @@ -74,7 +74,7 @@ void QHostInfoAgent::staticCleanup() \reentrant \inmodule QtNetwork - \ingroup io + \ingroup network QHostInfo uses the lookup mechanisms provided by the operating system to find the IP address(es) associated with a host name, diff --git a/src/network/kernel/qnetworkinterface.cpp b/src/network/kernel/qnetworkinterface.cpp index 8677fcf..9f4b3f8 100644 --- a/src/network/kernel/qnetworkinterface.cpp +++ b/src/network/kernel/qnetworkinterface.cpp @@ -148,7 +148,7 @@ QString QNetworkInterfacePrivate::makeHwAddress(int len, uchar *data) \since 4.2 \reentrant - \ingroup io + \ingroup network Each network interface can contain zero or more IP addresses, which in turn can be associated with a netmask and/or a broadcast @@ -332,7 +332,7 @@ void QNetworkAddressEntry::setBroadcast(const QHostAddress &newBroadcast) \since 4.2 \reentrant - \ingroup io + \ingroup network QNetworkInterface represents one network interface attached to the host where the program is being run. Each network interface may diff --git a/src/network/kernel/qnetworkproxy.cpp b/src/network/kernel/qnetworkproxy.cpp index 4a8d997..0fa54ed 100644 --- a/src/network/kernel/qnetworkproxy.cpp +++ b/src/network/kernel/qnetworkproxy.cpp @@ -48,7 +48,7 @@ \brief The QNetworkProxy class provides a network layer proxy. \reentrant - \ingroup io + \ingroup network \inmodule QtNetwork QNetworkProxy provides the method for configuring network layer @@ -1118,7 +1118,7 @@ void QNetworkProxyQuery::setUrl(const QUrl &url) \brief The QNetworkProxyFactory class provides fine-grained proxy selection. \since 4.5 - \ingroup io + \ingroup network \inmodule QtNetwork QNetworkProxyFactory is an extension to QNetworkProxy, allowing diff --git a/src/network/kernel/qurlinfo.cpp b/src/network/kernel/qurlinfo.cpp index 626bce2..5ab200c 100644 --- a/src/network/kernel/qurlinfo.cpp +++ b/src/network/kernel/qurlinfo.cpp @@ -85,7 +85,7 @@ public: \brief The QUrlInfo class stores information about URLs. \ingroup io - \ingroup misc + \ingroup network The information about a URL that can be retrieved includes name(), permissions(), owner(), group(), size(), lastModified(), diff --git a/src/network/socket/qabstractsocket.cpp b/src/network/socket/qabstractsocket.cpp index 9b50840..c38152a 100644 --- a/src/network/socket/qabstractsocket.cpp +++ b/src/network/socket/qabstractsocket.cpp @@ -48,7 +48,7 @@ common to all socket types. \reentrant - \ingroup io + \ingroup network \inmodule QtNetwork QAbstractSocket is the base class for QTcpSocket and QUdpSocket diff --git a/src/network/socket/qnativesocketengine.cpp b/src/network/socket/qnativesocketengine.cpp index a2f88d7..f8e27e9 100644 --- a/src/network/socket/qnativesocketengine.cpp +++ b/src/network/socket/qnativesocketengine.cpp @@ -47,7 +47,7 @@ \brief The QNativeSocketEngine class provides low level access to a socket. \reentrant - \ingroup io + \ingroup network \inmodule QtNetwork QtSocketLayer provides basic socket functionality provided by the diff --git a/src/network/socket/qtcpserver.cpp b/src/network/socket/qtcpserver.cpp index 26e3c24..b13a50b 100644 --- a/src/network/socket/qtcpserver.cpp +++ b/src/network/socket/qtcpserver.cpp @@ -46,7 +46,7 @@ \brief The QTcpServer class provides a TCP-based server. \reentrant - \ingroup io + \ingroup network \inmodule QtNetwork This class makes it possible to accept incoming TCP connections. diff --git a/src/network/socket/qtcpsocket.cpp b/src/network/socket/qtcpsocket.cpp index af1cee7..604143a 100644 --- a/src/network/socket/qtcpsocket.cpp +++ b/src/network/socket/qtcpsocket.cpp @@ -47,7 +47,7 @@ \brief The QTcpSocket class provides a TCP socket. \reentrant - \ingroup io + \ingroup network \inmodule QtNetwork TCP (Transmission Control Protocol) is a reliable, diff --git a/src/network/socket/qudpsocket.cpp b/src/network/socket/qudpsocket.cpp index be86f44..5483ece 100644 --- a/src/network/socket/qudpsocket.cpp +++ b/src/network/socket/qudpsocket.cpp @@ -46,7 +46,7 @@ \reentrant \brief The QUdpSocket class provides a UDP socket. - \ingroup io + \ingroup network \inmodule QtNetwork UDP (User Datagram Protocol) is a lightweight, unreliable, diff --git a/src/network/ssl/qssl.cpp b/src/network/ssl/qssl.cpp index c4f792e..1913b49 100644 --- a/src/network/ssl/qssl.cpp +++ b/src/network/ssl/qssl.cpp @@ -49,7 +49,8 @@ QT_BEGIN_NAMESPACE \brief The QSsl namespace declares enums common to all SSL classes in QtNetwork. \since 4.3 - \ingroup io + \ingroup network + \ingroup ssl \inmodule QtNetwork */ diff --git a/src/network/ssl/qsslcertificate.cpp b/src/network/ssl/qsslcertificate.cpp index 4950d2d..2ea6d9f 100644 --- a/src/network/ssl/qsslcertificate.cpp +++ b/src/network/ssl/qsslcertificate.cpp @@ -46,7 +46,7 @@ \since 4.3 \reentrant - \ingroup io + \ingroup network \ingroup ssl \inmodule QtNetwork @@ -686,7 +686,7 @@ static bool matchLineFeed(const QByteArray &pem, int *offset) ch = pem.at(++*offset); if (ch == '\n') { - *offset++; + *offset += 1; return true; } if (ch == '\r' && pem.size() > (*offset + 1) && pem.at(*offset + 1) == '\n') { diff --git a/src/network/ssl/qsslcipher.cpp b/src/network/ssl/qsslcipher.cpp index 81e7997..b44fde2 100644 --- a/src/network/ssl/qsslcipher.cpp +++ b/src/network/ssl/qsslcipher.cpp @@ -46,7 +46,7 @@ \since 4.3 \reentrant - \ingroup io + \ingroup network \ingroup ssl \inmodule QtNetwork diff --git a/src/network/ssl/qsslconfiguration.cpp b/src/network/ssl/qsslconfiguration.cpp index f207e99..87db324 100644 --- a/src/network/ssl/qsslconfiguration.cpp +++ b/src/network/ssl/qsslconfiguration.cpp @@ -66,7 +66,7 @@ template<> void QSharedDataPointer<QSslConfigurationPrivate>::detach() \reentrant \inmodule QtNetwork - \ingroup io + \ingroup network \ingroup ssl QSslConfiguration is used by Qt networking classes to relay diff --git a/src/network/ssl/qsslerror.cpp b/src/network/ssl/qsslerror.cpp index cc55887..d8c2c7a 100644 --- a/src/network/ssl/qsslerror.cpp +++ b/src/network/ssl/qsslerror.cpp @@ -46,7 +46,7 @@ \since 4.3 \reentrant - \ingroup io + \ingroup network \ingroup ssl \inmodule QtNetwork diff --git a/src/network/ssl/qsslkey.cpp b/src/network/ssl/qsslkey.cpp index ef493e9..474e5ee 100644 --- a/src/network/ssl/qsslkey.cpp +++ b/src/network/ssl/qsslkey.cpp @@ -46,7 +46,7 @@ \since 4.3 \reentrant - \ingroup io + \ingroup network \ingroup ssl \inmodule QtNetwork diff --git a/src/network/ssl/qsslsocket.cpp b/src/network/ssl/qsslsocket.cpp index 390b1fc..cdbcb86 100644 --- a/src/network/ssl/qsslsocket.cpp +++ b/src/network/ssl/qsslsocket.cpp @@ -49,7 +49,7 @@ \since 4.3 \reentrant - \ingroup io + \ingroup network \ingroup ssl \inmodule QtNetwork diff --git a/src/network/ssl/ssl.pri b/src/network/ssl/ssl.pri index d07f406..72ea80f 100644 --- a/src/network/ssl/ssl.pri +++ b/src/network/ssl/ssl.pri @@ -35,5 +35,5 @@ symbian { RESOURCES += network.qrc # Add optional SSL libs - LIBS += $$OPENSSL_LIBS + LIBS_PRIVATE += $$OPENSSL_LIBS } diff --git a/src/opengl/gl2paintengineex/qglengineshadersource_p.h b/src/opengl/gl2paintengineex/qglengineshadersource_p.h index b0b91ae..c80d6e1 100644 --- a/src/opengl/gl2paintengineex/qglengineshadersource_p.h +++ b/src/opengl/gl2paintengineex/qglengineshadersource_p.h @@ -73,8 +73,8 @@ static const char* const qglslMainVertexShader = "\ }"; static const char* const qglslMainWithTexCoordsVertexShader = "\ - attribute lowp vec2 textureCoordArray; \ - varying lowp vec2 textureCoords; \ + attribute mediump vec2 textureCoordArray; \ + varying mediump vec2 textureCoords; \ uniform highp float depth;\ void setPosition();\ void main(void) \ @@ -284,7 +284,7 @@ static const char* const qglslSolidBrushSrcFragmentShader = "\ }"; static const char* const qglslImageSrcFragmentShader = "\ - varying highp vec2 textureCoords; \ + varying mediump vec2 textureCoords; \ uniform sampler2D imageTexture; \ lowp vec4 srcPixel() { \ return texture2D(imageTexture, textureCoords); \ diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp index 4e8a97b..5906467 100644 --- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp +++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp @@ -75,6 +75,7 @@ #include <private/qfontengine_p.h> #include <private/qtextureglyphcache_p.h> #include <private/qpixmapdata_gl_p.h> +#include <private/qdatabuffer_p.h> #include "qglgradientcache_p.h" #include "qglengineshadermanager_p.h" @@ -175,7 +176,7 @@ void QGLTextureGlyphCache::createTextureData(int width, int height) m_height = height; QVarLengthArray<uchar> data(width * height); - for (int i = 0; i < width * height; ++i) + for (int i = 0; i < data.size(); ++i) data[i] = 0; if (m_type == QFontEngineGlyphCache::Raster_RGBMask) @@ -200,13 +201,18 @@ void QGLTextureGlyphCache::resizeTextureData(int width, int height) glBindFramebuffer(GL_FRAMEBUFFER_EXT, m_fbo); - GLuint colorBuffer; - glGenRenderbuffers(1, &colorBuffer); - glBindRenderbuffer(GL_RENDERBUFFER_EXT, colorBuffer); - glRenderbufferStorage(GL_RENDERBUFFER_EXT, GL_RGBA, oldWidth, oldHeight); - glFramebufferRenderbuffer(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, - GL_RENDERBUFFER_EXT, colorBuffer); - glBindRenderbuffer(GL_RENDERBUFFER_EXT, 0); + GLuint tmp_texture; + glGenTextures(1, &tmp_texture); + glBindTexture(GL_TEXTURE_2D, tmp_texture); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, oldWidth, oldHeight, 0, + GL_RGBA, GL_UNSIGNED_BYTE, NULL); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + glBindTexture(GL_TEXTURE_2D, 0); + glFramebufferTexture2D(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, + GL_TEXTURE_2D, tmp_texture, 0); glActiveTexture(GL_TEXTURE0 + QT_IMAGE_TEXTURE_UNIT); glBindTexture(GL_TEXTURE_2D, oldTexture); @@ -237,11 +243,24 @@ void QGLTextureGlyphCache::resizeTextureData(int width, int height) glDisableVertexAttribArray(QT_TEXTURE_COORDS_ATTR); glBindTexture(GL_TEXTURE_2D, m_texture); + +#ifdef QT_OPENGL_ES_2 + QDataBuffer<uchar> buffer(4*oldWidth*oldHeight); + glReadPixels(0, 0, oldWidth, oldHeight, GL_RGBA, GL_UNSIGNED_BYTE, buffer.data()); + + // do an in-place conversion from GL_RGBA to GL_ALPHA + for (int i=0; i<oldWidth*oldHeight; ++i) + buffer.data()[i] = buffer.at(4*i + 3); + + glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, oldWidth, oldHeight, + GL_ALPHA, GL_UNSIGNED_BYTE, buffer.data()); +#else glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, oldWidth, oldHeight); +#endif glFramebufferRenderbuffer(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_RENDERBUFFER_EXT, 0); - glDeleteRenderbuffers(1, &colorBuffer); + glDeleteTextures(1, &tmp_texture); glDeleteTextures(1, &oldTexture); glBindFramebuffer(GL_FRAMEBUFFER_EXT, ctx->d_ptr->current_fbo); diff --git a/src/opengl/opengl.pro b/src/opengl/opengl.pro index 868484e..4231721 100644 --- a/src/opengl/opengl.pro +++ b/src/opengl/opengl.pro @@ -73,16 +73,26 @@ x11 { } contains(QT_CONFIG, fontconfig) { + contains(QT_CONFIG, system-freetype) { + embedded:CONFIG += opentype + # pull in the proper freetype2 include directory include($$QT_SOURCE_TREE/config.tests/unix/freetype/freetype.pri) + LIBS_PRIVATE += -lfreetype + } else { + ### Note: how does this compile with a non-system freetype? + # This probably doesn't compile + } } else { DEFINES *= QT_NO_FREETYPE } + + LIBS_PRIVATE += $$QMAKE_LIBS_DYNLOAD } mac { OBJECTIVE_SOURCES += qgl_mac.mm \ qglpixelbuffer_mac.mm - LIBS += -framework AppKit + LIBS_PRIVATE += -framework AppKit -framework Carbon } win32:!wince*: { SOURCES += qgl_win.cpp \ @@ -131,5 +141,5 @@ wince*: { } } else { - QMAKE_LIBS += $$QMAKE_LIBS_OPENGL + LIBS_PRIVATE += $$QMAKE_LIBS_OPENGL } diff --git a/src/opengl/qgl.cpp b/src/opengl/qgl.cpp index 0e60b01..f2a14d6 100644 --- a/src/opengl/qgl.cpp +++ b/src/opengl/qgl.cpp @@ -147,7 +147,7 @@ QGLSignalProxy *QGLSignalProxy::instance() \brief The QGL namespace specifies miscellaneous identifiers used in the Qt OpenGL module. - \ingroup multimedia + \ingroup painting-3D */ /*! @@ -190,7 +190,7 @@ QGLSignalProxy *QGLSignalProxy::instance() \brief The QGLFormat class specifies the display format of an OpenGL rendering context. - \ingroup multimedia + \ingroup painting-3D A display format has several characteristics: \list @@ -1554,7 +1554,7 @@ Q_OPENGL_EXPORT QGLShareRegister* qgl_share_reg() \class QGLContext \brief The QGLContext class encapsulates an OpenGL rendering context. - \ingroup multimedia + \ingroup painting-3D An OpenGL rendering context is a complete set of OpenGL state variables. The rendering context's \l {QGL::FormatOption} {format} @@ -2774,8 +2774,8 @@ const QGLContext* QGLContext::currentContext() \class QGLWidget \brief The QGLWidget class is a widget for rendering OpenGL graphics. - \ingroup multimedia - \mainclass + \ingroup painting-3D + QGLWidget provides functionality for displaying OpenGL graphics integrated into a Qt application. It is very simple to use. You diff --git a/src/opengl/qglcolormap.cpp b/src/opengl/qglcolormap.cpp index 0d38ce7..cdbf1c8 100644 --- a/src/opengl/qglcolormap.cpp +++ b/src/opengl/qglcolormap.cpp @@ -45,7 +45,7 @@ QGLWidgets. \module OpenGL - \ingroup multimedia + \ingroup painting-3D \ingroup shared QGLColormap provides a platform independent way of specifying and diff --git a/src/opengl/qglframebufferobject.cpp b/src/opengl/qglframebufferobject.cpp index c446112..52363cb 100644 --- a/src/opengl/qglframebufferobject.cpp +++ b/src/opengl/qglframebufferobject.cpp @@ -90,7 +90,7 @@ public: \since 4.6 - \ingroup multimedia + \ingroup painting-3D A framebuffer object has several characteristics: \list @@ -275,7 +275,6 @@ public: GLenum target; QSize size; QGLFramebufferObjectFormat format; - int samples; uint valid : 1; uint bound : 1; QGLFramebufferObject::Attachment fbo_attachment; @@ -368,7 +367,6 @@ void QGLFramebufferObjectPrivate::init(const QSize &sz, QGLFramebufferObject::At valid = checkFramebufferStatus(); color_buffer = 0; - samples = 0; } else { GLint maxSamples; glGetIntegerv(GL_MAX_SAMPLES_EXT, &maxSamples); @@ -478,7 +476,7 @@ void QGLFramebufferObjectPrivate::init(const QSize &sz, QGLFramebufferObject::At \brief The QGLFramebufferObject class encapsulates an OpenGL framebuffer object. \since 4.2 - \ingroup multimedia + \ingroup painting-3D The QGLFramebufferObject class encapsulates an OpenGL framebuffer object, defined by the \c{GL_EXT_framebuffer_object} extension. In diff --git a/src/opengl/qglpixelbuffer.cpp b/src/opengl/qglpixelbuffer.cpp index 60cb8ba..2a2c005 100644 --- a/src/opengl/qglpixelbuffer.cpp +++ b/src/opengl/qglpixelbuffer.cpp @@ -44,7 +44,7 @@ \brief The QGLPixelBuffer class encapsulates an OpenGL pbuffer. \since 4.1 - \ingroup multimedia + \ingroup painting-3D Rendering into a pbuffer is normally done using full hardware acceleration. This can be significantly faster than rendering diff --git a/src/opengl/qglshaderprogram.cpp b/src/opengl/qglshaderprogram.cpp index e3627ff..f8bffd3 100644 --- a/src/opengl/qglshaderprogram.cpp +++ b/src/opengl/qglshaderprogram.cpp @@ -55,6 +55,7 @@ QT_BEGIN_NAMESPACE \class QGLShaderProgram \brief The QGLShaderProgram class allows OpenGL shader programs to be linked and used. \since 4.6 + \ingroup painting-3D \section1 Introduction @@ -181,6 +182,7 @@ QT_BEGIN_NAMESPACE \class QGLShader \brief The QGLShader class allows OpenGL shaders to be compiled. \since 4.6 + \ingroup painting-3D This class supports shaders written in the OpenGL Shading Language (GLSL) and in the OpenGL/ES Shading Language (GLSL/ES). diff --git a/src/openvg/openvg.pro b/src/openvg/openvg.pro index 240bf13..bf224b4 100644 --- a/src/openvg/openvg.pro +++ b/src/openvg/openvg.pro @@ -36,19 +36,19 @@ include(../qbase.pri) unix:QMAKE_PKGCONFIG_REQUIRES = QtCore QtGui !isEmpty(QMAKE_INCDIR_OPENVG): INCLUDEPATH += $$QMAKE_INCDIR_OPENVG -!isEmpty(QMAKE_LIBDIR_OPENVG): LIBS += -L$$QMAKE_LIBDIR_OPENVG -!isEmpty(QMAKE_LIBS_OPENVG): LIBS += $$QMAKE_LIBS_OPENVG +!isEmpty(QMAKE_LIBDIR_OPENVG): LIBS_PRIVATE += -L$$QMAKE_LIBDIR_OPENVG +!isEmpty(QMAKE_LIBS_OPENVG): LIBS_PRIVATE += $$QMAKE_LIBS_OPENVG contains(QT_CONFIG, egl) { !isEmpty(QMAKE_INCDIR_EGL): INCLUDEPATH += $$QMAKE_INCDIR_EGL - !isEmpty(QMAKE_LIBDIR_EGL): LIBS += -L$$QMAKE_LIBDIR_EGL - !isEmpty(QMAKE_LIBS_EGL): LIBS += $$QMAKE_LIBS_EGL + !isEmpty(QMAKE_LIBDIR_EGL): LIBS_PRIVATE += -L$$QMAKE_LIBDIR_EGL + !isEmpty(QMAKE_LIBS_EGL): LIBS_PRIVATE += $$QMAKE_LIBS_EGL } contains(QT_CONFIG, openvg_on_opengl) { !isEmpty(QMAKE_INCDIR_OPENGL): INCLUDEPATH += $$QMAKE_INCDIR_OPENGL - !isEmpty(QMAKE_LIBDIR_OPENGL): LIBS += -L$$QMAKE_LIBDIR_OPENGL - !isEmpty(QMAKE_LIBS_OPENGL): LIBS += $$QMAKE_LIBS_OPENGL + !isEmpty(QMAKE_LIBDIR_OPENGL): LIBS_PRIVATE += -L$$QMAKE_LIBDIR_OPENGL + !isEmpty(QMAKE_LIBS_OPENGL): LIBS_PRIVATE += $$QMAKE_LIBS_OPENGL } INCLUDEPATH += ../3rdparty/harfbuzz/src diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp index a1edbd6..774162c 100644 --- a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp +++ b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp @@ -64,13 +64,16 @@ public: QPixmapData *createPixmapData(QPixmapData::PixelType type) const; IDirectFB *dfb; - IDirectFBSurface *dfbSurface; DFBSurfaceFlipFlags flipFlags; + QDirectFBScreen::DirectFBFlags directFBFlags; + QImage::Format alphaPixmapFormat; + IDirectFBScreen *dfbScreen; +#ifdef QT_NO_DIRECTFB_WM + IDirectFBSurface *primarySurface; +#endif #ifndef QT_NO_DIRECTFB_LAYER IDirectFBDisplayLayer *dfbLayer; #endif - IDirectFBScreen *dfbScreen; - QSet<IDirectFBSurface*> allocatedSurfaces; #ifndef QT_NO_DIRECTFB_MOUSE @@ -79,26 +82,26 @@ public: #ifndef QT_NO_DIRECTFB_KEYBOARD QDirectFBKeyboardHandler *keyboard; #endif - QDirectFBScreen::DirectFBFlags directFBFlags; - QImage::Format alphaPixmapFormat; QColor backgroundColor; QDirectFBScreen *q; }; QDirectFBScreenPrivate::QDirectFBScreenPrivate(QDirectFBScreen *qptr) - : QWSGraphicsSystem(qptr), dfb(0), dfbSurface(0), flipFlags(DSFLIP_NONE) + : QWSGraphicsSystem(qptr), dfb(0), flipFlags(DSFLIP_NONE), + directFBFlags(QDirectFBScreen::NoFlags), alphaPixmapFormat(QImage::Format_Invalid), + dfbScreen(0) +#ifdef QT_NO_DIRECTFB_WM + , primarySurface(0) +#endif #ifndef QT_NO_DIRECTFB_LAYER , dfbLayer(0) #endif - , dfbScreen(0) #ifndef QT_NO_DIRECTFB_MOUSE , mouse(0) #endif #ifndef QT_NO_DIRECTFB_KEYBOARD , keyboard(0) #endif - , directFBFlags(QDirectFBScreen::NoFlags) - , alphaPixmapFormat(QImage::Format_Invalid) , q(qptr) { #ifndef QT_NO_QWS_SIGNALHANDLER @@ -119,8 +122,10 @@ QDirectFBScreenPrivate::~QDirectFBScreenPrivate() (*it)->Release(*it); } - if (dfbSurface) - dfbSurface->Release(dfbSurface); +#ifdef QT_NO_DIRECTFB_WM + if (primarySurface) + primarySurface->Release(primarySurface); +#endif #ifndef QT_NO_DIRECTFB_LAYER if (dfbLayer) @@ -366,10 +371,12 @@ IDirectFB *QDirectFBScreen::dfb() return d_ptr->dfb; } -IDirectFBSurface *QDirectFBScreen::dfbSurface() +#ifdef QT_NO_DIRECTFB_WM +IDirectFBSurface *QDirectFBScreen::primarySurface() { - return d_ptr->dfbSurface; + return d_ptr->primarySurface; } +#endif #ifndef QT_NO_DIRECTFB_LAYER IDirectFBDisplayLayer *QDirectFBScreen::dfbDisplayLayer() @@ -863,6 +870,36 @@ static inline bool setIntOption(const QStringList &arguments, const QString &var return false; } +static inline int depth(QImage::Format format) +{ + switch (format) { + case QImage::Format_Mono: + case QImage::Format_MonoLSB: + return 1; + case QImage::Format_Indexed8: + return 8; + case QImage::Format_RGB32: + case QImage::Format_ARGB32: + case QImage::Format_ARGB32_Premultiplied: + return 32; + case QImage::Format_ARGB8565_Premultiplied: + case QImage::Format_RGB666: + case QImage::Format_ARGB6666_Premultiplied: + case QImage::Format_ARGB8555_Premultiplied: + case QImage::Format_RGB888: + return 24; + case QImage::Format_RGB555: + case QImage::Format_RGB444: + case QImage::Format_RGB16: + case QImage::Format_ARGB4444_Premultiplied: + return 16; + case QImage::Format_Invalid: + case QImage::NImageFormats: + break; + } + return -1; +} + bool QDirectFBScreen::connect(const QString &displaySpec) { DFBResult result = DFB_OK; @@ -923,7 +960,9 @@ bool QDirectFBScreen::connect(const QString &displaySpec) DFBSurfaceDescription description; memset(&description, 0, sizeof(DFBSurfaceDescription)); + IDirectFBSurface *surface; +#ifdef QT_NO_DIRECTFB_WM description.flags = DSDESC_CAPS; if (::setIntOption(displayArgs, QLatin1String("width"), &description.width)) description.flags |= DSDESC_WIDTH; @@ -952,15 +991,22 @@ bool QDirectFBScreen::connect(const QString &displaySpec) } // We don't track the primary surface as it's released in disconnect - d_ptr->dfbSurface = createDFBSurface(description, DontTrackSurface); - if (!d_ptr->dfbSurface) { + d_ptr->primarySurface = createDFBSurface(description, DontTrackSurface); + if (!d_ptr->primarySurface) { DirectFBError("QDirectFBScreen: error creating primary surface", result); return false; } + surface = d_ptr->primarySurface; +#else + description.flags = DSDESC_WIDTH|DSDESC_HEIGHT; + description.width = description.height = 1; + surface = createDFBSurface(description, DontTrackSurface); +#endif // Work out what format we're going to use for surfaces with an alpha channel - d_ptr->alphaPixmapFormat = QDirectFBScreen::getImageFormat(d_ptr->dfbSurface); + d_ptr->alphaPixmapFormat = QDirectFBScreen::getImageFormat(surface); + setPixelFormat(d_ptr->alphaPixmapFormat); switch (d_ptr->alphaPixmapFormat) { case QImage::Format_RGB666: @@ -994,31 +1040,11 @@ bool QDirectFBScreen::connect(const QString &displaySpec) // works already break; } - d_ptr->dfbSurface->GetSize(d_ptr->dfbSurface, &w, &h); + QScreen::d = ::depth(pixelFormat()); data = 0; lstep = 0; size = 0; - dw = w; - dh = h; - - DFBSurfacePixelFormat format; - result = d_ptr->dfbSurface->GetPixelFormat(d_ptr->dfbSurface, &format); - if (result == DFB_OK) - QScreen::d = depth(format); - else - DirectFBError("QDirectFBScreen: error getting surface format", result); - - setPixelFormat(getImageFormat(d_ptr->dfbSurface)); - - physWidth = physHeight = -1; - ::setIntOption(displayArgs, QLatin1String("mmWidth"), &physWidth); - ::setIntOption(displayArgs, QLatin1String("mmHeight"), &physHeight); - const int dpi = 72; - if (physWidth < 0) - physWidth = qRound(dw * 25.4 / dpi); - if (physHeight < 0) - physHeight = qRound(dh * 25.4 / dpi); #ifndef QT_NO_DIRECTFB_LAYER result = d_ptr->dfb->GetDisplayLayer(d_ptr->dfb, DLID_PRIMARY, @@ -1037,12 +1063,35 @@ bool QDirectFBScreen::connect(const QString &displaySpec) "Unable to get screen!", result); return false; } + result = d_ptr->dfbScreen->GetSize(d_ptr->dfbScreen, &w, &h); + if (result != DFB_OK) { + DirectFBError("QDirectFBScreen::connect: " + "Unable to get screen size!", result); + return false; + } + + dw = w; + dh = h; + + Q_ASSERT(dw != 0 && dh != 0); + + physWidth = physHeight = -1; + ::setIntOption(displayArgs, QLatin1String("mmWidth"), &physWidth); + ::setIntOption(displayArgs, QLatin1String("mmHeight"), &physHeight); + const int dpi = 72; + if (physWidth < 0) + physWidth = qRound(dw * 25.4 / dpi); + if (physHeight < 0) + physHeight = qRound(dh * 25.4 / dpi); setGraphicsSystem(d_ptr); #if (Q_DIRECTFB_VERSION >= 0x000923) if (displayArgs.contains(QLatin1String("debug"), Qt::CaseInsensitive)) - printDirectFBInfo(d_ptr->dfb, d_ptr->dfbSurface); + printDirectFBInfo(d_ptr->dfb, surface); +#endif +#ifndef QT_NO_DIRECTFB_WM + surface->Release(surface); #endif QRegExp backgroundColorRegExp("bgcolor=?(.+)"); @@ -1058,8 +1107,10 @@ bool QDirectFBScreen::connect(const QString &displaySpec) void QDirectFBScreen::disconnect() { - d_ptr->dfbSurface->Release(d_ptr->dfbSurface); - d_ptr->dfbSurface = 0; +#ifdef QT_NO_DIRECTFB_WM + d_ptr->primarySurface->Release(d_ptr->primarySurface); + d_ptr->primarySurface = 0; +#endif foreach (IDirectFBSurface *surf, d_ptr->allocatedSurfaces) surf->Release(surf); @@ -1155,25 +1206,9 @@ QWSWindowSurface *QDirectFBScreen::createSurface(const QString &key) const // QT_NO_DIRECTFB_WM isn't set), exposeRegion will simply return. If // QT_NO_DIRECTFB_WM is set, exposeRegion will compose only non-directFB // window surfaces. Normal, directFB surfaces are handled by DirectFB. -static inline bool needExposeRegion() -{ -#ifdef QT_NO_DIRECTFB_WM - return true; -#endif -#ifdef QT_NO_DIRECTFB_LAYER -#ifndef QT_NO_QWS_CURSOR - return true; -#endif -#endif - return false; -} - void QDirectFBScreen::exposeRegion(QRegion r, int changing) { - if (!needExposeRegion()) { - return; - } - +#ifdef QT_NO_DIRECTFB_WM const QList<QWSWindow*> windows = QWSServer::instance()->clientWindows(); if (changing < 0 || changing >= windows.size()) return; @@ -1207,9 +1242,9 @@ void QDirectFBScreen::exposeRegion(QRegion r, int changing) const DFBRectangle rect = { source.x(), source.y(), source.width(), source.height() }; - d_ptr->dfbSurface->Blit(d_ptr->dfbSurface, surface, &rect, - windowGeometry.x() + source.x(), - windowGeometry.y() + source.y()); + d_ptr->primarySurface->Blit(d_ptr->primarySurface, surface, &rect, + windowGeometry.x() + source.x(), + windowGeometry.y() + source.y()); } else { const QVector<QRect> rects = insideWindow.rects(); QVarLengthArray<DFBRectangle, 16> dfbRectangles(n); @@ -1225,8 +1260,8 @@ void QDirectFBScreen::exposeRegion(QRegion r, int changing) dfbPoints[i].x = (windowGeometry.x() + source.x()); dfbPoints[i].y = (windowGeometry.y() + source.y()); } - d_ptr->dfbSurface->BatchBlit(d_ptr->dfbSurface, surface, dfbRectangles.constData(), - dfbPoints.constData(), n); + d_ptr->primarySurface->BatchBlit(d_ptr->primarySurface, surface, dfbRectangles.constData(), + dfbPoints.constData(), n); } } } @@ -1237,29 +1272,37 @@ void QDirectFBScreen::exposeRegion(QRegion r, int changing) if (cursor->isVisible() && !cursor->isAccelerated() && cursorRectangle.intersects(brect)) { const QImage image = cursor->image(); IDirectFBSurface *surface = createDFBSurface(image, QDirectFBScreen::DontTrackSurface); - d_ptr->dfbSurface->SetBlittingFlags(d_ptr->dfbSurface, DSBLIT_BLEND_ALPHACHANNEL); - d_ptr->dfbSurface->Blit(d_ptr->dfbSurface, surface, 0, cursorRectangle.x(), cursorRectangle.y()); + d_ptr->primarySurface->SetBlittingFlags(d_ptr->primarySurface, DSBLIT_BLEND_ALPHACHANNEL); + d_ptr->primarySurface->Blit(d_ptr->primarySurface, surface, 0, cursorRectangle.x(), cursorRectangle.y()); surface->Release(surface); #if (Q_DIRECTFB_VERSION >= 0x010000) - d_ptr->dfbSurface->ReleaseSource(d_ptr->dfbSurface); + d_ptr->primarySurface->ReleaseSource(d_ptr->primarySurface); #endif } } - flipSurface(d_ptr->dfbSurface, d_ptr->flipFlags, r, QPoint()); + flipSurface(d_ptr->primarySurface, d_ptr->flipFlags, r, QPoint()); +#else + Q_UNUSED(r); + Q_UNUSED(changing); +#endif } void QDirectFBScreen::solidFill(const QColor &color, const QRegion ®ion) { +#ifdef QT_DIRECTFB_WM + Q_UNUSED(color); + Q_UNUSED(region); +#else if (region.isEmpty()) return; - d_ptr->dfbSurface->SetColor(d_ptr->dfbSurface, + d_ptr->primarySurface->SetColor(d_ptr->primarySurface, color.red(), color.green(), color.blue(), color.alpha()); const int n = region.numRects(); if (n > 1) { const QRect r = region.boundingRect(); - d_ptr->dfbSurface->FillRectangle(d_ptr->dfbSurface, r.x(), r.y(), r.width(), r.height()); + d_ptr->primarySurface->FillRectangle(d_ptr->primarySurface, r.x(), r.y(), r.width(), r.height()); } else { const QVector<QRect> rects = region.rects(); QVarLengthArray<DFBRectangle, 32> rectArray(n); @@ -1270,8 +1313,9 @@ void QDirectFBScreen::solidFill(const QColor &color, const QRegion ®ion) rectArray[i].w = r.width(); rectArray[i].h = r.height(); } - d_ptr->dfbSurface->FillRectangles(d_ptr->dfbSurface, rectArray.constData(), n); + d_ptr->primarySurface->FillRectangles(d_ptr->primarySurface, rectArray.constData(), n); } +#endif } void QDirectFBScreen::erase(const QRegion ®ion) diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.h b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.h index 78765ac..3f9248e 100644 --- a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.h +++ b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.h @@ -50,6 +50,31 @@ QT_BEGIN_HEADER QT_MODULE(Gui) +#if !defined QT_NO_DIRECTFB_LAYER && !defined QT_DIRECTFB_LAYER +#define QT_DIRECTFB_LAYER +#endif +#if !defined QT_NO_DIRECTFB_WM && !defined QT_DIRECTFB_WM +#define QT_DIRECTFB_WM +#endif +#if !defined QT_DIRECTFB_IMAGECACHE && !defined QT_NO_DIRECTFB_IMAGECACHE +#define QT_NO_DIRECTFB_IMAGECACHE +#endif +#if !defined QT_NO_DIRECTFB_PALETTE && !defined QT_DIRECTFB_PALETTE +#define QT_DIRECTFB_PALETTE +#endif +#if !defined QT_NO_DIRECTFB_PREALLOCATED && !defined QT_DIRECTFB_PREALLOCATED +#define QT_DIRECTFB_PREALLOCATED +#endif +#if !defined QT_NO_DIRECTFB_MOUSE && !defined QT_DIRECTFB_MOUSE +#define QT_DIRECTFB_MOUSE +#endif +#if !defined QT_NO_DIRECTFB_KEYBOARD && !defined QT_DIRECTFB_KEYBOARD +#define QT_DIRECTFB_KEYBOARD +#endif +#if !defined QT_NO_DIRECTFB_OPAQUE_DETECTION && !defined QT_DIRECTFB_OPAQUE_DETECTION +#define QT_DIRECTFB_OPAQUE_DETECTION +#endif + #define Q_DIRECTFB_VERSION ((DIRECTFB_MAJOR_VERSION << 16) | (DIRECTFB_MINOR_VERION << 8) | DIRECTFB_MICRO_VERSION) #define DIRECTFB_DECLARE_OPERATORS_FOR_FLAGS(F) \ @@ -108,7 +133,9 @@ public: } IDirectFB *dfb(); - IDirectFBSurface *dfbSurface(); +#ifdef QT_NO_DIRECTFB_WM + IDirectFBSurface *primarySurface(); +#endif #ifndef QT_NO_DIRECTFB_LAYER IDirectFBDisplayLayer *dfbDisplayLayer(); #endif diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp index d837509..584f334 100644 --- a/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp +++ b/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp @@ -55,14 +55,11 @@ QDirectFBWindowSurface::QDirectFBWindowSurface(DFBSurfaceFlipFlags flip, QDirect #ifndef QT_NO_DIRECTFB_WM , dfbWindow(0) #endif - , engineHeight(-1) , flipFlags(flip) , boundingRectFlip(scr->directFBFlags() & QDirectFBScreen::BoundingRectFlip) { #ifdef QT_NO_DIRECTFB_WM mode = Offscreen; -#else - mode = Window; #endif setSurfaceFlags(Opaque | Buffered); #ifdef QT_DIRECTFB_TIMING @@ -76,21 +73,21 @@ QDirectFBWindowSurface::QDirectFBWindowSurface(DFBSurfaceFlipFlags flip, QDirect #ifndef QT_NO_DIRECTFB_WM , dfbWindow(0) #endif - , engineHeight(-1) , flipFlags(flip) , boundingRectFlip(scr->directFBFlags() & QDirectFBScreen::BoundingRectFlip) { +#ifdef QT_NO_DIRECTFB_WM if (widget && widget->testAttribute(Qt::WA_PaintOnScreen)) { setSurfaceFlags(Opaque | RegionReserved); mode = Primary; } else { -#ifdef QT_NO_DIRECTFB_WM mode = Offscreen; -#else - mode = Window; -#endif setSurfaceFlags(Opaque | Buffered); } +#else + setSurfaceFlags(Opaque | Buffered); +#endif + #ifdef QT_DIRECTFB_TIMING frames = 0; timer.start(); @@ -172,8 +169,10 @@ static DFBResult setGeometry(IDirectFBWindow *dfbWindow, const QRect &old, const void QDirectFBWindowSurface::setGeometry(const QRect &rect) { - IDirectFBSurface *primarySurface = screen->dfbSurface(); +#ifdef QT_NO_DIRECTFB_WM + IDirectFBSurface *primarySurface = screen->primarySurface(); Q_ASSERT(primarySurface); +#endif if (rect.isNull()) { #ifndef QT_NO_DIRECTFB_WM if (dfbWindow) { @@ -182,9 +181,10 @@ void QDirectFBWindowSurface::setGeometry(const QRect &rect) } #endif if (dfbSurface) { - if (dfbSurface != primarySurface) { +#ifdef QT_NO_DIRECTFB_WM + if (dfbSurface != primarySurface) +#endif dfbSurface->Release(dfbSurface); - } dfbSurface = 0; } } else if (rect != geometry()) { @@ -192,8 +192,12 @@ void QDirectFBWindowSurface::setGeometry(const QRect &rect) DFBResult result = DFB_OK; // If we're in a resize, the surface shouldn't be locked Q_ASSERT((lockedImage == 0) || (rect.size() == geometry().size())); - switch (mode) { - case Primary: +#ifdef QT_DIRECTFB_WM + if (!dfbWindow) + createWindow(); + ::setGeometry(dfbWindow, oldRect, rect); +#else + if (mode == Primary) { if (dfbSurface && dfbSurface != primarySurface) dfbSurface->Release(dfbSurface); if (rect == screen->region().boundingRect()) { @@ -203,15 +207,7 @@ void QDirectFBWindowSurface::setGeometry(const QRect &rect) rect.width(), rect.height() }; result = primarySurface->GetSubSurface(primarySurface, &r, &dfbSurface); } - break; - case Window: -#ifndef QT_NO_DIRECTFB_WM - if (!dfbWindow) - createWindow(); - ::setGeometry(dfbWindow, oldRect, rect); -#endif - break; - case Offscreen: { + } else { if (!dfbSurface || oldRect.size() != rect.size()) { if (dfbSurface) dfbSurface->Release(dfbSurface); @@ -220,16 +216,16 @@ void QDirectFBWindowSurface::setGeometry(const QRect &rect) const QRegion region = QRegion(oldRect.isEmpty() ? screen->region() : QRegion(oldRect)).subtracted(rect); screen->erase(region); screen->flipSurface(primarySurface, flipFlags, region, QPoint()); - break; } + } +#endif + if (size() != geometry().size()) { + delete engine; + engine = 0; } if (result != DFB_OK) DirectFBErrorFatal("QDirectFBWindowSurface::setGeometry()", result); } - if (engine) { - delete engine; - engine = 0; - } QWSWindowSurface::setGeometry(rect); } @@ -349,7 +345,8 @@ void QDirectFBWindowSurface::flush(QWidget *, const QRegion ®ion, } const QRect windowGeometry = QDirectFBWindowSurface::geometry(); - IDirectFBSurface *primarySurface = screen->dfbSurface(); +#ifdef QT_NO_DIRECTFB_WM + IDirectFBSurface *primarySurface = screen->primarySurface(); if (mode == Offscreen) { primarySurface->SetBlittingFlags(primarySurface, DSBLIT_NOFX); const QRect windowRect(0, 0, windowGeometry.width(), windowGeometry.height()); @@ -401,9 +398,9 @@ void QDirectFBWindowSurface::flush(QWidget *, const QRegion ®ion, } if (mode == Offscreen) { screen->flipSurface(primarySurface, flipFlags, region, offset + windowGeometry.topLeft()); - } else { - screen->flipSurface(dfbSurface, flipFlags, region, offset); - } + } else +#endif + screen->flipSurface(dfbSurface, flipFlags, region, offset); #ifdef QT_DIRECTFB_TIMING enum { Secs = 3 }; @@ -419,12 +416,8 @@ void QDirectFBWindowSurface::flush(QWidget *, const QRegion ®ion, void QDirectFBWindowSurface::beginPaint(const QRegion &) { - const int h = height(); - if (h > engineHeight) { - engineHeight = h; - delete engine; + if (!engine) engine = new QDirectFBPaintEngine(this); - } } void QDirectFBWindowSurface::endPaint(const QRegion &) diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.h b/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.h index 0d6ebc0..64b1920 100644 --- a/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.h +++ b/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.h @@ -91,13 +91,13 @@ private: void createWindow(); IDirectFBWindow *dfbWindow; #endif - int engineHeight; +#ifdef QT_NO_DIRECTFB_WM enum Mode { Primary, - Offscreen, - Window + Offscreen } mode; +#endif QList<QImage*> bufferImages; DFBSurfaceFlipFlags flipFlags; diff --git a/src/plugins/imageformats/tiff/qtiffhandler.cpp b/src/plugins/imageformats/tiff/qtiffhandler.cpp index ec8a483..59edaf4 100644 --- a/src/plugins/imageformats/tiff/qtiffhandler.cpp +++ b/src/plugins/imageformats/tiff/qtiffhandler.cpp @@ -98,6 +98,43 @@ void qtiffUnmapProc(thandle_t /*fd*/, tdata_t /*base*/, toff_t /*size*/) { } +// for 32 bits images +inline void rotate_right_mirror_horizontal(QImage *const image)// rotate right->mirrored horizontal +{ + const int height = image->height(); + const int width = image->width(); + QImage generated(/* width = */ height, /* height = */ width, image->format()); + const uint32 *originalPixel = reinterpret_cast<const uint32*>(image->bits()); + uint32 *const generatedPixels = reinterpret_cast<uint32*>(generated.bits()); + for (int row=0; row < height; ++row) { + for (int col=0; col < width; ++col) { + int idx = col * height + row; + generatedPixels[idx] = *originalPixel; + ++originalPixel; + } + } + *image = generated; +} + +inline void rotate_right_mirror_vertical(QImage *const image) // rotate right->mirrored vertical +{ + const int height = image->height(); + const int width = image->width(); + QImage generated(/* width = */ height, /* height = */ width, image->format()); + const int lastCol = width - 1; + const int lastRow = height - 1; + const uint32 *pixel = reinterpret_cast<const uint32*>(image->bits()); + uint32 *const generatedBits = reinterpret_cast<uint32*>(generated.bits()); + for (int row=0; row < height; ++row) { + for (int col=0; col < width; ++col) { + int idx = (lastCol - col) * height + (lastRow - row); + generatedBits[idx] = *pixel; + ++pixel; + } + } + *image = generated; +} + QTiffHandler::QTiffHandler() : QImageIOHandler() { compression = NoCompression; @@ -223,7 +260,8 @@ bool QTiffHandler::read(QImage *image) if (image->size() != QSize(width, height) || image->format() != QImage::Format_ARGB32) *image = QImage(width, height, QImage::Format_ARGB32); if (!image->isNull()) { - if (TIFFReadRGBAImageOriented(tiff, width, height, reinterpret_cast<uint32 *>(image->bits()), ORIENTATION_TOPLEFT, 0)) { + const int stopOnError = 1; + if (TIFFReadRGBAImageOriented(tiff, width, height, reinterpret_cast<uint32 *>(image->bits()), ORIENTATION_TOPLEFT, stopOnError)) { for (uint32 y=0; y<height; ++y) convert32BitOrder(image->scanLine(y), width); } else { @@ -262,6 +300,73 @@ bool QTiffHandler::read(QImage *image) } } + // rotate the image if the orientation is defined in the file + uint16 orientationTag; + if (TIFFGetField(tiff, TIFFTAG_ORIENTATION, &orientationTag)) { + if (image->format() == QImage::Format_ARGB32) { + // TIFFReadRGBAImageOriented() flip the image but does not rotate them + switch (orientationTag) { + case 5: + rotate_right_mirror_horizontal(image); + break; + case 6: + rotate_right_mirror_vertical(image); + break; + case 7: + rotate_right_mirror_horizontal(image); + break; + case 8: + rotate_right_mirror_vertical(image); + break; + } + } else { + switch (orientationTag) { + case 1: // default orientation + break; + case 2: // mirror horizontal + *image = image->mirrored(true, false); + break; + case 3: // mirror both + *image = image->mirrored(true, true); + break; + case 4: // mirror vertical + *image = image->mirrored(false, true); + break; + case 5: // rotate right mirror horizontal + { + QMatrix transformation; + transformation.rotate(90); + *image = image->transformed(transformation); + *image = image->mirrored(true, false); + break; + } + case 6: // rotate right + { + QMatrix transformation; + transformation.rotate(90); + *image = image->transformed(transformation); + break; + } + case 7: // rotate right, mirror vertical + { + QMatrix transformation; + transformation.rotate(90); + *image = image->transformed(transformation); + *image = image->mirrored(false, true); + break; + } + case 8: // rotate left + { + QMatrix transformation; + transformation.rotate(270); + *image = image->transformed(transformation); + break; + } + } + } + } + + TIFFClose(tiff); return true; } diff --git a/src/plugins/phonon/qt7/qt7.pro b/src/plugins/phonon/qt7/qt7.pro index 665baee..53407db 100644 --- a/src/plugins/phonon/qt7/qt7.pro +++ b/src/plugins/phonon/qt7/qt7.pro @@ -12,7 +12,7 @@ contains(QMAKE_MAC_XARCH, no) { LIBS += -Xarch_i386 -framework QuickTime -Xarch_ppc -framework QuickTime } -LIBS += -framework AudioUnit \ +LIBS += -framework AppKit -framework AudioUnit \ -framework AudioToolbox -framework CoreAudio \ -framework QuartzCore -framework QTKit diff --git a/src/qt3support/network/network.pri b/src/qt3support/network/network.pri index 31ea682..086f56a 100644 --- a/src/qt3support/network/network.pri +++ b/src/qt3support/network/network.pri @@ -26,5 +26,5 @@ SOURCES += network/q3dns.cpp \ win32:SOURCES += network/q3socketdevice_win.cpp unix:SOURCES += network/q3socketdevice_unix.cpp -mac:LIBS += -lresolv +mac:LIBS_PRIVATE += -lresolv diff --git a/src/qt3support/qt3support.pro b/src/qt3support/qt3support.pro index 23a4696..a30117c 100644 --- a/src/qt3support/qt3support.pro +++ b/src/qt3support/qt3support.pro @@ -25,7 +25,7 @@ unix { QMAKE_PKGCONFIG_CFLAGS += -DQT3_SUPPORT QMAKE_PKGCONFIG_REQUIRES = QtCore QtGui QtNetwork QtSql } -mac:LIBS += -framework Carbon +mac:LIBS_PRIVATE += -framework Carbon QMAKE_LIBS += $$QMAKE_LIBS_COMPAT $$QMAKE_LIBS_NETWORK DEFINES -= QT3_SUPPORT_WARNINGS diff --git a/src/qt3support/sql/q3sqlfieldinfo.qdoc b/src/qt3support/sql/q3sqlfieldinfo.qdoc new file mode 100644 index 0000000..6f6f359 --- /dev/null +++ b/src/qt3support/sql/q3sqlfieldinfo.qdoc @@ -0,0 +1,234 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \class Q3SqlFieldInfo + \brief The Q3SqlFieldInfo class stores meta data associated with a SQL field. + + \compat + + Q3SqlFieldInfo objects only store meta data; field values are + stored in QSqlField objects. + + All values must be set in the constructor, and may be retrieved + using isRequired(), type(), length(), precision(), defaultValue(), + name(), isGenerated() and typeID(). + + \sa Q3SqlRecordInfo +*/ + +/*! + \fn Q3SqlFieldInfo::Q3SqlFieldInfo(const QString& name, + QVariant::Type typ, + int required, + int len, + int prec, + const QVariant& defValue, + int typeID, + bool generated, + bool trim, + bool calculated) + + Constructs a Q3SqlFieldInfo with the following parameters: + \table + \row \i \a name \i the name of the field. + \row \i \a typ \i the field's type in a QVariant. + \row \i \a required \i greater than 0 if the field is required, 0 + if its value can be NULL and less than 0 if it cannot be + determined whether the field is required or not. + \row \i \a len \i the length of the field. Note that for + non-character types some databases return either the length in + bytes or the number of digits. -1 signifies that the length cannot + be determined. + \row \i \a prec \i the precision of the field, or -1 if the field + has no precision or it cannot be determined. + \row \i \a defValue \i the default value that is inserted into + the table if none is specified by the user. QVariant() if there is + no default value or it cannot be determined. + \row \i \a typeID \i the internal typeID of the database system + (only useful for low-level programming). 0 if unknown. + \row \i \a generated \i TRUE indicates that this field should be + included in auto-generated SQL statments, e.g. in Q3SqlCursor. + \row \i \a trim \i TRUE indicates that widgets should remove + trailing whitespace from character fields. This does not affect + the field value but only its representation inside widgets. + \row \i \a calculated \i TRUE indicates that the value of this + field is calculated. The value of calculated fields can by + modified by subclassing Q3SqlCursor and overriding + Q3SqlCursor::calculateField(). + \endtable +*/ + +/*! + \fn Q3SqlFieldInfo::~Q3SqlFieldInfo() + + Destroys the object and frees any allocated resources. +*/ + +/*! + \fn Q3SqlFieldInfo::Q3SqlFieldInfo(const QSqlField & other) + + Creates a Q3SqlFieldInfo object with the type and the name of the + QSqlField \a other. +*/ + +/*! + \fn bool Q3SqlFieldInfo::operator==(const Q3SqlFieldInfo& other) const + + Assigns \a other to this field info and returns a reference to it. +*/ + +/*! + \fn QSqlField Q3SqlFieldInfo::toField() const + + Returns an empty QSqlField based on the information in this + Q3SqlFieldInfo. +*/ + +/*! + \fn int Q3SqlFieldInfo::isRequired() const + + Returns a value greater than 0 if the field is required (NULL + values are not allowed), 0 if it isn't required (NULL values are + allowed) or less than 0 if it cannot be determined whether the + field is required or not. +*/ + +/*! + \fn QVariant::Type Q3SqlFieldInfo::type() const + + Returns the field's type or QVariant::Invalid if the type is + unknown. +*/ + +/*! + \fn int Q3SqlFieldInfo::length() const + + Returns the field's length. For fields storing text the return + value is the maximum number of characters the field can hold. For + non-character fields some database systems return the number of + bytes needed or the number of digits allowed. If the length cannot + be determined -1 is returned. +*/ + +/*! + \fn int Q3SqlFieldInfo::precision() const + + Returns the field's precision or -1 if the field has no precision + or it cannot be determined. +*/ + +/*! + \fn QVariant Q3SqlFieldInfo::defaultValue() const + + Returns the field's default value or an empty QVariant if the + field has no default value or the value couldn't be determined. + The default value is the value inserted in the database when it + is not explicitly specified by the user. +*/ + +/*! + \fn QString Q3SqlFieldInfo::name() const + + Returns the name of the field in the SQL table. +*/ + +/*! + \fn int Q3SqlFieldInfo::typeID() const + + Returns the internal type identifier as returned from the database + system. The return value is 0 if the type is unknown. +*/ + +/*! + \fn bool Q3SqlFieldInfo::isGenerated() const + + Returns TRUE if the field should be included in auto-generated + SQL statments, e.g. in Q3SqlCursor; otherwise returns FALSE. + + \sa setGenerated() +*/ + +/*! + \fn bool Q3SqlFieldInfo::isTrim() const + + Returns TRUE if trailing whitespace should be removed from + character fields; otherwise returns FALSE. + + \sa setTrim() +*/ + +/*! + \fn bool Q3SqlFieldInfo::isCalculated() const + + Returns TRUE if the field is calculated; otherwise returns FALSE. + + \sa setCalculated() +*/ + +/*! + \fn void Q3SqlFieldInfo::setTrim(bool trim) + + If \a trim is TRUE widgets should remove trailing whitespace from + character fields. This does not affect the field value but only + its representation inside widgets. + + \sa isTrim() +*/ + +/*! + \fn void Q3SqlFieldInfo::setGenerated(bool generated) + + \a generated set to FALSE indicates that this field should not appear + in auto-generated SQL statements (for example in Q3SqlCursor). + + \sa isGenerated() +*/ + +/*! + \fn void Q3SqlFieldInfo::setCalculated(bool calculated) + + \a calculated set to TRUE indicates that this field is a calculated + field. The value of calculated fields can by modified by subclassing + Q3SqlCursor and overriding Q3SqlCursor::calculateField(). + + \sa isCalculated() +*/ diff --git a/src/qt3support/sql/q3sqlrecordinfo.qdoc b/src/qt3support/sql/q3sqlrecordinfo.qdoc new file mode 100644 index 0000000..ce60f6d --- /dev/null +++ b/src/qt3support/sql/q3sqlrecordinfo.qdoc @@ -0,0 +1,89 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \class Q3SqlRecordInfo + \brief The Q3SqlRecordInfo class encapsulates a set of database field meta data. + + \compat + + This class is a list that holds a set of database field meta + data. Use contains() to see if a given field name exists in the + record, and use find() to get a QSqlFieldInfo record for a named + field. + + \sa Q3SqlFieldInfo +*/ + +/*! + \fn Q3SqlRecordInfo::Q3SqlRecordInfo() + + Constructs an empty record info object. +*/ + +/*! + \fn Q3SqlRecordInfo::Q3SqlRecordInfo(const Q3SqlFieldInfoList& other) + \fn Q3SqlRecordInfo::Q3SqlRecordInfo(const QSqlRecord& other) + + Constructs a copy of \a other. +*/ + +/*! + \fn size_type Q3SqlRecordInfo::contains(const QString& fieldName) const + + Returns the number of times a field called \a fieldName occurs in + the record. Returns 0 if no field by that name could be found. +*/ + +/*! + \fn Q3SqlFieldInfo Q3SqlRecordInfo::find(const QString& fieldName) const + + Returns a QSqlFieldInfo object for the first field in the record + which has the field name \a fieldName. If no matching field is + found then an empty QSqlFieldInfo object is returned. +*/ + +/*! + \fn QSqlRecord Q3SqlRecordInfo::toRecord() const + + Returns an empty QSqlRecord based on the field information + in this Q3SqlRecordInfo. +*/ diff --git a/src/qt3support/tools/q3asciicache.qdoc b/src/qt3support/tools/q3asciicache.qdoc new file mode 100644 index 0000000..b86113f --- /dev/null +++ b/src/qt3support/tools/q3asciicache.qdoc @@ -0,0 +1,465 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \class Q3AsciiCache + \brief The Q3AsciiCache class is a template class that provides a cache based on char* keys. + \compat + + Q3AsciiCache is implemented as a template class. Define a template + instance Q3AsciiCache\<X\> to create a cache that operates on + pointers to X (X*). + + A cache is a least recently used (LRU) list of cache items. The + cache items are accessed via \c char* keys. For Unicode keys use + the Q3Cache template instead, which uses QString keys. A Q3Cache + has the same performace as a Q3AsciiCache. + + Each cache item has a cost. The sum of item costs, totalCost(), + will not exceed the maximum cache cost, maxCost(). If inserting a + new item would cause the total cost to exceed the maximum cost, + the least recently used items in the cache are removed. + + Apart from insert(), by far the most important function is find() + (which also exists as operator[]()). This function looks up an + item, returns it, and by default marks it as being the most + recently used item. + + There are also methods to remove() or take() an object from the + cache. Calling \link Q3PtrCollection::setAutoDelete() + setAutoDelete(TRUE)\endlink tells the cache to delete items that + are removed. The default is to not delete items when then are + removed (i.e., remove() and take() are equivalent). + + When inserting an item into the cache, only the pointer is copied, + not the item itself. This is called a shallow copy. It is possible + to make the cache copy all of the item's data (known as a deep + copy) when an item is inserted. insert() calls the virtual + function Q3PtrCollection::newItem() for the item to be inserted. + Inherit a cache and reimplement newItem() if you want deep copies. + + When removing a cache item the virtual function + Q3PtrCollection::deleteItem() is called. Its default implementation + in Q3AsciiCache is to delete the item if \link + Q3PtrCollection::setAutoDelete() auto-deletion\endlink is enabled. + + There is a Q3AsciiCacheIterator which may be used to traverse the + items in the cache in arbitrary order. + + \sa Q3AsciiCacheIterator, Q3Cache, Q3IntCache +*/ + +/*! + \fn Q3AsciiCache::Q3AsciiCache( const Q3AsciiCache<type> &c ) + + \internal + + Do not use. A Q3AsciiCache cannot be copied. Calls qFatal() in debug version. +*/ + + +/*! + \fn Q3AsciiCache::Q3AsciiCache( int maxCost, int size, bool caseSensitive, bool copyKeys ) + + Constructs a cache whose contents will never have a total cost + greater than \a maxCost and which is expected to contain less than + \a size items. + + \a size is actually the size of an internal hash array; it's + usually best to make it prime and at least 50% bigger than the + largest expected number of items in the cache. + + Each inserted item has an associated cost. When inserting a new + item, if the total cost of all items in the cache will exceed \a + maxCost, the cache will start throwing out the older (least + recently used) items until there is enough room for the new item + to be inserted. + + If \a caseSensitive is TRUE (the default), the cache keys are case + sensitive; if it is FALSE, they are case-insensitive. + Case-insensitive comparison only affects the 26 letters in + US-ASCII. If \a copyKeys is TRUE (the default), Q3AsciiCache makes + a copy of the cache keys, otherwise it copies just the const char + * pointer - slightly faster if you can guarantee that the keys + will never change, but very risky. +*/ + +/*! + \fn Q3AsciiCache::~Q3AsciiCache() + + Removes all items from the cache and destroys it. + All iterators that access this cache will be reset. +*/ + +/*! + \fn Q3AsciiCache<type>& Q3AsciiCache::operator=( const Q3AsciiCache<type> &c ) + + \internal + + Do not use. A Q3AsciiCache cannot be copied. Calls qFatal() in debug version. +*/ + +/*! + \fn int Q3AsciiCache::maxCost() const + + Returns the maximum allowed total cost of the cache. + + \sa setMaxCost() totalCost() +*/ + +/*! + \fn int Q3AsciiCache::totalCost() const + + Returns the total cost of the items in the cache. This is an + integer in the range 0 to maxCost(). + + \sa setMaxCost() +*/ + +/*! + \fn void Q3AsciiCache::setMaxCost( int m ) + + Sets the maximum allowed total cost of the cache to \a m. If the + current total cost is greater than \a m, some items are removed + immediately. + + \sa maxCost() totalCost() +*/ + +/*! + \fn uint Q3AsciiCache::count() const + + Returns the number of items in the cache. + + \sa totalCost() size() +*/ + +/*! + \fn uint Q3AsciiCache::size() const + + Returns the size of the hash array used to implement the cache. + This should be a bit bigger than count() is likely to be. +*/ + +/*! + \fn bool Q3AsciiCache::isEmpty() const + + Returns TRUE if the cache is empty; otherwise returns FALSE. +*/ + +/*! + \fn bool Q3AsciiCache::insert( const char *k, const type *d, int c, int p ) + + Inserts the item \a d into the cache using key \a k, and with an + associated cost of \a c. Returns TRUE if the item is successfully + inserted. Returns FALSE if the item is not inserted, for example, + if the cost of the item exceeds maxCost(). + + The cache's size is limited, and if the total cost is too high, + Q3AsciiCache will remove old, least recently used items until there + is room for this new item. + + Items with duplicate keys can be inserted. + + The parameter \a p is internal and should be left at the default + value (0). + + \warning If this function returns FALSE, you must delete \a d + yourself. Additionally, be very careful about using \a d after + calling this function, because any other insertions into the + cache, from anywhere in the application or within Qt itself, could + cause the object to be discarded from the cache and the pointer to + become invalid. +*/ + +/*! + \fn bool Q3AsciiCache::remove( const char *k ) + + Removes the item with key \a k and returns TRUE if the item was + present in the cache; otherwise returns FALSE. + + The item is deleted if auto-deletion has been enabled, i.e., if + you have called \link Q3PtrCollection::setAutoDelete() + setAutoDelete(TRUE)\endlink. + + If there are two or more items with equal keys, the one that was + inserted last is removed. + + All iterators that refer to the removed item are set to point to + the next item in the cache's traversal order. + + \sa take(), clear() +*/ + +/*! + \fn type *Q3AsciiCache::take( const char *k ) + + Takes the item associated with \a k out of the cache without + deleting it and returns a pointer to the item taken out, or 0 + if the key does not exist in the cache. + + If there are two or more items with equal keys, the one that was + inserted last is taken. + + All iterators that refer to the taken item are set to point to the + next item in the cache's traversal order. + + \sa remove(), clear() +*/ + +/*! + \fn void Q3AsciiCache::clear() + + Removes all items from the cache, and deletes them if \link + Q3PtrCollection::setAutoDelete() auto-deletion\endlink has been + enabled. + + All cache iterators that operate on this cache are reset. + + \sa remove() take() +*/ + +/*! + \fn type *Q3AsciiCache::find( const char *k, bool ref ) const + + Returns the item with key \a k, or 0 if the key does not exist + in the cache. If \a ref is TRUE (the default), the item is moved + to the front of the least recently used list. + + If there are two or more items with equal keys, the one that was + inserted last is returned. +*/ + +/*! + \fn type *Q3AsciiCache::operator[]( const char *k ) const + + Returns the item with key \a k, or 0 if \a k does not exist in + the cache, and moves the item to the front of the least recently + used list. + + If there are two or more items with equal keys, the one that was + inserted last is returned. + + This is the same as find( k, TRUE ). + + \sa find() +*/ + +/*! + \fn void Q3AsciiCache::statistics() const + + A debug-only utility function. Prints out cache usage, hit/miss, + and distribution information using qDebug(). This function does + nothing in the release library. +*/ + +/*! + \class Q3AsciiCacheIterator + \brief The Q3AsciiCacheIterator class provides an iterator for Q3AsciiCache collections. + \compat + + Note that the traversal order is arbitrary; you are not guaranteed + any particular order. If new objects are inserted into the cache + while the iterator is active, the iterator may or may not see + them. + + Multiple iterators are completely independent, even when they + operate on the same Q3AsciiCache. Q3AsciiCache updates all iterators + that refer an item when that item is removed. + + Q3AsciiCacheIterator provides an operator++() and an operator+=() + to traverse the cache; current() and currentKey() to access the + current cache item and its key. It also provides atFirst() and + atLast(), which return TRUE if the iterator points to the first or + last item in the cache respectively. The isEmpty() function + returns TRUE if the cache is empty; and count() returns the number + of items in the cache. + + Note that atFirst() and atLast() refer to the iterator's arbitrary + ordering, not to the cache's internal least recently used list. + + \sa Q3AsciiCache +*/ + +/*! + \fn Q3AsciiCacheIterator::Q3AsciiCacheIterator( const Q3AsciiCache<type> &cache ) + + Constructs an iterator for \a cache. The current iterator item is + set to point to the first item in the \a cache. +*/ + +/*! + \fn Q3AsciiCacheIterator::Q3AsciiCacheIterator (const Q3AsciiCacheIterator<type> & ci) + + Constructs an iterator for the same cache as \a ci. The new + iterator starts at the same item as ci.current() but moves + independently from there on. +*/ + +/*! + \fn Q3AsciiCacheIterator<type>& Q3AsciiCacheIterator::operator=( const Q3AsciiCacheIterator<type> &ci ) + + Makes this an iterator for the same cache as \a ci. The new + iterator starts at the same item as ci.current(), but moves + independently thereafter. +*/ + +/*! + \fn uint Q3AsciiCacheIterator::count() const + + Returns the number of items in the cache over which this iterator + operates. + + \sa isEmpty() +*/ + +/*! + \fn bool Q3AsciiCacheIterator::isEmpty() const + + Returns TRUE if the cache is empty, i.e. count() == 0; otherwise + returns FALSE. + + \sa count() +*/ + +/*! + \fn bool Q3AsciiCacheIterator::atFirst() const + + Returns TRUE if the iterator points to the first item in the + cache; otherwise returns FALSE. Note that this refers to the + iterator's arbitrary ordering, not to the cache's internal least + recently used list. + + \sa toFirst(), atLast() +*/ + +/*! + \fn bool Q3AsciiCacheIterator::atLast() const + + Returns TRUE if the iterator points to the last item in the cache; + otherwise returns FALSE. Note that this refers to the iterator's + arbitrary ordering, not to the cache's internal least recently + used list. + + \sa toLast(), atFirst() +*/ + +/*! + \fn type *Q3AsciiCacheIterator::toFirst() + + Sets the iterator to point to the first item in the cache and + returns a pointer to the item. + + Sets the iterator to 0 and returns 0 if the cache is empty. + + \sa toLast() isEmpty() +*/ + +/*! + \fn type *Q3AsciiCacheIterator::toLast() + + Sets the iterator to point to the last item in the cache and + returns a pointer to the item. + + Sets the iterator to 0 and returns 0 if the cache is empty. + + \sa toFirst() isEmpty() +*/ + +/*! + \fn Q3AsciiCacheIterator::operator type *() const + + Cast operator. Returns a pointer to the current iterator item. + Same as current(). +*/ + +/*! + \fn type *Q3AsciiCacheIterator::current() const + + Returns a pointer to the current iterator item. +*/ + +/*! + \fn const char *Q3AsciiCacheIterator::currentKey() const + + Returns the key for the current iterator item. +*/ + +/*! + \fn type *Q3AsciiCacheIterator::operator()() + + Makes the succeeding item current and returns the original current + item. + + If the current iterator item was the last item in the cache or if + it was 0, 0 is returned. +*/ + +/*! + \fn type *Q3AsciiCacheIterator::operator+=( uint jump ) + + Returns the item \a jump positions after the current item, or 0 + if it is beyond the last item. Makes this the current item. +*/ + +/*! + \fn type *Q3AsciiCacheIterator::operator-=( uint jump ) + + Returns the item \a jump positions before the current item, or 0 + if it is before the first item. Makes this the current item. +*/ + +/*! + \fn type *Q3AsciiCacheIterator::operator++() + + Prefix ++ makes the iterator point to the item just after + current(), and makes that the new current item for the iterator. If + current() was the last item, operator++() returns 0. +*/ + +/*! + \fn type *Q3AsciiCacheIterator::operator--() + + Prefix -- makes the iterator point to the item just before + current(), and makes that the new current item for the iterator. If + current() was the first item, operator--() returns 0. +*/ + diff --git a/src/qt3support/tools/q3asciidict.qdoc b/src/qt3support/tools/q3asciidict.qdoc new file mode 100644 index 0000000..1262a37 --- /dev/null +++ b/src/qt3support/tools/q3asciidict.qdoc @@ -0,0 +1,416 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \class Q3AsciiDict + \brief The Q3AsciiDict class is a template class that provides a dictionary based on char* keys. + \compat + + Q3AsciiDict is implemented as a template class. Define a template + instance Q3AsciiDict\<X\> to create a dictionary that operates on + pointers to X (X*). + + A dictionary is a collection of key-value pairs. The key is a + char* used for insertion, removal and lookup. The value is a + pointer. Dictionaries provide very fast insertion and lookup. + + Q3AsciiDict cannot handle Unicode keys; use the Q3Dict template + instead, which uses QString keys. A Q3Dict has the same + performace as a Q3AsciiDict. + + Example: + \snippet doc/src/snippets/code/doc_src_q3asciidict.qdoc 0 + In this example we use a dictionary to keep track of the line + edits we're using. We insert each line edit into the dictionary + with a unique name and then access the line edits via the + dictionary. See Q3PtrDict, Q3IntDict and Q3Dict. + + See Q3Dict for full details, including the choice of dictionary + size, and how deletions are handled. + + \sa Q3AsciiDictIterator, Q3Dict, Q3IntDict, Q3PtrDict +*/ + + +/*! + \fn Q3AsciiDict::Q3AsciiDict( int size, bool caseSensitive, bool copyKeys ) + + Constructs a dictionary optimized for less than \a size entries. + + We recommend setting \a size to a suitably large prime number (a + bit larger than the expected number of entries). This makes the + hash distribution better and will improve lookup performance. + + When \a caseSensitive is TRUE (the default) Q3AsciiDict treats + "abc" and "Abc" as different keys; when it is FALSE "abc" and + "Abc" are the same. Case-insensitive comparison only considers the + 26 letters in US-ASCII. + + If \a copyKeys is TRUE (the default), the dictionary copies keys + using strcpy(); if it is FALSE, the dictionary just copies the + pointers. +*/ + +/*! + \fn Q3AsciiDict::Q3AsciiDict( const Q3AsciiDict<type> &dict ) + + Constructs a copy of \a dict. + + Each item in \a dict is inserted into this dictionary. Only the + pointers are copied (shallow copy). +*/ + +/*! + \fn Q3AsciiDict::~Q3AsciiDict() + + Removes all items from the dictionary and destroys it. + + The items are deleted if auto-delete is enabled. + + All iterators that access this dictionary will be reset. + + \sa setAutoDelete() +*/ + +/*! + \fn Q3AsciiDict<type> &Q3AsciiDict::operator=(const Q3AsciiDict<type> &dict) + + Assigns \a dict to this dictionary and returns a reference to this + dictionary. + + This dictionary is first cleared and then each item in \a dict is + inserted into this dictionary. Only the pointers are copied + (shallow copy) unless newItem() has been reimplemented(). +*/ + +/*! + \fn uint Q3AsciiDict::count() const + + Returns the number of items in the dictionary. + + \sa isEmpty() +*/ + +/*! + \fn uint Q3AsciiDict::size() const + + Returns the size of the internal hash array (as specified in the + constructor). + + \sa count() +*/ + +/*! + \fn void Q3AsciiDict::resize( uint newsize ) + + Changes the size of the hashtable to \a newsize. The contents of + the dictionary are preserved but all iterators on the dictionary + become invalid. +*/ + +/*! + \fn bool Q3AsciiDict::isEmpty() const + + Returns TRUE if the dictionary is empty, i.e. count() == 0; + otherwise it returns FALSE. + + \sa count() +*/ + +/*! + \fn void Q3AsciiDict::insert( const char *key, const type *item ) + + Inserts the \a key with the \a item into the dictionary. + + Multiple items can have the same key, in which case only the last + item will be accessible using \l operator[](). + + \a item may not be 0. + + \sa replace() +*/ + +/*! + \fn void Q3AsciiDict::replace( const char *key, const type *item ) + + Replaces an item that has a key equal to \a key with \a item. + + If the item does not already exist, it will be inserted. + + \a item may not be 0. + + Equivalent to: + \snippet doc/src/snippets/code/doc_src_q3asciidict.qdoc 1 + + If there are two or more items with equal keys, then the most + recently inserted item will be replaced. + + \sa insert() +*/ + +/*! + \fn bool Q3AsciiDict::remove( const char *key ) + + Removes the item associated with \a key from the dictionary. + Returns TRUE if successful, i.e. if the key existed in the + dictionary; otherwise returns FALSE. + + If there are two or more items with equal keys, then the most + recently inserted item will be removed. + + The removed item is deleted if \link + Q3PtrCollection::setAutoDelete() auto-deletion\endlink is enabled. + + All dictionary iterators that refer to the removed item will be + set to point to the next item in the dictionary traversal order. + + \sa take(), clear(), setAutoDelete() +*/ + +/*! + \fn type *Q3AsciiDict::take( const char *key ) + + Takes the item associated with \a key out of the dictionary + without deleting it (even if \link Q3PtrCollection::setAutoDelete() + auto-deletion\endlink is enabled). + + If there are two or more items with equal keys, then the most + recently inserted item will be taken. + + Returns a pointer to the item taken out, or 0 if the key does not + exist in the dictionary. + + All dictionary iterators that refer to the taken item will be set + to point to the next item in the dictionary traversal order. + + \sa remove(), clear(), setAutoDelete() +*/ + +/*! + \fn void Q3AsciiDict::clear() + + Removes all items from the dictionary. + + The removed items are deleted if \link + Q3PtrCollection::setAutoDelete() auto-deletion\endlink is enabled. + + All dictionary iterators that operate on dictionary are reset. + + \sa remove(), take(), setAutoDelete() +*/ + +/*! + \fn type *Q3AsciiDict::find( const char *key ) const + + Returns the item associated with \a key, or 0 if the key does not + exist in the dictionary. + + This function uses an internal hashing algorithm to optimize + lookup. + + If there are two or more items with equal keys, then the item that + was most recently inserted will be found. + + Equivalent to the [] operator. + + \sa operator[]() +*/ + +/*! + \fn type *Q3AsciiDict::operator[]( const char *key ) const + + Returns the item associated with \a key, or 0 if the key does + not exist in the dictionary. + + This function uses an internal hashing algorithm to optimize + lookup. + + If there are two or more items with equal keys, then the item that + was most recently inserted will be found. + + Equivalent to the find() function. + + \sa find() +*/ + +/*! + \fn void Q3AsciiDict::statistics() const + + Debugging-only function that prints out the dictionary + distribution using qDebug(). +*/ + +/*! + \fn QDataStream& Q3AsciiDict::read( QDataStream &s, + Q3PtrCollection::Item &item ) + + Reads a dictionary item from the stream \a s and returns a + reference to the stream. + + The default implementation sets \a item to 0. + + \sa write() +*/ + +/*! + \fn QDataStream& Q3AsciiDict::write(QDataStream &s, Q3PtrCollection::Item item) const + + Writes a dictionary \a item to the stream \a s and returns a + reference to the stream. + + \sa read() +*/ + +/*! + \class Q3AsciiDictIterator + \brief The Q3AsciiDictIterator class provides an iterator for Q3AsciiDict collections. + \compat + + Q3AsciiDictIterator is implemented as a template class. Define a + template instance Q3AsciiDictIterator\<X\> to create a dictionary + iterator that operates on Q3AsciiDict\<X\> (dictionary of X*). + + Example: + \snippet doc/src/snippets/code/doc_src_q3asciidict.qdoc 2 + In the example we insert some line edits into a dictionary, then + iterate over the dictionary printing the strings associated with + those line edits. + + Note that the traversal order is arbitrary; you are not guaranteed + any particular order. + + Multiple iterators may independently traverse the same dictionary. + A Q3AsciiDict knows about all the iterators that are operating on + the dictionary. When an item is removed from the dictionary, + Q3AsciiDict updates all the iterators that are referring to the + removed item to point to the next item in the (arbitrary) + traversal order. + + \sa Q3AsciiDict +*/ + +/*! + \fn Q3AsciiDictIterator::Q3AsciiDictIterator( const Q3AsciiDict<type> &dict ) + + Constructs an iterator for \a dict. The current iterator item is + set to point on the first item in the \a dict. +*/ + +/*! + \fn Q3AsciiDictIterator::~Q3AsciiDictIterator() + + Destroys the iterator. +*/ + +/*! + \fn uint Q3AsciiDictIterator::count() const + + Returns the number of items in the dictionary this iterator + operates over. + + \sa isEmpty() +*/ + +/*! + \fn bool Q3AsciiDictIterator::isEmpty() const + + Returns TRUE if the dictionary is empty, i.e. count() == 0, + otherwise returns FALSE. + + \sa count() +*/ + +/*! + \fn type *Q3AsciiDictIterator::toFirst() + + Sets the current iterator item to point to the first item in the + dictionary and returns a pointer to the item. If the dictionary is + empty it sets the current item to 0 and returns 0. +*/ + +/*! + \fn Q3AsciiDictIterator::operator type *() const + + Cast operator. Returns a pointer to the current iterator item. + Same as current(). +*/ + +/*! + \fn type *Q3AsciiDictIterator::current() const + + Returns a pointer to the current iterator item. +*/ + +/*! + \fn const char *Q3AsciiDictIterator::currentKey() const + + Returns a pointer to the key for the current iterator item. +*/ + +/*! + \fn type *Q3AsciiDictIterator::operator()() + + Makes the succeeding item current and returns the original current + item. + + If the current iterator item was the last item in the dictionary + or if it was 0, 0 is returned. +*/ + +/*! + \fn type *Q3AsciiDictIterator::operator++() + + Prefix ++ makes the succeeding item current and returns the new + current item. + + If the current iterator item was the last item in the dictionary + or if it was 0, 0 is returned. +*/ + +/*! + \fn type *Q3AsciiDictIterator::operator+=( uint jump ) + + Sets the current item to the item \a jump positions after the + current item, and returns a pointer to that item. + + If that item is beyond the last item or if the dictionary is + empty, it sets the current item to 0 and returns 0. +*/ diff --git a/src/qt3support/tools/q3cache.qdoc b/src/qt3support/tools/q3cache.qdoc new file mode 100644 index 0000000..20b777f --- /dev/null +++ b/src/qt3support/tools/q3cache.qdoc @@ -0,0 +1,461 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \class Q3Cache + \brief The Q3Cache class is a template class that provides a cache based on QString keys. + \compat + + A cache is a least recently used (LRU) list of cache items. Each + cache item has a key and a certain cost. The sum of item costs, + totalCost(), never exceeds the maximum cache cost, maxCost(). If + inserting a new item would cause the total cost to exceed the + maximum cost, the least recently used items in the cache are + removed. + + Q3Cache is a template class. Q3Cache\<X\> defines a cache that + operates on pointers to X, or X*. + + Apart from insert(), by far the most important function is find() + (which also exists as operator[]()). This function looks up an + item, returns it, and by default marks it as being the most + recently used item. + + There are also methods to remove() or take() an object from the + cache. Calling setAutoDelete(TRUE) for a cache tells it to delete + items that are removed. The default is to not delete items when + they are removed (i.e., remove() and take() are equivalent). + + When inserting an item into the cache, only the pointer is copied, + not the item itself. This is called a shallow copy. It is possible + to make the cache copy all of the item's data (known as a deep + copy) when an item is inserted. insert() calls the virtual + function Q3PtrCollection::newItem() for the item to be inserted. + Inherit a cache and reimplement newItem() if you want deep copies. + + When removing a cache item, the virtual function + Q3PtrCollection::deleteItem() is called. The default + implementation deletes the item if auto-deletion is enabled, and + does nothing otherwise. + + There is a Q3CacheIterator that can be used to traverse the items + in the cache in arbitrary order. + + In Q3Cache, the cache items are accessed via QString keys, which + are Unicode strings. If you want to use non-Unicode, plain 8-bit + \c char* keys, use the Q3AsciiCache template. A Q3Cache has the + same performance as a Q3AsciiCache. + + \sa Q3CacheIterator, Q3AsciiCache, Q3IntCache +*/ + +/*! + \fn Q3Cache::Q3Cache( const Q3Cache<type> &c ) + + \internal + + Do not use. A Q3Cache cannot be copied. Calls qFatal() in debug version. +*/ + + +/*! + \fn Q3Cache::Q3Cache( int maxCost, int size, bool caseSensitive ) + + Constructs a cache whose contents will never have a total cost + greater than \a maxCost and which is expected to contain less than + \a size items. + + \a size is actually the size of an internal hash array; it's + usually best to make it a prime number and at least 50% bigger + than the largest expected number of items in the cache. + + Each inserted item has an associated cost. When inserting a new + item, if the total cost of all items in the cache will exceed \a + maxCost, the cache will start throwing out the older (least + recently used) items until there is enough room for the new item + to be inserted. + + If \a caseSensitive is TRUE (the default), the cache keys are case + sensitive; if it is FALSE, they are case-insensitive. + Case-insensitive comparison considers all Unicode letters. +*/ + +/*! + \fn Q3Cache::~Q3Cache() + + Removes all items from the cache and destroys it. All iterators + that access this cache will be reset. +*/ + +/*! + \fn Q3Cache<type>& Q3Cache::operator=( const Q3Cache<type> &c ) + + \internal + + Do not use. A Q3Cache cannot be copied. Calls qFatal() in debug version. +*/ + +/*! + \fn int Q3Cache::maxCost() const + + Returns the maximum allowed total cost of the cache. + + \sa setMaxCost() totalCost() +*/ + +/*! + \fn int Q3Cache::totalCost() const + + Returns the total cost of the items in the cache. This is an + integer in the range 0 to maxCost(). + + \sa setMaxCost() +*/ + +/*! + \fn void Q3Cache::setMaxCost( int m ) + + Sets the maximum allowed total cost of the cache to \a m. If the + current total cost is greater than \a m, some items are deleted + immediately. + + \sa maxCost() totalCost() +*/ + +/*! + \fn uint Q3Cache::count() const + + Returns the number of items in the cache. + + \sa totalCost() +*/ + +/*! + \fn uint Q3Cache::size() const + + Returns the size of the hash array used to implement the cache. + This should be a bit bigger than count() is likely to be. +*/ + +/*! + \fn bool Q3Cache::isEmpty() const + + Returns TRUE if the cache is empty; otherwise returns FALSE. +*/ + +/*! + \fn bool Q3Cache::insert( const QString &k, const type *d, int c, int p ) + + Inserts the item \a d into the cache with key \a k and associated + cost, \a c. Returns TRUE if it is successfully inserted; otherwise + returns FALSE. + + The cache's size is limited, and if the total cost is too high, + Q3Cache will remove old, least recently used items until there is + room for this new item. + + The parameter \a p is internal and should be left at the default + value (0). + + \warning If this function returns FALSE (which could happen, e.g. + if the cost of this item alone exceeds maxCost()) you must delete + \a d yourself. Additionally, be very careful about using \a d + after calling this function because any other insertions into the + cache, from anywhere in the application or within Qt itself, could + cause the object to be discarded from the cache and the pointer to + become invalid. +*/ + +/*! + \fn bool Q3Cache::remove( const QString &k ) + + Removes the item associated with \a k, and returns TRUE if the + item was present in the cache; otherwise returns FALSE. + + The item is deleted if auto-deletion has been enabled, i.e., if + you have called setAutoDelete(TRUE). + + If there are two or more items with equal keys, the one that was + inserted last is removed. + + All iterators that refer to the removed item are set to point to + the next item in the cache's traversal order. + + \sa take(), clear() +*/ + +/*! + \fn type *Q3Cache::take( const QString &k ) + + Takes the item associated with \a k out of the cache without + deleting it, and returns a pointer to the item taken out, or 0 + if the key does not exist in the cache. + + If there are two or more items with equal keys, the one that was + inserted last is taken. + + All iterators that refer to the taken item are set to point to the + next item in the cache's traversal order. + + \sa remove(), clear() +*/ + +/*! + \fn void Q3Cache::clear() + + Removes all items from the cache and deletes them if auto-deletion + has been enabled. + + All cache iterators that operate this on cache are reset. + + \sa remove() take() +*/ + +/*! + \fn type *Q3Cache::find( const QString &k, bool ref ) const + + Returns the item associated with key \a k, or 0 if the key does + not exist in the cache. If \a ref is TRUE (the default), the item + is moved to the front of the least recently used list. + + If there are two or more items with equal keys, the one that was + inserted last is returned. +*/ + +/*! + \fn type *Q3Cache::operator[]( const QString &k ) const + + Returns the item associated with key \a k, or 0 if \a k does not + exist in the cache, and moves the item to the front of the least + recently used list. + + If there are two or more items with equal keys, the one that was + inserted last is returned. + + This is the same as find( k, TRUE ). + + \sa find() +*/ + +/*! + \fn void Q3Cache::statistics() const + + A debug-only utility function. Prints out cache usage, hit/miss, + and distribution information using qDebug(). This function does + nothing in the release library. +*/ + +/***************************************************************************** + Q3CacheIterator documentation + *****************************************************************************/ + +/*! + \class Q3CacheIterator qcache.h + \brief The Q3CacheIterator class provides an iterator for Q3Cache collections. + \compat + + Note that the traversal order is arbitrary; you are not guaranteed + any particular order. If new objects are inserted into the cache + while the iterator is active, the iterator may or may not see + them. + + Multiple iterators are completely independent, even when they + operate on the same Q3Cache. Q3Cache updates all iterators that + refer an item when that item is removed. + + Q3CacheIterator provides an operator++(), and an operator+=() to + traverse the cache. The current() and currentKey() functions are + used to access the current cache item and its key. The atFirst() + and atLast() return TRUE if the iterator points to the first or + last item in the cache respectively. The isEmpty() function + returns TRUE if the cache is empty, and count() returns the number + of items in the cache. + + Note that atFirst() and atLast() refer to the iterator's arbitrary + ordering, not to the cache's internal least recently used list. + + \sa Q3Cache +*/ + +/*! + \fn Q3CacheIterator::Q3CacheIterator( const Q3Cache<type> &cache ) + + Constructs an iterator for \a cache. The current iterator item is + set to point to the first item in the \a cache. +*/ + +/*! + \fn Q3CacheIterator::Q3CacheIterator (const Q3CacheIterator<type> & ci) + + Constructs an iterator for the same cache as \a ci. The new + iterator starts at the same item as ci.current(), but moves + independently from there on. +*/ + +/*! + \fn Q3CacheIterator<type>& Q3CacheIterator::operator=( const Q3CacheIterator<type> &ci ) + + Makes this an iterator for the same cache as \a ci. The new + iterator starts at the same item as ci.current(), but moves + independently thereafter. +*/ + +/*! + \fn uint Q3CacheIterator::count() const + + Returns the number of items in the cache on which this iterator + operates. + + \sa isEmpty() +*/ + +/*! + \fn bool Q3CacheIterator::isEmpty() const + + Returns TRUE if the cache is empty, i.e. count() == 0; otherwise + it returns FALSE. + + \sa count() +*/ + +/*! + \fn bool Q3CacheIterator::atFirst() const + + Returns TRUE if the iterator points to the first item in the + cache; otherwise returns FALSE. Note that this refers to the + iterator's arbitrary ordering, not to the cache's internal least + recently used list. + + \sa toFirst(), atLast() +*/ + +/*! + \fn bool Q3CacheIterator::atLast() const + + Returns TRUE if the iterator points to the last item in the cache; + otherwise returns FALSE. Note that this refers to the iterator's + arbitrary ordering, not to the cache's internal least recently + used list. + + \sa toLast(), atFirst() +*/ + +/*! + \fn type *Q3CacheIterator::toFirst() + + Sets the iterator to point to the first item in the cache and + returns a pointer to the item. + + Sets the iterator to 0 and returns 0 if the cache is empty. + + \sa toLast() isEmpty() +*/ + +/*! + \fn type *Q3CacheIterator::toLast() + + Sets the iterator to point to the last item in the cache and + returns a pointer to the item. + + Sets the iterator to 0 and returns 0 if the cache is empty. + + \sa toFirst() isEmpty() +*/ + +/*! + \fn Q3CacheIterator::operator type *() const + + Cast operator. Returns a pointer to the current iterator item. + Same as current(). +*/ + +/*! + \fn type *Q3CacheIterator::current() const + + Returns a pointer to the current iterator item. +*/ + +/*! + \fn QString Q3CacheIterator::currentKey() const + + Returns the key for the current iterator item. +*/ + +/*! + \fn type *Q3CacheIterator::operator()() + + Makes the succeeding item current and returns the original current + item. + + If the current iterator item was the last item in the cache or if + it was 0, 0 is returned. +*/ + +/*! + \fn type *Q3CacheIterator::operator+=( uint jump ) + + Returns the item \a jump positions after the current item, or 0 if + it is beyond the last item. Makes this the current item. +*/ + +/*! + \fn type *Q3CacheIterator::operator-=( uint jump ) + + Returns the item \a jump positions before the current item, or 0 + if it is before the first item. Makes this the current item. +*/ + +/*! + \fn type *Q3CacheIterator::operator++() + + Prefix++ makes the iterator point to the item just after current() + and makes that the new current item for the iterator. If current() + was the last item, operator++() returns 0. +*/ + +/*! + \fn type *Q3CacheIterator::operator--() + + Prefix-- makes the iterator point to the item just before + current() and makes that the new current item for the iterator. If + current() was the first item, operator--() returns 0. +*/ + diff --git a/src/qt3support/tools/q3dict.qdoc b/src/qt3support/tools/q3dict.qdoc new file mode 100644 index 0000000..2234c2d --- /dev/null +++ b/src/qt3support/tools/q3dict.qdoc @@ -0,0 +1,446 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \class Q3Dict + \brief The Q3Dict class is a template class that provides a + dictionary based on QString keys. + \compat + + Q3Dict is implemented as a template class. Define a template + instance Q3Dict\<X\> to create a dictionary that operates on + pointers to X (X *). + + A dictionary is a collection of key-value pairs. The key is a + QString used for insertion, removal and lookup. The value is a + pointer. Dictionaries provide very fast insertion and lookup. + + If you want to use non-Unicode, plain 8-bit \c char* keys, use the + Q3AsciiDict template. A Q3Dict has the same performance as a + Q3AsciiDict. If you want to have a dictionary that maps QStrings to + QStrings use QMap. + + The size() of the dictionary is very important. In order to get + good performance, you should use a suitably large prime number. + Suitable means equal to or larger than the maximum expected number + of dictionary items. Size is set in the constructor but may be + changed with resize(). + + Items are inserted with insert(); 0 pointers cannot be inserted. + Items are removed with remove(). All the items in a dictionary can + be removed with clear(). The number of items in the dictionary is + returned by count(). If the dictionary contains no items isEmpty() + returns TRUE. You can change an item's value with replace(). Items + are looked up with operator[](), or with find() which return a + pointer to the value or 0 if the given key does not exist. You can + take an item out of the dictionary with take(). + + Calling setAutoDelete(TRUE) for a dictionary tells it to delete + items that are removed. The default behavior is not to delete + items when they are removed. + + When an item is inserted, the key is converted (hashed) to an + integer index into an internal hash array. This makes lookup very + fast. + + Items with equal keys are allowed. When inserting two items with + the same key, only the last inserted item will be accessible (last + in, first out) until it is removed. + + The Q3DictIterator class can traverse the dictionary, but only in + an arbitrary order. Multiple iterators may independently traverse + the same dictionary. + + When inserting an item into a dictionary, only the pointer is + copied, not the item itself, i.e. a shallow copy is made. It is + possible to make the dictionary copy all of the item's data (a + deep copy) when an item is inserted. insert() calls the virtual + function Q3PtrCollection::newItem() for the item to be inserted. + Inherit a dictionary and reimplement newItem() if you want deep + copies. + + When removing a dictionary item, the virtual function + Q3PtrCollection::deleteItem() is called. Q3Dict's default + implementation is to delete the item if auto-deletion is enabled. + + \sa Q3DictIterator, Q3AsciiDict, Q3IntDict, Q3PtrDict +*/ + + +/*! + \fn Q3Dict::Q3Dict( int size, bool caseSensitive ) + + Constructs a dictionary optimized for less than \a size entries. + + We recommend setting \a size to a suitably large prime number + (e.g. a prime that's slightly larger than the expected number of + entries). This makes the hash distribution better which will lead + to faster lookup. + + If \a caseSensitive is TRUE (the default), keys which differ only + by case are considered different. +*/ + +/*! + \fn Q3Dict::Q3Dict( const Q3Dict<type> &dict ) + + Constructs a copy of \a dict. + + Each item in \a dict is inserted into this dictionary. Only the + pointers are copied (shallow copy). +*/ + +/*! + \fn Q3Dict::~Q3Dict() + + Removes all items from the dictionary and destroys it. If + setAutoDelete() is TRUE, each value is deleted. All iterators that + access this dictionary will be reset. + + \sa setAutoDelete() +*/ + +/*! + \fn Q3Dict<type> &Q3Dict::operator=(const Q3Dict<type> &dict) + + Assigns \a dict to this dictionary and returns a reference to this + dictionary. + + This dictionary is first cleared, then each item in \a dict is + inserted into this dictionary. Only the pointers are copied + (shallow copy), unless newItem() has been reimplemented. +*/ + +/*! + \fn uint Q3Dict::count() const + + Returns the number of items in the dictionary. + + \sa isEmpty() +*/ + +/*! + \fn uint Q3Dict::size() const + + Returns the size of the internal hash array (as specified in the + constructor). + + \sa count() +*/ + +/*! + \fn void Q3Dict::resize( uint newsize ) + + Changes the size of the hash table to \a newsize. The contents of + the dictionary are preserved, but all iterators on the dictionary + become invalid. +*/ + +/*! + \fn bool Q3Dict::isEmpty() const + + Returns TRUE if the dictionary is empty, i.e. count() == 0; + otherwise returns FALSE. + + \sa count() +*/ + +/*! + \fn void Q3Dict::insert( const QString &key, const type *item ) + + Inserts the key \a key with value \a item into the dictionary. + + Multiple items can have the same key, in which case only the last + item will be accessible using \l operator[](). + + \a item may not be 0. + + \sa replace() +*/ + +/*! + \fn void Q3Dict::replace( const QString &key, const type *item ) + + Replaces the value of the key, \a key with \a item. + + If the item does not already exist, it will be inserted. + + \a item may not be 0. + + Equivalent to: + \snippet doc/src/snippets/code/doc_src_q3dict.qdoc 0 + + If there are two or more items with equal keys, then the last item + that was inserted will be replaced. + + \sa insert() +*/ + +/*! + \fn bool Q3Dict::remove( const QString &key ) + + Removes the item with \a key from the dictionary. Returns TRUE if + successful, i.e. if the item is in the dictionary; otherwise + returns FALSE. + + If there are two or more items with equal keys, then the last item + that was inserted will be removed. + + The removed item is deleted if \link + Q3PtrCollection::setAutoDelete() auto-deletion\endlink is enabled. + + All dictionary iterators that refer to the removed item will be + set to point to the next item in the dictionary's traversal order. + + \sa take(), clear(), setAutoDelete() +*/ + +/*! + \fn type *Q3Dict::take( const QString &key ) + + Takes the item with \a key out of the dictionary without deleting + it (even if \link Q3PtrCollection::setAutoDelete() + auto-deletion\endlink is enabled). + + If there are two or more items with equal keys, then the last item + that was inserted will be taken. + + Returns a pointer to the item taken out, or 0 if the key does not + exist in the dictionary. + + All dictionary iterators that refer to the taken item will be set + to point to the next item in the dictionary traversal order. + + \sa remove(), clear(), setAutoDelete() +*/ + +/*! + \fn void Q3Dict::clear() + + Removes all items from the dictionary. + + The removed items are deleted if \link + Q3PtrCollection::setAutoDelete() auto-deletion\endlink is enabled. + + All dictionary iterators that operate on the dictionary are reset. + + \sa remove(), take(), setAutoDelete() +*/ + +/*! + \fn type *Q3Dict::find( const QString &key ) const + + Returns the item with key \a key, or 0 if the key does not exist + in the dictionary. + + If there are two or more items with equal keys, then the most + recently inserted item will be found. + + Equivalent to the [] operator. + + \sa operator[]() +*/ + +/*! + \fn type *Q3Dict::operator[]( const QString &key ) const + + Returns the item with key \a key, or 0 if the key does not + exist in the dictionary. + + If there are two or more items with equal keys, then the most + recently inserted item will be found. + + Equivalent to the find() function. + + \sa find() +*/ + +/*! + \fn void Q3Dict::statistics() const + + Debugging-only function that prints out the dictionary + distribution using qDebug(). +*/ + +/*! + \fn QDataStream& Q3Dict::read( QDataStream &s, Q3PtrCollection::Item &item ) + + Reads a dictionary item from the stream \a s and returns a + reference to the stream. + + The default implementation sets \a item to 0. + + \sa write() +*/ + +/*! + \fn QDataStream& Q3Dict::write( QDataStream &s, Q3PtrCollection::Item item ) const + + Writes a dictionary \a item to the stream \a s and returns a + reference to the stream. + + \sa read() +*/ + +/*! + \class Q3DictIterator + \brief The Q3DictIterator class provides an iterator for Q3Dict collections. + \compat + + Q3DictIterator is implemented as a template class. Define a + template instance Q3DictIterator\<X\> to create a dictionary + iterator that operates on Q3Dict\<X\> (dictionary of X*). + + The traversal order is arbitrary; when we speak of the "first", + "last" and "next" item we are talking in terms of this arbitrary + order. + + Multiple iterators may independently traverse the same dictionary. + A Q3Dict knows about all the iterators that are operating on the + dictionary. When an item is removed from the dictionary, Q3Dict + updates all iterators that are referring to the removed item to + point to the next item in the (arbitrary) traversal order. + + Example: + \snippet doc/src/snippets/code/doc_src_q3dict.qdoc 1 + In the example we insert some pointers to line edits into a + dictionary, then iterate over the dictionary printing the strings + associated with the line edits. + + \sa Q3Dict +*/ + +/*! + \fn Q3DictIterator::Q3DictIterator( const Q3Dict<type> &dict ) + + Constructs an iterator for \a dict. The current iterator item is + set to point to the first item in the dictionary, \a dict. First + in this context means first in the arbitrary traversal order. +*/ + +/*! + \fn Q3DictIterator::~Q3DictIterator() + + Destroys the iterator. +*/ + +/*! + \fn uint Q3DictIterator::count() const + + Returns the number of items in the dictionary over which the + iterator is operating. + + \sa isEmpty() +*/ + +/*! + \fn bool Q3DictIterator::isEmpty() const + + Returns TRUE if the dictionary is empty, i.e. count() == 0; + otherwise returns FALSE. + + \sa count() +*/ + +/*! + \fn type *Q3DictIterator::toFirst() + + Resets the iterator, making the first item the first current item. + First in this context means first in the arbitrary traversal + order. Returns a pointer to this item. + + If the dictionary is empty it sets the current item to 0 and + returns 0. +*/ + +/*! + \fn type *Q3DictIterator::operator*() + \internal +*/ + +/*! + \fn Q3DictIterator::operator type*() const + + Cast operator. Returns a pointer to the current iterator item. + Same as current(). +*/ + + +/*! + \fn type *Q3DictIterator::current() const + + Returns a pointer to the current iterator item's value. +*/ + +/*! + \fn QString Q3DictIterator::currentKey() const + + Returns the current iterator item's key. +*/ + +/*! + \fn type *Q3DictIterator::operator()() + + Makes the next item current and returns the original current item. + + If the current iterator item was the last item in the dictionary + or if it was 0, 0 is returned. +*/ + +/*! + \fn type *Q3DictIterator::operator++() + + Prefix ++ makes the next item current and returns the new current + item. + + If the current iterator item was the last item in the dictionary + or if it was 0, 0 is returned. +*/ + +/*! + \fn type *Q3DictIterator::operator+=( uint jump ) + \internal + Sets the current item to the item \a jump positions after the current item, + and returns a pointer to that item. + + If that item is beyond the last item or if the dictionary is empty, + it sets the current item to 0 and returns 0. +*/ diff --git a/src/qt3support/tools/q3intcache.qdoc b/src/qt3support/tools/q3intcache.qdoc new file mode 100644 index 0000000..770532e --- /dev/null +++ b/src/qt3support/tools/q3intcache.qdoc @@ -0,0 +1,446 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \class Q3IntCache + \brief The Q3IntCache class is a template class that provides a cache based on long keys. + \compat + + Q3IntCache is implemented as a template class. Define a template + instance Q3IntCache\<X\> to create a cache that operates on + pointers to X, or X*. + + A cache is a least recently used (LRU) list of cache items, + accessed via \c long keys. Each cache item has a cost. The sum + of item costs, totalCost(), will not exceed the maximum cache + cost, maxCost(). If inserting a new item would cause the total + cost to exceed the maximum cost, the least recently used items in + the cache are removed. + + Apart from insert(), by far the most important function is find() + (which also exists as operator[]). This function looks up an + item, returns it, and by default marks it as being the most + recently used item. + + There are also methods to remove() or take() an object from the + cache. Calling setAutoDelete(TRUE) for a cache tells it to delete + items that are removed. The default is to not delete items when + they are removed (i.e. remove() and take() are equivalent). + + When inserting an item into the cache, only the pointer is copied, + not the item itself. This is called a shallow copy. It is possible + to make the cache copy all of the item's data (known as a deep + copy) when an item is inserted. insert() calls the virtual + function Q3PtrCollection::newItem() for the item to be inserted. + Inherit a dictionary and reimplement newItem() if you want deep + copies. + + When removing a cache item, the item will be automatically + deleted if auto-deletion is enabled. + + There is a Q3IntCacheIterator which may be used to traverse the + items in the cache in arbitrary order. + + \sa Q3IntCacheIterator, Q3Cache, Q3AsciiCache +*/ + +/*! + \fn Q3IntCache::Q3IntCache( const Q3IntCache<type> &c ) + + \internal + + Do not use. A Q3IntCache cannot be copied. Calls qFatal() in debug version. +*/ + +/*! + \fn Q3IntCache::Q3IntCache( int maxCost, int size ) + + Constructs a cache whose contents will never have a total cost + greater than \a maxCost and which is expected to contain less than + \a size items. + + \a size is actually the size of an internal hash array; it's + usually best to make it prime and at least 50% bigger than the + largest expected number of items in the cache. + + Each inserted item is associated with a cost. When inserting a new + item, if the total cost of all items in the cache will exceed \a + maxCost, the cache will start throwing out the older (least + recently used) items until there is enough room for the new item + to be inserted. +*/ + +/*! + \fn Q3IntCache::~Q3IntCache() + + Removes all items from the cache and then destroys the int cache. + If auto-deletion is enabled the cache's items are deleted. All + iterators that access this cache will be reset. +*/ + +/*! + \fn Q3IntCache<type>& Q3IntCache::operator=( const Q3IntCache<type> &c ) + + \internal + + Do not use. A Q3IntCache cannot be copied. Calls qFatal() in debug version. +*/ + +/*! + \fn int Q3IntCache::maxCost() const + + Returns the maximum allowed total cost of the cache. + + \sa setMaxCost() totalCost() +*/ + +/*! + \fn int Q3IntCache::totalCost() const + + Returns the total cost of the items in the cache. This is an + integer in the range 0 to maxCost(). + + \sa setMaxCost() +*/ + +/*! + \fn void Q3IntCache::setMaxCost( int m ) + + Sets the maximum allowed total cost of the cache to \a m. If the + current total cost is greater than \a m, some items are removed + immediately. + + \sa maxCost() totalCost() +*/ + +/*! + \fn uint Q3IntCache::count() const + + Returns the number of items in the cache. + + \sa totalCost() +*/ + +/*! + \fn uint Q3IntCache::size() const + + Returns the size of the hash array used to implement the cache. + This should be a bit larger than count() is likely to be. +*/ + +/*! + \fn bool Q3IntCache::isEmpty() const + + Returns TRUE if the cache is empty; otherwise returns FALSE. +*/ + +/*! + \fn bool Q3IntCache::insert( long k, const type *d, int c, int p ) + + Inserts the item \a d into the cache with key \a k and assigns it + a cost of \a c (default 1). Returns TRUE if it succeeds; otherwise + returns FALSE. + + The cache's size is limited, and if the total cost is too high, + Q3IntCache will remove old, least-used items until there is room + for this new item. + + The parameter \a p is internal and should be left at the default + value (0). + + \warning If this function returns FALSE (for example, the cost \c, + exceeds maxCost()), you must delete \a d yourself. Additionally, + be very careful about using \a d after calling this function. Any + other insertions into the cache, from anywhere in the application + or within Qt itself, could cause the object to be discarded from + the cache and the pointer to become invalid. +*/ + +/*! + \fn bool Q3IntCache::remove( long k ) + + Removes the item associated with \a k, and returns TRUE if the + item was present in the cache; otherwise returns FALSE. + + The item is deleted if auto-deletion has been enabled, i.e. if you + have called setAutoDelete(TRUE). + + If there are two or more items with equal keys, the one that was + inserted most recently is removed. + + All iterators that refer to the removed item are set to point to + the next item in the cache's traversal order. + + \sa take(), clear() +*/ + +/*! + \fn type * Q3IntCache::take( long k ) + + Takes the item associated with \a k out of the cache without + deleting it, and returns a pointer to the item taken out or 0 if + the key does not exist in the cache. + + If there are two or more items with equal keys, the one that was + inserted most recently is taken. + + All iterators that refer to the taken item are set to point to the + next item in the cache's traversal order. + + \sa remove(), clear() +*/ + +/*! + \fn void Q3IntCache::clear() + + Removes all items from the cache, and deletes them if + auto-deletion has been enabled. + + All cache iterators that operate this on cache are reset. + + \sa remove() take() +*/ + +/*! + \fn type * Q3IntCache::find( long k, bool ref ) const + + Returns the item associated with \a k, or 0 if the key does not + exist in the cache. If \a ref is TRUE (the default), the item is + moved to the front of the least recently used list. + + If there are two or more items with equal keys, the one that was + inserted most recently is returned. +*/ + +/*! + \fn type * Q3IntCache::operator[]( long k ) const + + Returns the item associated with \a k, or 0 if \a k does not exist + in the cache, and moves the item to the front of the least + recently used list. + + If there are two or more items with equal keys, the one that was + inserted most recently is returned. + + This is the same as find( k, TRUE ). + + \sa find() +*/ + +/*! + \fn void Q3IntCache::statistics() const + + A debug-only utility function. Prints out cache usage, hit/miss, + and distribution information using qDebug(). This function does + nothing in the release library. +*/ + +/*! + \class Q3IntCacheIterator + \brief The Q3IntCacheIterator class provides an iterator for Q3IntCache collections. + \compat + + Note that the traversal order is arbitrary; you are not guaranteed + any particular order. If new objects are inserted into the cache + while the iterator is active, the iterator may or may not see + them. + + Multiple iterators are completely independent, even when they + operate on the same Q3IntCache. Q3IntCache updates all iterators + that refer an item when that item is removed. + + Q3IntCacheIterator provides an operator++(), and an operator+=() to + traverse the cache; current() and currentKey() to access the + current cache item and its key; atFirst() atLast(), which return + TRUE if the iterator points to the first/last item in the cache; + isEmpty(), which returns TRUE if the cache is empty; and count(), + which returns the number of items in the cache. + + Note that atFirst() and atLast() refer to the iterator's arbitrary + ordering, not to the cache's internal least recently used list. + + \sa Q3IntCache +*/ + +/*! + \fn Q3IntCacheIterator::Q3IntCacheIterator( const Q3IntCache<type> &cache ) + + Constructs an iterator for \a cache. The current iterator item is + set to point to the first item in the \a cache (or rather, the + first item is defined to be the item at which this constructor + sets the iterator to point). +*/ + +/*! + \fn Q3IntCacheIterator::Q3IntCacheIterator (const Q3IntCacheIterator<type> & ci) + + Constructs an iterator for the same cache as \a ci. The new + iterator starts at the same item as ci.current(), but moves + independently from there on. +*/ + +/*! + \fn Q3IntCacheIterator<type>& Q3IntCacheIterator::operator=( const Q3IntCacheIterator<type> &ci ) + + Makes this an iterator for the same cache as \a ci. The new + iterator starts at the same item as ci.current(), but moves + independently thereafter. +*/ + +/*! + \fn uint Q3IntCacheIterator::count() const + + Returns the number of items in the cache on which this iterator + operates. + + \sa isEmpty() +*/ + +/*! + \fn bool Q3IntCacheIterator::isEmpty() const + + Returns TRUE if the cache is empty; otherwise returns FALSE. + + \sa count() +*/ + +/*! + \fn bool Q3IntCacheIterator::atFirst() const + + Returns TRUE if the iterator points to the first item in the + cache; otherwise returns FALSE. Note that this refers to the + iterator's arbitrary ordering, not to the cache's internal least + recently used list. + + \sa toFirst(), atLast() +*/ + +/*! + \fn bool Q3IntCacheIterator::atLast() const + + Returns TRUE if the iterator points to the last item in the cache; + otherwise returns FALSE. Note that this refers to the iterator's + arbitrary ordering, not to the cache's internal least recently + used list. + + \sa toLast(), atFirst() +*/ + +/*! + \fn type *Q3IntCacheIterator::toFirst() + + Sets the iterator to point to the first item in the cache and + returns a pointer to the item. + + Sets the iterator to 0, and returns 0, if the cache is empty. + + \sa toLast() isEmpty() +*/ + +/*! + \fn type *Q3IntCacheIterator::toLast() + + Sets the iterator to point to the last item in the cache and + returns a pointer to the item. + + Sets the iterator to 0, and returns 0, if the cache is empty. + + \sa toFirst() isEmpty() +*/ + +/*! + \fn Q3IntCacheIterator::operator type *() const + + Cast operator. Returns a pointer to the current iterator item. + Same as current(). +*/ + +/*! + \fn type *Q3IntCacheIterator::current() const + + Returns a pointer to the current iterator item. +*/ + +/*! + \fn long Q3IntCacheIterator::currentKey() const + + Returns the key for the current iterator item. +*/ + +/*! + \fn type *Q3IntCacheIterator::operator()() + + Makes the succeeding item current and returns the original current + item. + + If the current iterator item was the last item in the cache or if + it was 0, 0 is returned. +*/ + +/*! + \fn type *Q3IntCacheIterator::operator+=( uint jump ) + + Returns the item \a jump positions after the current item, or 0 if + it is beyond the last item. Makes this the current item. +*/ + +/*! + \fn type *Q3IntCacheIterator::operator-=( uint jump ) + + Returns the item \a jump positions before the current item, or 0 + if it is beyond the first item. Makes this the current item. +*/ + +/*! + \fn type *Q3IntCacheIterator::operator++() + + Prefix ++ makes the iterator point to the item just after + current(), and makes it the new current item for the iterator. If + current() was the last item, operator--() returns 0. +*/ + +/*! + \fn type *Q3IntCacheIterator::operator--() + + Prefix -- makes the iterator point to the item just before + current(), and makes it the new current item for the iterator. If + current() was the first item, operator--() returns 0. +*/ diff --git a/src/qt3support/tools/q3intdict.qdoc b/src/qt3support/tools/q3intdict.qdoc new file mode 100644 index 0000000..731050d --- /dev/null +++ b/src/qt3support/tools/q3intdict.qdoc @@ -0,0 +1,390 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \class Q3IntDict + \brief The Q3IntDict class is a template class that provides a dictionary based on long keys.\ + \compat + + Q3IntDict is implemented as a template class. Define a template + instance Q3IntDict\<X\> to create a dictionary that operates on + pointers to X (X*). + + A dictionary is a collection of key-value pairs. The key is an \c + long used for insertion, removal and lookup. The value is a + pointer. Dictionaries provide very fast insertion and lookup. + + Example: + \snippet doc/src/snippets/code/doc_src_q3intdict.qdoc 0 + + See Q3Dict for full details, including the choice of dictionary + size, and how deletions are handled. + + \sa Q3IntDictIterator, Q3Dict, Q3AsciiDict, Q3PtrDict +*/ + + +/*! + \fn Q3IntDict::Q3IntDict( int size ) + + Constructs a dictionary using an internal hash array of size \a + size. + + Setting \a size to a suitably large prime number (equal to or + greater than the expected number of entries) makes the hash + distribution better which leads to faster lookup. +*/ + +/*! + \fn Q3IntDict::Q3IntDict( const Q3IntDict<type> &dict ) + + Constructs a copy of \a dict. + + Each item in \a dict is inserted into this dictionary. Only the + pointers are copied (shallow copy). +*/ + +/*! + \fn Q3IntDict::~Q3IntDict() + + Removes all items from the dictionary and destroys it. + + All iterators that access this dictionary will be reset. + + \sa setAutoDelete() +*/ + +/*! + \fn Q3IntDict<type> &Q3IntDict::operator=(const Q3IntDict<type> &dict) + + Assigns \a dict to this dictionary and returns a reference to this + dictionary. + + This dictionary is first cleared and then each item in \a dict is + inserted into this dictionary. Only the pointers are copied + (shallow copy), unless newItem() has been reimplemented. +*/ + +/*! + \fn uint Q3IntDict::count() const + + Returns the number of items in the dictionary. + + \sa isEmpty() +*/ + +/*! + \fn uint Q3IntDict::size() const + + Returns the size of the internal hash array (as specified in the + constructor). + + \sa count() +*/ + +/*! + \fn void Q3IntDict::resize( uint newsize ) + + Changes the size of the hashtable to \a newsize. The contents of + the dictionary are preserved, but all iterators on the dictionary + become invalid. +*/ + +/*! + \fn bool Q3IntDict::isEmpty() const + + Returns TRUE if the dictionary is empty; otherwise returns FALSE. + + \sa count() +*/ + +/*! + \fn void Q3IntDict::insert( long key, const type *item ) + + Insert item \a item into the dictionary using key \a key. + + Multiple items can have the same key, in which case only the last + item will be accessible using \l operator[](). + + \a item may not be 0. + + \sa replace() +*/ + +/*! + \fn void Q3IntDict::replace( long key, const type *item ) + + If the dictionary has key \a key, this key's item is replaced with + \a item. If the dictionary doesn't contain key \a key, \a item is + inserted into the dictionary using key \a key. + + \a item may not be 0. + + Equivalent to: + \snippet doc/src/snippets/code/doc_src_q3intdict.qdoc 1 + + If there are two or more items with equal keys, then the most + recently inserted item will be replaced. + + \sa insert() +*/ + +/*! + \fn bool Q3IntDict::remove( long key ) + + Removes the item associated with \a key from the dictionary. + Returns TRUE if successful, i.e. if the \a key is in the + dictionary; otherwise returns FALSE. + + If there are two or more items with equal keys, then the most + recently inserted item will be removed. + + The removed item is deleted if \link + Q3PtrCollection::setAutoDelete() auto-deletion\endlink is enabled. + + All dictionary iterators that refer to the removed item will be + set to point to the next item in the dictionary's traversal + order. + + \sa take(), clear(), setAutoDelete() +*/ + +/*! + \fn type *Q3IntDict::take( long key ) + + Takes the item associated with \a key out of the dictionary + without deleting it (even if \link Q3PtrCollection::setAutoDelete() + auto-deletion\endlink is enabled). + + If there are two or more items with equal keys, then the most + recently inserted item will be taken. + + Returns a pointer to the item taken out, or 0 if the key does not + exist in the dictionary. + + All dictionary iterators that refer to the taken item will be set + to point to the next item in the dictionary's traversing order. + + \sa remove(), clear(), setAutoDelete() +*/ + +/*! + \fn void Q3IntDict::clear() + + Removes all items from the dictionary. + + The removed items are deleted if \link + Q3PtrCollection::setAutoDelete() auto-deletion\endlink is enabled. + + All dictionary iterators that access this dictionary will be reset. + + \sa remove(), take(), setAutoDelete() +*/ + +/*! + \fn type *Q3IntDict::find( long key ) const + + Returns the item associated with \a key, or 0 if the key does not + exist in the dictionary. + + If there are two or more items with equal keys, then the most + recently inserted item will be found. + + Equivalent to operator[]. + + \sa operator[]() +*/ + +/*! + \fn type *Q3IntDict::operator[]( long key ) const + + Returns the item associated with \a key, or 0 if the key does not + exist in the dictionary. + + If there are two or more items with equal keys, then the most + recently inserted item will be found. + + Equivalent to the find() function. + + \sa find() +*/ + +/*! + \fn void Q3IntDict::statistics() const + + Debugging-only function that prints out the dictionary + distribution using qDebug(). +*/ + +/*! + \fn QDataStream& Q3IntDict::read( QDataStream &s, Q3PtrCollection::Item &item ) + + Reads a dictionary item from the stream \a s and returns a + reference to the stream. + + The default implementation sets \a item to 0. + + \sa write() +*/ + +/*! + \fn QDataStream& Q3IntDict::write( QDataStream &s, Q3PtrCollection::Item item ) const + + Writes a dictionary \a item to the stream \a s and returns a + reference to the stream. + + \sa read() +*/ + +/*! + \class Q3IntDictIterator + \brief The Q3IntDictIterator class provides an iterator for Q3IntDict collections. + \compat + + Q3IntDictIterator is implemented as a template class. Define a + template instance Q3IntDictIterator\<X\> to create a dictionary + iterator that operates on Q3IntDict\<X\> (dictionary of X*). + + Example: + \snippet doc/src/snippets/code/doc_src_q3intdict.qdoc 2 + + Note that the traversal order is arbitrary; you are not guaranteed the + order shown above. + + Multiple iterators may independently traverse the same dictionary. + A Q3IntDict knows about all the iterators that are operating on the + dictionary. When an item is removed from the dictionary, Q3IntDict + updates all iterators that refer the removed item to point to the + next item in the traversal order. + + \sa Q3IntDict +*/ + +/*! + \fn Q3IntDictIterator::Q3IntDictIterator( const Q3IntDict<type> &dict ) + + Constructs an iterator for \a dict. The current iterator item is + set to point to the 'first' item in the \a dict. The first item + refers to the first item in the dictionary's arbitrary internal + ordering. +*/ + +/*! + \fn Q3IntDictIterator::~Q3IntDictIterator() + + Destroys the iterator. +*/ + +/*! + \fn uint Q3IntDictIterator::count() const + + Returns the number of items in the dictionary this iterator + operates over. + + \sa isEmpty() +*/ + +/*! + \fn bool Q3IntDictIterator::isEmpty() const + + Returns TRUE if the dictionary is empty; otherwise eturns FALSE. + + \sa count() +*/ + +/*! + \fn type *Q3IntDictIterator::toFirst() + + Sets the current iterator item to point to the first item in the + dictionary and returns a pointer to the item. The first item + refers to the first item in the dictionary's arbitrary internal + ordering. If the dictionary is empty it sets the current item to + 0 and returns 0. +*/ + +/*! + \fn Q3IntDictIterator::operator type *() const + + Cast operator. Returns a pointer to the current iterator item. + Same as current(). +*/ + +/*! + \fn type *Q3IntDictIterator::current() const + + Returns a pointer to the current iterator item. +*/ + +/*! + \fn long Q3IntDictIterator::currentKey() const + + Returns the key for the current iterator item. +*/ + +/*! + \fn type *Q3IntDictIterator::operator()() + + Makes the succeeding item current and returns the original current + item. + + If the current iterator item was the last item in the dictionary + or if it was 0, 0 is returned. +*/ + +/*! + \fn type *Q3IntDictIterator::operator++() + + Prefix ++ makes the succeeding item current and returns the new + current item. + + If the current iterator item was the last item in the dictionary + or if it was 0, 0 is returned. +*/ + +/*! + \fn type *Q3IntDictIterator::operator+=( uint jump ) + + Sets the current item to the item \a jump positions after the + current item, and returns a pointer to that item. + + If that item is beyond the last item or if the dictionary is + empty, it sets the current item to 0 and returns 0. +*/ diff --git a/src/qt3support/tools/q3memarray.qdoc b/src/qt3support/tools/q3memarray.qdoc new file mode 100644 index 0000000..eb0648c --- /dev/null +++ b/src/qt3support/tools/q3memarray.qdoc @@ -0,0 +1,523 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \class Q3MemArray + \brief The Q3MemArray class is a template class that provides arrays of simple types. + \compat + + Q3MemArray is implemented as a template class. Define a template + instance Q3MemArray\<X\> to create an array that contains X items. + + Q3MemArray stores the array elements directly in the array. It can + only deal with simple types (i.e. C++ types, structs, and classes + that have no constructors, destructors, or virtual functions). + Q3MemArray uses bitwise operations to copy and compare array + elements. + + The Q3PtrVector collection class is also a kind of array. Like most + old Qt collection classes, it uses pointers to the contained items. + + Q3MemArray uses explicit sharing with a + reference count. If more than one array shares common data and one + of the arrays is modified, all the arrays are modified. + + The benefit of sharing is that a program does not need to duplicate + data when it is not required, which results in lower memory use + and less copying of data. + + Example: + \snippet doc/src/snippets/code/doc_src_q3memarray.qdoc 0 + + Program output: + \snippet doc/src/snippets/code/doc_src_q3memarray.qdoc 1 + + Note concerning the use of Q3MemArray for manipulating structs or + classes: Compilers will often pad the size of structs of odd sizes + up to the nearest word boundary. This will then be the size + Q3MemArray will use for its bitwise element comparisons. Because + the remaining bytes will typically be uninitialized, this can + cause find() etc. to fail to find the element. Example: + + \snippet doc/src/snippets/code/doc_src_q3memarray.qdoc 2 + + To work around this, make sure that you use a struct where + sizeof() returns the same as the sum of the sizes of the members + either by changing the types of the struct members or by adding + dummy members. + + Q3MemArray data can be traversed by iterators (see begin() and + end()). The number of items is returned by count(). The array can + be resized with resize() and filled using fill(). + + You can make a shallow copy of the array with assign() (or + operator=()) and a deep copy with duplicate(). + + Search for values in the array with find() and contains(). For + sorted arrays (see sort()) you can search using bsearch(). + + You can set the data directly using setRawData() and + resetRawData(), although this requires care. +*/ + +/*! \fn Q3MemArray::operator QVector<type>() const + + Automatically converts the Q3MemArray<type> into a QVector<type>. +*/ + +/*! \typedef Q3MemArray::Iterator + A Q3MemArray iterator. + \sa begin() end() +*/ +/*! \typedef Q3MemArray::ConstIterator + A const Q3MemArray iterator. + \sa begin() end() +*/ +/*! \typedef Q3MemArray::ValueType + \internal +*/ + +/*! + \fn Q3MemArray::Q3MemArray() + + Constructs a null array. + + \sa isNull() +*/ + +/*! + \fn Q3MemArray::Q3MemArray( int size ) + + Constructs an array with room for \a size elements. Makes a null + array if \a size == 0. + + The elements are left uninitialized. + + \sa resize(), isNull() +*/ + +/*! + \fn Q3MemArray::Q3MemArray( const Q3MemArray<type> &a ) + + Constructs a shallow copy of \a a. + + \sa assign() +*/ + +/*! + \fn Q3MemArray::Q3MemArray(const QVector<type> &vector) + + Constructs a copy of \a vector. +*/ + +/*! + \fn Q3MemArray::Q3MemArray(int arg1, int arg2) + + Constructs an array \e{without allocating} array space. The + arguments \a arg1 and \a arg2 should be zero. Use at your own + risk. +*/ + +/*! + \fn Q3MemArray::~Q3MemArray() + + Dereferences the array data and deletes it if this was the last + reference. +*/ + +/*! + \fn Q3MemArray<type> &Q3MemArray::operator=( const Q3MemArray<type> &a ) + + Assigns a shallow copy of \a a to this array and returns a + reference to this array. + + Equivalent to assign( a ). +*/ + +/*! + \fn type *Q3MemArray::data() const + + Returns a pointer to the actual array data. + + The array is a null array if data() == 0 (null pointer). + + \sa isNull() +*/ + +/*! + \fn uint Q3MemArray::nrefs() const + + Returns the reference count for the shared array data. This + reference count is always greater than zero. +*/ + +/*! + \fn uint Q3MemArray::size() const + + Returns the size of the array (maximum number of elements). + + The array is a null array if size() == 0. + + \sa isNull(), resize() +*/ + +/*! + \fn uint Q3MemArray::count() const + + Returns the same as size(). + + \sa size() +*/ + +/*! + \fn bool Q3MemArray::isEmpty() const + + Returns TRUE if the array is empty; otherwise returns FALSE. + + isEmpty() is equivalent to isNull() for Q3MemArray (unlike + QString). +*/ + +/*! + \fn bool Q3MemArray::isNull() const + + Returns TRUE if the array is null; otherwise returns FALSE. + + A null array has size() == 0 and data() == 0. +*/ + +/*! + \fn bool Q3MemArray::resize( uint size, Optimization optim ) + + Resizes (expands or shrinks) the array to \a size elements. The + array becomes a null array if \a size == 0. + + Returns TRUE if successful, or FALSE if the memory cannot be + allocated. + + New elements are not initialized. + + \a optim is either Q3GArray::MemOptim (the default) or + Q3GArray::SpeedOptim. When optimizing for speed rather than memory + consumption, the array uses a smart grow and shrink algorithm that + might allocate more memory than is actually needed for \a size + elements. This speeds up subsequent resize operations, for example + when appending many elements to an array, since the space has + already been allocated. + + \sa size() +*/ + +/*! + \fn bool Q3MemArray::resize( uint size ) + + \overload + + Resizes (expands or shrinks) the array to \a size elements. The + array becomes a null array if \a size == 0. + + Returns TRUE if successful, i.e. if the memory can be allocated; + otherwise returns FALSE. + + New elements are not initialized. + + \sa size() +*/ + +/*! + \fn bool Q3MemArray::truncate( uint pos ) + + Truncates the array at position \a pos. + + Returns TRUE if successful, i.e. if the memory can be allocated; + otherwise returns FALSE. + + Equivalent to resize(\a pos). + + \sa resize() +*/ + +/*! + \fn bool Q3MemArray::fill( const type &v, int size ) + + Fills the array with the value \a v. If \a size is specified as + different from -1, then the array will be resized before being + filled. + + Returns TRUE if successful, i.e. if \a size is -1, or \a size is + != -1 and the memory can be allocated; otherwise returns FALSE. + + \sa resize() +*/ + +/*! + \fn void Q3MemArray::detach() + + Detaches this array from shared array data; i.e. it makes a + private, deep copy of the data. + + Copying will be performed only if the \link nrefs() reference + count\endlink is greater than one. + + \sa copy() +*/ + +/*! + \fn Q3MemArray<type> Q3MemArray::copy() const + + Returns a deep copy of this array. + + \sa detach(), duplicate() +*/ + +/*! + \fn Q3MemArray<type> &Q3MemArray::assign( const Q3MemArray<type> &a ) + + Shallow copy. Dereferences the current array and references the + data contained in \a a instead. Returns a reference to this array. + + \sa operator=() +*/ + +/*! + \fn Q3MemArray<type> &Q3MemArray::assign( const type *data, uint size ) + + \overload + + Shallow copy. Dereferences the current array and references the + array data \a data, which contains \a size elements. Returns a + reference to this array. + + Do not delete \a data later; Q3MemArray will call free() on it + at the right time. +*/ + +/*! + \fn Q3MemArray<type> &Q3MemArray::duplicate( const Q3MemArray<type> &a ) + + Deep copy. Dereferences the current array and obtains a copy of + the data contained in \a a instead. Returns a reference to this + array. + + \sa copy() +*/ + +/*! + \fn Q3MemArray<type> &Q3MemArray::duplicate( const type *data, uint size ) + + \overload + + Deep copy. Dereferences the current array and obtains a copy of + the array data \a data instead. Returns a reference to this array. + The size of the array is given by \a size. + + \sa copy() +*/ + +/*! + \fn Q3MemArray<type> &Q3MemArray::setRawData( const type *data, uint size ) + + Sets raw data and returns a reference to the array. + + Dereferences the current array and sets the new array data to \a + data and the new array size to \a size. Do not attempt to resize + or re-assign the array data when raw data has been set. Call + resetRawData(\a data, \a size) to reset the array. + + Setting raw data is useful because it sets Q3MemArray data without + allocating memory or copying data. + + Example I (intended use): + \snippet doc/src/snippets/code/doc_src_q3memarray.qdoc 3 + + Example II (you don't want to do this): + \snippet doc/src/snippets/code/doc_src_q3memarray.qdoc 4 + + \warning If you do not call resetRawData(), Q3MemArray will attempt + to deallocate or reallocate the raw data, which might not be too + good. Be careful. + + \sa resetRawData() +*/ + +/*! + \fn void Q3MemArray::resetRawData( const type *data, uint size ) + + Removes internal references to the raw data that was set using + setRawData(). This means that Q3MemArray no longer has access to + the \a data, so you are free to manipulate \a data as you wish. + You can now use the Q3MemArray without affecting the original \a + data, for example by calling setRawData() with a pointer to some + other data. + + The arguments must be the \a data and length, \a size, that were + passed to setRawData(). This is for consistency checking. + + \sa setRawData() +*/ + +/*! + \fn int Q3MemArray::find( const type &v, uint index ) const + + Finds the first occurrence of \a v, starting at position \a index. + + Returns the position of \a v, or -1 if \a v could not be found. + + \sa contains() +*/ + +/*! + \fn int Q3MemArray::contains( const type &v ) const + + Returns the number of times \a v occurs in the array. + + \sa find() +*/ + +/*! + \fn void Q3MemArray::sort() + + Sorts the array elements in ascending order, using bitwise + comparison (memcmp()). + + \sa bsearch() +*/ + +/*! + \fn int Q3MemArray::bsearch( const type &v ) const + + In a sorted array (as sorted by sort()), finds the first + occurrence of \a v by using a binary search. For a sorted + array this is generally much faster than find(), which does + a linear search. + + Returns the position of \a v, or -1 if \a v could not be found. + + \sa sort(), find() +*/ + +/*! + \fn type &Q3MemArray::operator[]( int index ) const + + Returns a reference to the element at position \a index in the + array. + + This can be used to both read and set an element. Equivalent to + at(). + + \sa at() +*/ + +/*! + \fn type &Q3MemArray::at( uint index ) const + + Returns a reference to the element at position \a index in the array. + + This can be used to both read and set an element. + + \sa operator[]() +*/ + +/*! + \fn Q3MemArray::operator const type *() const + + Cast operator. Returns a pointer to the array. + + \sa data() +*/ + +/*! + \fn bool Q3MemArray::operator==( const Q3MemArray<type> &a ) const + + Returns TRUE if this array is equal to \a a; otherwise returns + FALSE. + + The two arrays are compared bitwise. + + \sa operator!=() +*/ + +/*! + \fn bool Q3MemArray::operator!=( const Q3MemArray<type> &a ) const + + Returns TRUE if this array is different from \a a; otherwise + returns FALSE. + + The two arrays are compared bitwise. + + \sa operator==() +*/ + +/*! + \fn Iterator Q3MemArray::begin() + + Returns an iterator pointing at the beginning of this array. This + iterator can be used in the same way as the iterators of + Q3ValueList and QMap, for example. +*/ + +/*! + \fn Iterator Q3MemArray::end() + + Returns an iterator pointing behind the last element of this + array. This iterator can be used in the same way as the iterators + of Q3ValueList and QMap, for example. +*/ + +/*! + \fn ConstIterator Q3MemArray::begin() const + + \overload + + Returns a const iterator pointing at the beginning of this array. + This iterator can be used in the same way as the iterators of + Q3ValueList and QMap, for example. +*/ + +/*! + \fn ConstIterator Q3MemArray::end() const + + \overload + + Returns a const iterator pointing behind the last element of this + array. This iterator can be used in the same way as the iterators + of Q3ValueList and QMap, for example. +*/ diff --git a/src/qt3support/tools/q3ptrdict.qdoc b/src/qt3support/tools/q3ptrdict.qdoc new file mode 100644 index 0000000..531b085 --- /dev/null +++ b/src/qt3support/tools/q3ptrdict.qdoc @@ -0,0 +1,388 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \class Q3PtrDict + \brief The Q3PtrDict class is a template class that provides a dictionary based on void* keys. + \compat + + Q3PtrDict is implemented as a template class. Define a template + instance Q3PtrDict\<X\> to create a dictionary that operates on + pointers to X (X*). + + A dictionary is a collection of key-value pairs. The key is a + void* used for insertion, removal and lookup. The value is a + pointer. Dictionaries provide very fast insertion and lookup. + + Example: + \snippet doc/src/snippets/code/doc_src_q3ptrdict.qdoc 0 + In this example we use a dictionary to add an extra property (a + char*) to the line edits we're using. + + See Q3Dict for full details, including the choice of dictionary + size, and how deletions are handled. + + \sa Q3PtrDictIterator, Q3Dict, Q3AsciiDict, Q3IntDict +*/ + + +/*! + \fn Q3PtrDict::Q3PtrDict( int size ) + + Constructs a dictionary using an internal hash array with the size + \a size. + + Setting \a size to a suitably large prime number (equal to or + greater than the expected number of entries) makes the hash + distribution better and improves lookup performance. +*/ + +/*! + \fn Q3PtrDict::Q3PtrDict( const Q3PtrDict<type> &dict ) + + Constructs a copy of \a dict. + + Each item in \a dict is inserted into this dictionary. Only the + pointers are copied (shallow copy). +*/ + +/*! + \fn Q3PtrDict::~Q3PtrDict() + + Removes all items from the dictionary and destroys it. + + All iterators that access this dictionary will be reset. + + \sa setAutoDelete() +*/ + +/*! + \fn Q3PtrDict<type> &Q3PtrDict::operator=(const Q3PtrDict<type> &dict) + + Assigns \a dict to this dictionary and returns a reference to this + dictionary. + + This dictionary is first cleared and then each item in \a dict is + inserted into the dictionary. Only the pointers are copied + (shallow copy), unless newItem() has been reimplemented. +*/ + +/*! + \fn uint Q3PtrDict::count() const + + Returns the number of items in the dictionary. + + \sa isEmpty() +*/ + +/*! + \fn uint Q3PtrDict::size() const + + Returns the size of the internal hash table (as specified in the + constructor). + + \sa count() +*/ + +/*! + \fn void Q3PtrDict::resize( uint newsize ) + + Changes the size of the hash table to \a newsize. The contents of + the dictionary are preserved, but all iterators on the dictionary + become invalid. +*/ + +/*! + \fn bool Q3PtrDict::isEmpty() const + + Returns TRUE if the dictionary is empty; otherwise returns FALSE. + + \sa count() +*/ + +/*! + \fn void Q3PtrDict::insert( void *key, const type *item ) + + Inserts the \a key with the \a item into the dictionary. + + Multiple items can have the same key, in which case only the last + item will be accessible using \l operator[](). + + \a item may not be 0. + + \sa replace() +*/ + +/*! + \fn void Q3PtrDict::replace( void *key, const type *item ) + + If the dictionary has key \a key, this key's item is replaced with + \a item. If the dictionary doesn't contain key \a key, \a item is + inserted into the dictionary using key \a key. + + \a item may not be 0. + + Equivalent to + \snippet doc/src/snippets/code/doc_src_q3ptrdict.qdoc 1 + + If there are two or more items with equal keys, then the most + recently inserted item will be replaced. + + \sa insert() +*/ + +/*! + \fn bool Q3PtrDict::remove( void *key ) + + Removes the item associated with \a key from the dictionary. + Returns TRUE if successful, i.e. if \a key is in the dictionary; + otherwise returns FALSE. + + If there are two or more items with equal keys, then the most + recently inserted item will be removed. + + The removed item is deleted if \link + Q3PtrCollection::setAutoDelete() auto-deletion\endlink is enabled. + + All dictionary iterators that refer to the removed item will be + set to point to the next item in the dictionary traversal order. + + \sa take(), clear(), setAutoDelete() +*/ + +/*! + \fn type *Q3PtrDict::take( void *key ) + + Takes the item associated with \a key out of the dictionary + without deleting it (even if \link Q3PtrCollection::setAutoDelete() + auto-deletion\endlink is enabled). + + If there are two or more items with equal keys, then the most + recently inserted item will be removed. + + Returns a pointer to the item taken out, or 0 if the key does not + exist in the dictionary. + + All dictionary iterators that refer to the taken item will be set + to point to the next item in the dictionary traversal order. + + \sa remove(), clear(), setAutoDelete() +*/ + +/*! + \fn void Q3PtrDict::clear() + + Removes all items from the dictionary. + + The removed items are deleted if \link + Q3PtrCollection::setAutoDelete() auto-deletion\endlink is enabled. + + All dictionary iterators that access this dictionary will be + reset. + + \sa remove(), take(), setAutoDelete() +*/ + +/*! + \fn type *Q3PtrDict::find( void *key ) const + + Returns the item associated with \a key, or 0 if the key does not + exist in the dictionary. + + If there are two or more items with equal keys, then the most + recently inserted item will be found. + + Equivalent to operator[]. + + \sa operator[]() +*/ + +/*! + \fn type *Q3PtrDict::operator[]( void *key ) const + + Returns the item associated with \a key, or 0 if the key does not + exist in the dictionary. + + If there are two or more items with equal keys, then the most + recently inserted item will be found. + + Equivalent to the find() function. + + \sa find() +*/ + +/*! + \fn void Q3PtrDict::statistics() const + + Debugging-only function that prints out the dictionary + distribution using qDebug(). +*/ + +/*! + \fn QDataStream& Q3PtrDict::read( QDataStream &s, Q3PtrCollection::Item &item ) + + Reads a dictionary item from the stream \a s and returns a + reference to the stream. + + The default implementation sets \a item to 0. + + \sa write() +*/ + +/*! + \fn QDataStream& Q3PtrDict::write( QDataStream &s, Q3PtrCollection::Item item) const + + Writes a dictionary \a item to the stream \a s and returns a + reference to the stream. + + \sa read() +*/ + +/*! + \class Q3PtrDictIterator + \brief The Q3PtrDictIterator class provides an iterator for Q3PtrDict collections. + \compat + + Q3PtrDictIterator is implemented as a template class. Define a + template instance Q3PtrDictIterator\<X\> to create a dictionary + iterator that operates on Q3PtrDict\<X\> (dictionary of X*). + + Example: + \snippet doc/src/snippets/code/doc_src_q3ptrdict.qdoc 2 + In the example we insert some line edits into a dictionary, + associating a string with each. We then iterate over the + dictionary printing the associated strings. + + Multiple iterators may independently traverse the same dictionary. + A Q3PtrDict knows about all the iterators that are operating on the + dictionary. When an item is removed from the dictionary, Q3PtrDict + updates all iterators that refer the removed item to point to the + next item in the traversing order. + + \sa Q3PtrDict +*/ + +/*! + \fn Q3PtrDictIterator::Q3PtrDictIterator( const Q3PtrDict<type> &dict ) + + Constructs an iterator for \a dict. The current iterator item is + set to point on the first item in the \a dict. +*/ + +/*! + \fn Q3PtrDictIterator::~Q3PtrDictIterator() + + Destroys the iterator. +*/ + +/*! + \fn uint Q3PtrDictIterator::count() const + + Returns the number of items in the dictionary this iterator + operates on. + + \sa isEmpty() +*/ + +/*! + \fn bool Q3PtrDictIterator::isEmpty() const + + Returns TRUE if the dictionary is empty; otherwise returns FALSE. + + \sa count() +*/ + +/*! + \fn type *Q3PtrDictIterator::toFirst() + + Sets the current iterator item to point to the first item in the + dictionary and returns a pointer to the item. If the dictionary is + empty, it sets the current item to 0 and returns 0. +*/ + +/*! + \fn Q3PtrDictIterator::operator type *() const + + Cast operator. Returns a pointer to the current iterator item. + Same as current(). +*/ + +/*! + \fn type *Q3PtrDictIterator::current() const + + Returns a pointer to the current iterator item's value. +*/ + +/*! + \fn void *Q3PtrDictIterator::currentKey() const + + Returns the current iterator item's key. +*/ + +/*! + \fn type *Q3PtrDictIterator::operator()() + + Makes the succeeding item current and returns the original current + item. + + If the current iterator item was the last item in the dictionary + or if it was 0, 0 is returned. +*/ + +/*! + \fn type *Q3PtrDictIterator::operator++() + + Prefix ++ makes the succeeding item current and returns the new + current item. + + If the current iterator item was the last item in the dictionary + or if it was 0, 0 is returned. +*/ + +/*! + \fn type *Q3PtrDictIterator::operator+=( uint jump ) + + Sets the current item to the item \a jump positions after the + current item and returns a pointer to that item. + + If that item is beyond the last item or if the dictionary is + empty, it sets the current item to 0 and returns 0. +*/ diff --git a/src/qt3support/tools/q3ptrlist.qdoc b/src/qt3support/tools/q3ptrlist.qdoc new file mode 100644 index 0000000..b2b9c3f --- /dev/null +++ b/src/qt3support/tools/q3ptrlist.qdoc @@ -0,0 +1,1157 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \class Q3PtrList + \brief The Q3PtrList class is a template class that provides a list. + \compat + + Q3ValueList is an STL-compatible alternative to this class. + + Define a template instance Q3PtrList\<X\> to create a list that + operates on pointers to X (X*). + + The list class is indexable and has a \link at() current + index\endlink and a \link current() current item\endlink. The + first item corresponds to index position 0. The current index is + -1 if the current item is 0. + + Items are inserted with prepend(), insert() or append(). Items are + removed with remove(), removeRef(), removeFirst() and + removeLast(). You can search for an item using find(), findNext(), + findRef() or findNextRef(). The list can be sorted with sort(). + You can count the number of occurrences of an item with contains() + or containsRef(). You can get a pointer to the current item with + current(), to an item at a particular index position in the list + with at() or to the first or last item with getFirst() and + getLast(). You can also iterate over the list with first(), + last(), next() and prev() (which all update current()). The list's + deletion property is set with setAutoDelete(). + + \target example + Example: + \snippet doc/src/snippets/code/doc_src_q3ptrlist.qdoc 0 + + The output is + \snippet doc/src/snippets/code/doc_src_q3ptrlist.qdoc 1 + + Q3PtrList has several member functions for traversing the list, but + using a Q3PtrListIterator can be more practical. Multiple list + iterators may traverse the same list, independently of each other + and of the current list item. + + In the example above we make the call setAutoDelete(true). + Enabling auto-deletion tells the list to delete items that are + removed. The default is to not delete items when they are removed + but this would cause a memory leak in the example because there + are no other references to the list items. + + When inserting an item into a list only the pointer is copied, not + the item itself, i.e. a shallow copy. It is possible to make the + list copy all of the item's data (deep copy) when an item is + inserted. insert(), inSort() and append() call the virtual + function Q3PtrCollection::newItem() for the item to be inserted. + Inherit a list and reimplement newItem() to have deep copies. + + When removing an item from a list, the virtual function + Q3PtrCollection::deleteItem() is called. Q3PtrList's default + implementation is to delete the item if auto-deletion is enabled. + + The virtual function compareItems() can be reimplemented to + compare two list items. This function is called from all list + functions that need to compare list items, for instance + remove(const type*). If you only want to deal with pointers, there + are functions that compare pointers instead, for instance + removeRef(const type*). These functions are somewhat faster than + those that call compareItems(). + + List items are stored as \c void* in an internal Q3LNode, which + also holds pointers to the next and previous list items. The + functions currentNode(), removeNode(), and takeNode() operate + directly on the Q3LNode, but they should be used with care. The + data component of the node is available through Q3LNode::getData(). + + The Q3StrList class is a list of \c char*. + It reimplements newItem(), deleteItem() and compareItems(). (But + see QStringList for a list of Unicode QStrings.) + + \sa Q3PtrListIterator +*/ + + +/*! + \fn Q3PtrList::Q3PtrList() + + Constructs an empty list. +*/ + +/*! + \fn Q3PtrList::Q3PtrList( const Q3PtrList<type> &list ) + + Constructs a copy of \a list. + + Each item in \a list is \link append() appended\endlink to this + list. Only the pointers are copied (shallow copy). +*/ + +/*! + \fn Q3PtrList::~Q3PtrList() + + Removes all items from the list and destroys the list. + + All list iterators that access this list will be reset. + + \sa setAutoDelete() +*/ + +/*! + \fn Q3PtrList<type> &Q3PtrList::operator=(const Q3PtrList<type> &list) + + Assigns \a list to this list and returns a reference to this list. + + This list is first cleared and then each item in \a list is \link + append() appended\endlink to this list. Only the pointers are + copied (shallow copy) unless newItem() has been reimplemented. +*/ + +/*! + \fn bool Q3PtrList::operator==(const Q3PtrList<type> &list ) const + + Compares this list with \a list. Returns TRUE if the lists contain + the same data; otherwise returns FALSE. +*/ + +/*! + \fn uint Q3PtrList::count() const + + Returns the number of items in the list. + + \sa isEmpty() +*/ + +/*! + \fn bool Q3PtrList::operator!=(const Q3PtrList<type> &list ) const + + Compares this list with \a list. Returns TRUE if the lists contain + different data; otherwise returns FALSE. +*/ + + +/*! + \fn void Q3PtrList::sort() + + Sorts the list by the result of the virtual compareItems() + function. + + The heap sort algorithm is used for sorting. It sorts n items with + O(n*log n) comparisons. This is the asymptotic optimal solution of + the sorting problem. + + If the items in your list support operator<() and operator==(), + you might be better off with Q3SortedList because it implements the + compareItems() function for you using these two operators. + + \sa inSort() +*/ + +/*! + \fn bool Q3PtrList::isEmpty() const + + Returns TRUE if the list is empty; otherwise returns FALSE. + + \sa count() +*/ + +/*! + \fn bool Q3PtrList::insert( uint index, const type *item ) + + Inserts the \a item at position \a index in the list. + + Returns TRUE if successful, i.e. if \a index is in range; + otherwise returns FALSE. The valid range is 0 to count() + (inclusively). The item is appended if \a index == count(). + + The inserted item becomes the current list item. + + \a item must not be 0. + + \sa append(), current(), replace() +*/ + +/*! + \fn bool Q3PtrList::replace( uint index, const type *item ) + + Replaces the item at position \a index with the new \a item. + + Returns TRUE if successful, i.e. \a index is in the range 0 to + count()-1. + + \sa append(), current(), insert() +*/ + +/*! + \fn void Q3PtrList::inSort( const type *item ) + + Inserts the \a item at its sorted position in the list. + + The sort order depends on the virtual compareItems() function. All + items must be inserted with inSort() to maintain the sorting + order. + + The inserted item becomes the current list item. + + \a item must not be 0. + + \warning Using inSort() is slow. An alternative, especially if you + have lots of items, is to simply append() or insert() them and + then use sort(). inSort() takes up to O(n) compares. That means + inserting n items in your list will need O(n^2) compares whereas + sort() only needs O(n*log n) for the same task. So use inSort() + only if you already have a presorted list and want to insert just + a few additional items. + + \sa insert(), compareItems(), current(), sort() +*/ + +/*! + \fn void Q3PtrList::append( const type *item ) + + Inserts the \a item at the end of the list. + + The inserted item becomes the current list item. This is + equivalent to \c{insert( count(), item )}. + + \a item must not be 0. + + \sa insert(), current(), prepend() +*/ + +/*! + \fn void Q3PtrList::prepend( const type *item ) + + Inserts the \a item at the start of the list. + + The inserted item becomes the current list item. This is + equivalent to \c{insert( 0, item )}. + + \a item must not be 0. + + \sa append(), insert(), current() +*/ + +/*! + \fn bool Q3PtrList::remove( uint index ) + + Removes the item at position \a index in the list. + + Returns TRUE if successful, i.e. if \a index is in range; + otherwise returns FALSE. The valid range is \c{0..(count() - 1)} + inclusive. + + The removed item is deleted if \link setAutoDelete() + auto-deletion\endlink is enabled. + + The item after the removed item becomes the new current list item + if the removed item is not the last item in the list. If the last + item is removed, the new last item becomes the current item. + + All list iterators that refer to the removed item will be set to + point to the new current item. + + \sa take(), clear(), setAutoDelete(), current() removeRef() +*/ + +/*! + \fn bool Q3PtrList::remove() + + \overload + + Removes the current list item. + + Returns TRUE if successful, i.e. if the current item isn't 0; + otherwise returns FALSE. + + The removed item is deleted if \link setAutoDelete() + auto-deletion\endlink is enabled. + + The item after the removed item becomes the new current list item + if the removed item is not the last item in the list. If the last + item is removed, the new last item becomes the current item. The + current item is set to 0 if the list becomes empty. + + All list iterators that refer to the removed item will be set to + point to the new current item. + + \sa take(), clear(), setAutoDelete(), current() removeRef() +*/ + +/*! + \fn bool Q3PtrList::remove( const type *item ) + + \overload + + Removes the first occurrence of \a item from the list. + + Returns TRUE if successful, i.e. if \a item is in the list; + otherwise returns FALSE. + + The removed item is deleted if \link setAutoDelete() + auto-deletion\endlink is enabled. + + The compareItems() function is called when searching for the item + in the list. If compareItems() is not reimplemented, it is more + efficient to call removeRef(). + + If \a item is NULL then the current item is removed from the list. + + The item after the removed item becomes the new current list item + if the removed item is not the last item in the list. If the last + item is removed, the new last item becomes the current item. The + current item is set to 0 if the list becomes empty. + + All list iterators that refer to the removed item will be set to + point to the new current item. + + \sa removeRef(), take(), clear(), setAutoDelete(), compareItems(), + current() +*/ + +/*! + \fn bool Q3PtrList::removeRef( const type *item ) + + Removes the first occurrence of \a item from the list. + + Returns TRUE if successful, i.e. if \a item is in the list; + otherwise returns FALSE. + + The removed item is deleted if \link setAutoDelete() + auto-deletion\endlink is enabled. + + Equivalent to: + \snippet doc/src/snippets/code/doc_src_q3ptrlist.qdoc 2 + + The item after the removed item becomes the new current list item + if the removed item is not the last item in the list. If the last + item is removed, the new last item becomes the current item. The + current item is set to 0 if the list becomes empty. + + All list iterators that refer to the removed item will be set to + point to the new current item. + + \sa remove(), clear(), setAutoDelete(), current() +*/ + +/*! + \fn void Q3PtrList::removeNode( Q3LNode *node ) + + Removes the \a node from the list. + + This node must exist in the list, otherwise the program may crash. + + The removed item is deleted if \link setAutoDelete() + auto-deletion\endlink is enabled. + + The first item in the list will become the new current list item. + The current item is set to 0 if the list becomes empty. + + All list iterators that refer to the removed item will be set to + point to the item succeeding this item or to the preceding item if + the removed item was the last item. + + \warning Do not call this function unless you are an expert. + + \sa takeNode(), currentNode() remove() removeRef() +*/ + +/*! + \fn bool Q3PtrList::removeFirst() + + Removes the first item from the list. Returns TRUE if successful, + i.e. if the list isn't empty; otherwise returns FALSE. + + The removed item is deleted if \link setAutoDelete() + auto-deletion\endlink is enabled. + + The first item in the list becomes the new current list item. The + current item is set to 0 if the list becomes empty. + + All list iterators that refer to the removed item will be set to + point to the new current item. + + \sa removeLast(), setAutoDelete(), current() remove() +*/ + +/*! + \fn bool Q3PtrList::removeLast() + + Removes the last item from the list. Returns TRUE if successful, + i.e. if the list isn't empty; otherwise returns FALSE. + + The removed item is deleted if \link setAutoDelete() + auto-deletion\endlink is enabled. + + The last item in the list becomes the new current list item. The + current item is set to 0 if the list becomes empty. + + All list iterators that refer to the removed item will be set to + point to the new current item. + + \sa removeFirst(), setAutoDelete(), current() +*/ + +/*! + \fn type *Q3PtrList::take( uint index ) + + Takes the item at position \a index out of the list without + deleting it (even if \link setAutoDelete() auto-deletion\endlink + is enabled). + + Returns a pointer to the item taken out of the list, or 0 if the + index is out of range. The valid range is \c{0..(count() - 1)} + inclusive. + + The item after the removed item becomes the new current list item + if the removed item is not the last item in the list. If the last + item is removed, the new last item becomes the current item. The + current item is set to 0 if the list becomes empty. + + All list iterators that refer to the taken item will be set to + point to the new current item. + + \sa remove(), clear(), current() +*/ + +/*! + \fn type *Q3PtrList::take() + + \overload + + Takes the current item out of the list without deleting it (even + if \link setAutoDelete() auto-deletion\endlink is enabled). + + Returns a pointer to the item taken out of the list, or 0 if + the current item is 0. + + The item after the removed item becomes the new current list item + if the removed item is not the last item in the list. If the last + item is removed, the new last item becomes the current item. The + current item is set to 0 if the list becomes empty. + + All list iterators that refer to the taken item will be set to + point to the new current item. + + \sa remove(), clear(), current() +*/ + +/*! + \fn type *Q3PtrList::takeNode( Q3LNode *node ) + + Takes the \a node out of the list without deleting its item (even + if \link setAutoDelete() auto-deletion\endlink is enabled). + Returns a pointer to the item taken out of the list. + + This node must exist in the list, otherwise the program may crash. + + The first item in the list becomes the new current list item. + + All list iterators that refer to the taken item will be set to + point to the item succeeding this item or to the preceding item if + the taken item was the last item. + + \warning Do not call this function unless you are an expert. + + \sa removeNode(), currentNode() +*/ + +/*! + \fn void Q3PtrList::clear() + + Removes all items from the list. + + The removed items are deleted if \link setAutoDelete() + auto-deletion\endlink is enabled. + + All list iterators that access this list will be reset. + + \sa remove(), take(), setAutoDelete() +*/ + +/*! + \fn int Q3PtrList::find( const type *item ) + + Finds the first occurrence of \a item in the list. + + If the item is found, the list sets the current item to point to + the found item and returns the index of this item. If the item is + not found, the list sets the current item to 0, the current + index to -1, and returns -1. + + The compareItems() function is called when searching for the item + in the list. If compareItems() is not reimplemented, it is more + efficient to call findRef(). + + \sa findNext(), findRef(), compareItems(), current() +*/ + +/*! + \fn int Q3PtrList::findNext( const type *item ) + + Finds the next occurrence of \a item in the list, starting from + the current list item. + + If the item is found, the list sets the current item to point to + the found item and returns the index of this item. If the item is + not found, the list sets the current item to 0, the current + index to -1, and returns -1. + + The compareItems() function is called when searching for the item + in the list. If compareItems() is not reimplemented, it is more + efficient to call findNextRef(). + + \sa find(), findNextRef(), compareItems(), current() +*/ + +/*! + \fn int Q3PtrList::findRef( const type *item ) + + Finds the first occurrence of \a item in the list. + + If the item is found, the list sets the current item to point to + the found item and returns the index of this item. If the item is + not found, the list sets the current item to 0, the current + index to -1, and returns -1. + + Calling this function is much faster than find() because find() + compares \a item with each list item using compareItems(), whereas + this function only compares the pointers. + + \sa findNextRef(), find(), current() +*/ + +/*! + \fn int Q3PtrList::findNextRef( const type *item ) + + Finds the next occurrence of \a item in the list, starting from + the current list item. + + If the item is found, the list sets the current item to point to + the found item and returns the index of this item. If the item is + not found, the list sets the current item to 0, the current + index to -1, and returns -1. + + Calling this function is much faster than findNext() because + findNext() compares \a item with each list item using + compareItems(), whereas this function only compares the pointers. + + \sa findRef(), findNext(), current() +*/ + +/*! + \fn uint Q3PtrList::contains( const type *item ) const + + Returns the number of occurrences of \a item in the list. + + The compareItems() function is called when looking for the \a item + in the list. If compareItems() is not reimplemented, it is more + efficient to call containsRef(). + + This function does not affect the current list item. + + \sa containsRef(), compareItems() +*/ + +/*! + \fn uint Q3PtrList::containsRef( const type *item ) const + + Returns the number of occurrences of \a item in the list. + + Calling this function is much faster than contains() because + contains() compares \a item with each list item using + compareItems(), whereas his function only compares the pointers. + + This function does not affect the current list item. + + \sa contains() +*/ + +/*! + \fn type *Q3PtrList::at( uint index ) + + Returns a pointer to the item at position \a index in the list, or + 0 if the index is out of range. + + Sets the current list item to this item if \a index is valid. The + valid range is \c{0..(count() - 1)} inclusive. + + This function is very efficient. It starts scanning from the first + item, last item, or current item, whichever is closest to \a + index. + + \sa current() +*/ + +/*! + \fn int Q3PtrList::at() const + + \overload + + Returns the index of the current list item. The returned value is + -1 if the current item is 0. + + \sa current() +*/ + +/*! + \fn type *Q3PtrList::current() const + + Returns a pointer to the current list item. The current item may + be 0 (implies that the current index is -1). + + \sa at() +*/ + +/*! + \fn Q3LNode *Q3PtrList::currentNode() const + + Returns a pointer to the current list node. + + The node can be kept and removed later using removeNode(). The + advantage is that the item can be removed directly without + searching the list. + + \warning Do not call this function unless you are an expert. + + \sa removeNode(), takeNode(), current() +*/ + +/*! + \fn type *Q3PtrList::getFirst() const + + Returns a pointer to the first item in the list, or 0 if the list + is empty. + + This function does not affect the current list item. + + \sa first(), getLast() +*/ + +/*! + \fn type *Q3PtrList::getLast() const + + Returns a pointer to the last item in the list, or 0 if the list + is empty. + + This function does not affect the current list item. + + \sa last(), getFirst() +*/ + +/*! + \fn type *Q3PtrList::first() + + Returns a pointer to the first item in the list and makes this the + current list item; returns 0 if the list is empty. + + \sa getFirst(), last(), next(), prev(), current() +*/ + +/*! + \fn type *Q3PtrList::last() + + Returns a pointer to the last item in the list and makes this the + current list item; returns 0 if the list is empty. + + \sa getLast(), first(), next(), prev(), current() +*/ + +/*! + \fn type *Q3PtrList::next() + + Returns a pointer to the item succeeding the current item. Returns + 0 if the current item is 0 or equal to the last item. + + Makes the succeeding item current. If the current item before this + function call was the last item, the current item will be set to + 0. If the current item was 0, this function does nothing. + + \sa first(), last(), prev(), current() +*/ + +/*! + \fn type *Q3PtrList::prev() + + Returns a pointer to the item preceding the current item. Returns + 0 if the current item is 0 or equal to the first item. + + Makes the preceding item current. If the current item before this + function call was the first item, the current item will be set to + 0. If the current item was 0, this function does nothing. + + \sa first(), last(), next(), current() +*/ + +/*! + \fn void Q3PtrList::toVector( Q3GVector *vec ) const + + Stores all list items in the vector \a vec. + + The vector must be of the same item type, otherwise the result + will be undefined. +*/ + +/*! + \typedef Q3PtrList::iterator + + \internal +*/ + +/*! + \typedef Q3PtrList::Iterator + + \internal +*/ + +/*! + \typedef Q3PtrList::ConstIterator + + \internal +*/ + +/*! + \typedef Q3PtrList::const_iterator + + \internal +*/ + +/*! + \fn Q3PtrList::constBegin() const + + \internal +*/ + +/*! + \fn Q3PtrList::constEnd() const + + \internal +*/ + +/*! + \fn Q3PtrList::erase(Iterator) + + \internal +*/ + + +/***************************************************************************** + Q3PtrListIterator documentation + *****************************************************************************/ + +/*! + \class Q3PtrListIterator + \brief The Q3PtrListIterator class provides an iterator for + Q3PtrList collections. + \compat + + Define a template instance Q3PtrListIterator\<X\> to create a list + iterator that operates on Q3PtrList\<X\> (list of X*). + + The following example is similar to the + example in the Q3PtrList class documentation, + but it uses Q3PtrListIterator. The class Employee is + defined there. + + \snippet doc/src/snippets/code/doc_src_q3ptrlist.qdoc 3 + + The output is + \snippet doc/src/snippets/code/doc_src_q3ptrlist.qdoc 4 + + Using a list iterator is a more robust way of traversing the list + than using the Q3PtrList member functions \link Q3PtrList::first() + first\endlink(), \link Q3PtrList::next() next\endlink(), \link + Q3PtrList::current() current\endlink(), etc., as many iterators can + traverse the same list independently. + + An iterator has its own current list item and can get the next and + previous list items. It doesn't modify the list in any way. + + When an item is removed from the list, all iterators that point to + that item are updated to point to Q3PtrList::current() instead to + avoid dangling references. + + \sa Q3PtrList +*/ + +/*! + \fn Q3PtrListIterator::Q3PtrListIterator( const Q3PtrList<type> &list ) + + Constructs an iterator for \a list. The current iterator item is + set to point on the first item in the \a list. +*/ + +/*! + \fn Q3PtrListIterator::~Q3PtrListIterator() + + Destroys the iterator. +*/ + +/*! + \fn uint Q3PtrListIterator::count() const + + Returns the number of items in the list this iterator operates on. + + \sa isEmpty() +*/ + +/*! + \fn bool Q3PtrListIterator::isEmpty() const + + Returns TRUE if the list is empty; otherwise returns FALSE. + + \sa count() +*/ + +/*! + \fn bool Q3PtrListIterator::atFirst() const + + Returns TRUE if the current iterator item is the first list item; + otherwise returns FALSE. + + \sa toFirst(), atLast() +*/ + +/*! + \fn bool Q3PtrListIterator::atLast() const + + Returns TRUE if the current iterator item is the last list item; + otherwise returns FALSE. + + \sa toLast(), atFirst() +*/ + +/*! + \fn type *Q3PtrListIterator::toFirst() + + Sets the current iterator item to point to the first list item and + returns a pointer to the item. Sets the current item to 0 and + returns 0 if the list is empty. + + \sa toLast(), atFirst() +*/ + +/*! + \fn type *Q3PtrListIterator::toLast() + + Sets the current iterator item to point to the last list item and + returns a pointer to the item. Sets the current item to 0 and + returns 0 if the list is empty. + + \sa toFirst(), atLast() +*/ + +/*! + \fn Q3PtrListIterator::operator type *() const + + Cast operator. Returns a pointer to the current iterator item. + Same as current(). +*/ + +/*! + \fn type *Q3PtrListIterator::operator*() + + Asterisk operator. Returns a pointer to the current iterator item. + Same as current(). +*/ + +/*! + \fn type *Q3PtrListIterator::current() const + + Returns a pointer to the current iterator item. If the iterator is + positioned before the first item in the list or after the last + item in the list, 0 is returned. +*/ + +/*! + \fn type *Q3PtrListIterator::operator()() + + Makes the succeeding item current and returns the original current + item. + + If the current iterator item was the last item in the list or if + it was 0, 0 is returned. +*/ + +/*! + \fn type *Q3PtrListIterator::operator++() + + Prefix ++ makes the succeeding item current and returns the new + current item. + + If the current iterator item was the last item in the list or if + it was 0, 0 is returned. +*/ + +/*! + \fn type *Q3PtrListIterator::operator+=( uint jump ) + + Sets the current item to the item \a jump positions after the + current item and returns a pointer to that item. + + If that item is beyond the last item or if the list is empty, it + sets the current item to 0 and returns 0 +*/ + +/*! + \fn type *Q3PtrListIterator::operator--() + + Prefix - makes the preceding item current and returns the new + current item. + + If the current iterator item was the first item in the list or if + it was 0, 0 is returned. +*/ + +/*! + \fn type *Q3PtrListIterator::operator-=( uint jump ) + + Returns the item \a jump positions before the current item or 0 + if it is beyond the first item. Makes this the current item. +*/ + +/*! + \fn Q3PtrListIterator<type>& Q3PtrListIterator::operator=( const Q3PtrListIterator<type> &it ) + + Assignment. Makes a copy of the iterator \a it and returns a + reference to this iterator. +*/ + +/*! + \class Q3StrList + \brief The Q3StrList class provides a doubly-linked list of char*. + \compat + + If you want a string list of \l{QString}s use QStringList. + + This class is a Q3PtrList\<char\> instance (a list of char*). + + Q3StrList can make deep or shallow copies of the strings that are + inserted. + + A deep copy means that memory is allocated for the string and then + the string data is copied into that memory. A shallow copy is just + a copy of the pointer value and not of the string data itself. + + The disadvantage of shallow copies is that because a pointer can + be deleted only once, the program must put all strings in a + central place and know when it is safe to delete them (i.e. when + the strings are no longer referenced by other parts of the + program). This can make the program more complex. The advantage of + shallow copies is that they consume far less memory than deep + copies. It is also much faster to copy a pointer (typically 4 or 8 + bytes) than to copy string data. + + A Q3StrList that operates on deep copies will, by default, turn on + auto-deletion (see setAutoDelete()). Thus, by default Q3StrList + will deallocate any string copies it allocates. + + The virtual compareItems() function is reimplemented and does a + case-sensitive string comparison. The inSort() function will + insert strings in sorted order. In general it is fastest to insert + the strings as they come and sort() at the end; inSort() is useful + when you just have to add a few extra strings to an already sorted + list. + + The Q3StrListIterator class is an iterator for Q3StrList. +*/ + +/*! + \fn Q3StrList::operator QList<QByteArray>() const + + Automatically converts a Q3StrList into a QList<QByteArray>. +*/ + +/*! + \fn Q3StrList::Q3StrList( bool deepCopies ) + + Constructs an empty list of strings. Will make deep copies of all + inserted strings if \a deepCopies is TRUE, or use shallow copies + if \a deepCopies is FALSE. +*/ + +/*! + \fn Q3StrList::Q3StrList(const Q3StrList &list) + \fn Q3StrList::Q3StrList(const QList<QByteArray> &list) + + Constructs a copy of \a list. +*/ + +/*! + \fn Q3StrList::~Q3StrList() + + Destroys the list. All strings are removed. +*/ + +/*! + \fn Q3StrList& Q3StrList::operator=(const Q3StrList& list) + \fn Q3StrList &Q3StrList::operator=(const QList<QByteArray> &list) + + Assigns \a list to this list and returns a reference to this list. +*/ + +/*! + \class Q3StrIList + \brief The Q3StrIList class provides a doubly-linked list of char* + with case-insensitive comparison. + \compat + + This class is a Q3PtrList\<char\> instance (a list of char*). + + Q3StrIList is identical to Q3StrList except that the virtual + compareItems() function is reimplemented to compare strings + case-insensitively. The inSort() function inserts strings in a + sorted order. In general it is fastest to insert the strings as + they come and sort() at the end; inSort() is useful when you just + have to add a few extra strings to an already sorted list. + + The Q3StrListIterator class works for Q3StrIList. + + \sa QStringList +*/ + +/*! + \fn Q3StrIList::Q3StrIList( bool deepCopies ) + + Constructs a list of strings. Will make deep copies of all + inserted strings if \a deepCopies is TRUE, or use shallow copies + if \a deepCopies is FALSE. +*/ + +/*! + \fn Q3StrIList::~Q3StrIList() + + Destroys the list. All strings are removed. +*/ + +/*! + \fn int Q3PtrList::compareItems( Q3PtrCollection::Item item1, + Q3PtrCollection::Item item2 ) + + This virtual function compares two list items. + + Returns: + \list + \i zero if \a item1 == \a item2 + \i nonzero if \a item1 != \a item2 + \endlist + + This function returns \e int rather than \e bool so that + reimplementations can return three values and use it to sort by: + + \list + \i 0 if \a item1 == \a item2 + \i \> 0 (positive integer) if \a item1 \> \a item2 + \i \< 0 (negative integer) if \a item1 \< \a item2 + \endlist + + inSort() requires that compareItems() is implemented as described + here. + + This function should not modify the list because some const + functions call compareItems(). + + The default implementation compares the pointers. +*/ + +/*! + \fn QDataStream& Q3PtrList::read( QDataStream& s, + Q3PtrCollection::Item& item ) + + Reads a list item from the stream \a s and returns a reference to + the stream. + + The default implementation sets \a item to 0. + + \sa write() +*/ + +/*! + \fn QDataStream& Q3PtrList::write( QDataStream& s, + Q3PtrCollection::Item item ) const + + Writes a list item, \a item to the stream \a s and returns a + reference to the stream. + + The default implementation does nothing. + + \sa read() +*/ + +/*! \fn iterator Q3PtrList::begin() +\internal +*/ +/*! \fn const_iterator Q3PtrList::begin() const +\internal +*/ +/*! \fn iterator Q3PtrList::end() +\internal +*/ +/*! \fn const_iterator Q3PtrList::end() const +\internal +*/ + +/*! + \class Q3StrListIterator + \brief The Q3StrListIterator class is an iterator for the Q3StrList + and Q3StrIList classes. + \compat + + This class is a Q3PtrListIterator\<char\> instance. It can traverse + the strings in the Q3StrList and Q3StrIList classes. +*/ + + +/* + \class Q3PtrListAutoDelete + \brief The Q3PtrListAutoDelete class is a template class that provides a list that auto-deletes its data. + \compat + + A Q3PtrListAutoDelete is identical to a Q3PtrList with + setAutoDelete(TRUE). +*/ diff --git a/src/qt3support/tools/q3ptrqueue.qdoc b/src/qt3support/tools/q3ptrqueue.qdoc new file mode 100644 index 0000000..c60193c --- /dev/null +++ b/src/qt3support/tools/q3ptrqueue.qdoc @@ -0,0 +1,230 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \class Q3PtrQueue + \brief The Q3PtrQueue class is a template class that provides a queue. + \compat + + Q3ValueVector can be used as an STL-compatible alternative to this + class. + + A template instance Q3PtrQueue\<X\> is a queue that operates on + pointers to X (X*). + + A queue is a first in, first out structure. Items are added to the + tail of the queue with enqueue() and retrieved from the head with + dequeue(). You can peek at the head item without dequeing it using + head(). + + You can control the queue's deletion policy with setAutoDelete(). + + For compatibility with the Q3PtrCollection classes, current() and + remove() are provided; both operate on the head(). + + \sa Q3PtrList Q3PtrStack +*/ + +/*! + \fn Q3PtrQueue::Q3PtrQueue () + + Creates an empty queue with autoDelete() set to FALSE. +*/ + +/*! + \fn Q3PtrQueue::Q3PtrQueue( const Q3PtrQueue<type>& queue ) + + Creates a queue from \a queue. + + Only the pointers are copied; the items are not. The autoDelete() + flag is set to FALSE. +*/ + +/*! + \fn Q3PtrQueue::~Q3PtrQueue() + + Destroys the queue. Items in the queue are deleted if autoDelete() + is TRUE. +*/ + +/*! + \fn Q3PtrQueue<type>& Q3PtrQueue::operator= (const Q3PtrQueue<type>& queue) + + Assigns \a queue to this queue and returns a reference to this + queue. + + This queue is first cleared and then each item in \a queue is + enqueued to this queue. Only the pointers are copied. + + \warning The autoDelete() flag is not modified. If it is TRUE for + both \a queue and this queue, deleting the two lists will cause \e + double-deletion of the items. +*/ + +/*! + \fn bool Q3PtrQueue::isEmpty() const + + Returns TRUE if the queue is empty; otherwise returns FALSE. + + \sa count() dequeue() head() +*/ + +/*! + \fn void Q3PtrQueue::enqueue (const type* d) + + Adds item \a d to the tail of the queue. + + \sa count() dequeue() +*/ + +/*! + \fn type* Q3PtrQueue::dequeue () + + Takes the head item from the queue and returns a pointer to it. + Returns 0 if the queue is empty. + + \sa enqueue() count() +*/ + +/*! + \fn bool Q3PtrQueue::remove() + + Removes the head item from the queue, and returns TRUE if there + was an item, i.e. the queue wasn't empty; otherwise returns FALSE. + + The item is deleted if autoDelete() is TRUE. + + \sa head() isEmpty() dequeue() +*/ + +/*! + \fn void Q3PtrQueue::clear() + + Removes all items from the queue, and deletes them if autoDelete() + is TRUE. + + \sa remove() +*/ + +/*! + \fn uint Q3PtrQueue::count() const + + Returns the number of items in the queue. + + \sa isEmpty() +*/ + +/*! + \fn type* Q3PtrQueue::head() const + + Returns a pointer to the head item in the queue. The queue is not + changed. Returns 0 if the queue is empty. + + \sa dequeue() isEmpty() +*/ + +/*! + \fn Q3PtrQueue::operator type*() const + + Returns a pointer to the head item in the queue. The queue is not + changed. Returns 0 if the queue is empty. + + \sa dequeue() isEmpty() +*/ + +/*! + \fn type* Q3PtrQueue::current() const + + Returns a pointer to the head item in the queue. The queue is not + changed. Returns 0 if the queue is empty. + + \sa dequeue() isEmpty() +*/ + +/*! + \fn bool Q3PtrQueue::autoDelete() const + + Returns the setting of the auto-delete option. The default is + FALSE. + + \sa setAutoDelete() +*/ + +/*! + \fn void Q3PtrQueue::setAutoDelete( bool enable ) + + Sets the queue to auto-delete its contents if \a enable is TRUE + and not to delete them if \a enable is FALSE. + + If auto-deleting is turned on, all the items in a queue are + deleted when the queue itself is deleted. This can be quite + convenient if the queue has the only pointer to the items. + + The default setting is FALSE, for safety. If you turn it on, be + careful about copying the queue: you might find yourself with two + queues deleting the same items. + + \sa autoDelete() +*/ + +/*! + \fn QDataStream& Q3PtrQueue::read( QDataStream& s, + Q3PtrCollection::Item& item ) + + Reads a queue item, \a item, from the stream \a s and returns a + reference to the stream. + + The default implementation sets \a item to 0. + + \sa write() +*/ + +/*! + \fn QDataStream& Q3PtrQueue::write( QDataStream& s, + Q3PtrCollection::Item item ) const + + Writes a queue item, \a item, to the stream \a s and returns a + reference to the stream. + + The default implementation does nothing. + + \sa read() +*/ diff --git a/src/qt3support/tools/q3ptrstack.qdoc b/src/qt3support/tools/q3ptrstack.qdoc new file mode 100644 index 0000000..071fcd0 --- /dev/null +++ b/src/qt3support/tools/q3ptrstack.qdoc @@ -0,0 +1,217 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \class Q3PtrStack + \brief The Q3PtrStack class is a template class that provides a stack. + \compat + + Q3ValueStack is an STL-compatible alternative to this class. + + Define a template instance Q3PtrStack\<X\> to create a stack that + operates on pointers to X, (X*). + + A stack is a last in, first out (LIFO) structure. Items are added + to the top of the stack with push() and retrieved from the top + with pop(). Use top() to get a reference to the top element + without changing the stack. + + You can control the stack's deletion policy with setAutoDelete(). + + For compatibility with the Q3PtrCollection classes current() and + remove() are provided; they both operate on the top(). + + \sa Q3PtrList Q3PtrQueue +*/ + +/*! + \fn Q3PtrStack::Q3PtrStack () + + Creates an empty stack. +*/ + +/*! + \fn Q3PtrStack::Q3PtrStack (const Q3PtrStack<type>& s) + + Creates a stack by making a shallow copy of another stack \a s. +*/ + +/*! + \fn Q3PtrStack::~Q3PtrStack () + + Destroys the stack. All items will be deleted if autoDelete() is + true. +*/ + +/*! + \fn Q3PtrStack<type>& Q3PtrStack::operator= (const Q3PtrStack<type>& s) + + Sets the contents of this stack by making a shallow copy of + another stack \a s. Elements currently in this stack will be + deleted if autoDelete() is true. +*/ + +/*! + \fn bool Q3PtrStack::isEmpty () const + + Returns true if the stack contains no elements; otherwise returns + false. +*/ + +/*! + \fn void Q3PtrStack::push (const type* d) + + Adds an element \a d to the top of the stack. Last in, first out. +*/ + +/*! + \fn type* Q3PtrStack::pop () + + Removes the top item from the stack and returns it. The stack must + not be empty. +*/ + +/*! + \fn bool Q3PtrStack::remove () + + Removes the top item from the stack and deletes it if autoDelete() + is true. Returns true if there was an item to pop; otherwise + returns false. + + \sa clear() +*/ + +/*! + \fn void Q3PtrStack::clear() + + Removes all items from the stack, deleting them if autoDelete() is + true. + + \sa remove() +*/ + +/*! + \fn uint Q3PtrStack::count() const + + Returns the number of items in the stack. + + \sa isEmpty() +*/ + +/*! + \fn type* Q3PtrStack::top () const + + Returns a pointer to the top item on the stack (most recently + pushed). The stack is not changed. Returns 0 if the stack is + empty. +*/ + +/*! + \fn Q3PtrStack::operator type* ()const + + Returns a pointer to the top item on the stack (most recently + pushed). The stack is not changed. Returns 0 if the stack is + empty. +*/ + +/*! + \fn type* Q3PtrStack::current () const + + Returns a pointer to the top item on the stack (most recently + pushed). The stack is not changed. Returns 0 if the stack is + empty. +*/ + +/*! + \fn bool Q3PtrStack::autoDelete() const + + The same as Q3PtrCollection::autoDelete(). Returns true if + the auto-delete option is set. If the option is set, the + stack auto-deletes its contents. + + \sa setAutoDelete() +*/ + +/*! + \fn void Q3PtrStack::setAutoDelete(bool enable) + + Defines whether this stack auto-deletes its contents. The same as + Q3PtrCollection::setAutoDelete(). If \a enable is true, auto-delete + is turned on. + + If auto-deleting is turned on, all the items in the stack are + deleted when the stack itself is deleted. This is convenient if + the stack has the only pointers to the items. + + The default setting is false, for safety. If you turn it on, be + careful about copying the stack, or you might find yourself with + two stacks deleting the same items. + + Note that the auto-delete setting may also affect other functions in + subclasses. For example, a subclass that has a remove() function + will remove the item from its data structure, and if auto-delete is + enabled, will also delete the item. + + \sa autoDelete() +*/ + +/*! + \fn QDataStream& Q3PtrStack::read(QDataStream& s, Q3PtrCollection::Item& item) + + Reads a stack item, \a item, from the stream \a s and returns a + reference to the stream. + + The default implementation sets \a item to 0. + + \sa write() +*/ + +/*! + \fn QDataStream& Q3PtrStack::write(QDataStream& s, + Q3PtrCollection::Item item) const + + Writes a stack item, \a item, to the stream \a s and returns a + reference to the stream. + + The default implementation does nothing. + + \sa read() +*/ diff --git a/src/qt3support/tools/q3ptrvector.qdoc b/src/qt3support/tools/q3ptrvector.qdoc new file mode 100644 index 0000000..c734064 --- /dev/null +++ b/src/qt3support/tools/q3ptrvector.qdoc @@ -0,0 +1,427 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \class Q3PtrVector + \brief The Q3PtrVector class is a template collection class that + provides a vector (array). + \compat + + Q3ValueVector is an STL-compatible alternative to this class. + + Q3PtrVector is implemented as a template class. Defines a template + instance Q3PtrVector\<X\> to create a vector that contains pointers + to X (X*). + + A vector is the same as an array. The main difference between + Q3PtrVector and Q3MemArray is that Q3PtrVector stores pointers to the + elements, whereas Q3MemArray stores the elements themselves (i.e. + Q3MemArray is value-based and Q3PtrVector is pointer-based). + + Items are added to the vector using insert() or fill(). Items are + removed with remove(). You can get a pointer to an item at a + particular index position using at(). + + Unless otherwise stated, all functions that remove items from the + vector will also delete the element pointed to if \link + setAutoDelete() auto-deletion\endlink is enabled. By default, + auto-deletion is disabled; see setAutoDelete(). This behavior can + be changed in a subclass by reimplementing the virtual function + deleteItem(). + + Functions that compare items (find() and sort() for example) will + do so using the virtual function compareItems(). The default + implementation of this function only compares the pointer values. + Reimplement compareItems() in a subclass to get searching and + sorting based on the item contents. You can perform a linear + search for a pointer in the vector using findRef(), or a binary + search (of a sorted vector) using bsearch(). You can count the + number of times an item appears in the vector with contains() or + containsRef(). + + \sa Q3MemArray +*/ + +/*! + \fn Q3PtrVector::Q3PtrVector() + + Constructs a null vector. + + \sa isNull() +*/ + +/*! + \fn Q3PtrVector::Q3PtrVector(uint size) + + Constructs an vector with room for \a size items. Makes a null + vector if \a size == 0. + + All \a size positions in the vector are initialized to 0. + + \sa size(), resize(), isNull() +*/ + +/*! + \fn Q3PtrVector::Q3PtrVector(const Q3PtrVector<type> &v) + + Constructs a copy of \a v. Only the pointers are copied (i.e. + shallow copy). +*/ + +/*! + \fn Q3PtrVector::~Q3PtrVector() + + Removes all items from the vector, and destroys the vector itself. + + \sa clear() +*/ + +/*! + \fn Q3PtrVector<type> &Q3PtrVector::operator=(const Q3PtrVector<type> &v) + + Assigns \a v to this vector and returns a reference to this + vector. + + This vector is first cleared and then all the items from \a v are + copied into the vector. Only the pointers are copied (i.e. shallow + copy). + + \sa clear() +*/ + +/*! + \fn type **Q3PtrVector::data() const + + Returns a pointer to the actual vector data, which is an array of + type*. + + The vector is a null vector if data() == 0 (null pointer). + + \sa isNull() +*/ + +/*! + \fn uint Q3PtrVector::size() const + + Returns the size of the vector, i.e. the number of vector + positions. This is also the maximum number of items the vector can + hold. + + The vector is a null vector if size() == 0. + + \sa isNull(), resize(), count() +*/ + +/*! + \fn uint Q3PtrVector::count() const + + Returns the number of items in the vector. The vector is empty if + count() == 0. + + \sa isEmpty(), size(), isNull() +*/ + +/*! + \fn bool Q3PtrVector::isEmpty() const + + Returns true if the vector is empty; otherwise returns false. + + \sa count() +*/ + +/*! + \fn bool Q3PtrVector::isNull() const + + Returns true if the vector is null; otherwise returns false. + + A null vector has size() == 0 and data() == 0. + + \sa size() +*/ + +/*! + \fn bool Q3PtrVector::resize(uint size) + + Resizes (expands or shrinks) the vector to \a size elements. The + vector becomes a null vector if \a size == 0. + + Any items at position \a size or beyond in the vector are removed. + New positions are initialized to 0. + + Returns true if successful, i.e. if the memory was successfully + allocated; otherwise returns false. + + \sa size(), isNull() +*/ + +/*! + \fn bool Q3PtrVector::insert(uint i, const type *d) + + Sets position \a i in the vector to contain the item \a d. \a i + must be less than size(). Any previous element in position \a i is + removed. + + Returns true if \a i is within range; otherwise returns false. + + \sa at() +*/ + +/*! + \fn bool Q3PtrVector::remove(uint i) + + Removes the item at position \a i in the vector, if there is one. + \a i must be less than size(). + + Returns true if \a i is within range; otherwise returns false. + + \sa take(), at() +*/ + +/*! + \fn type* Q3PtrVector::take(uint i) + + Returns the item at position \a i in the vector, and removes that + item from the vector. \a i must be less than size(). If there is + no item at position \a i, 0 is returned. + + Unlike remove(), this function does \e not call deleteItem() for + the removed item. + + \sa remove(), at() +*/ + +/*! + \fn void Q3PtrVector::clear() + + Removes all items from the vector, and destroys the vector itself. + + The vector becomes a null vector. + + \sa isNull() +*/ + +/*! + \fn bool Q3PtrVector::fill(const type *d, int size) + + Inserts item \a d in all positions in the vector. Any existing + items are removed. If \a d is 0, the vector becomes empty. + + If \a size >= 0, the vector is first resized to \a size. By + default, \a size is -1. + + Returns true if successful, i.e. \a size is the same as the + current size, or \a size is larger and the memory has successfully + been allocated; otherwise returns false. + + \sa resize(), insert(), isEmpty() +*/ + +/*! + \fn void Q3PtrVector::sort() + + Sorts the items in ascending order. Any empty positions will be + put last. + + Compares items using the virtual function compareItems(). + + \sa bsearch() +*/ + +/*! + \fn int Q3PtrVector::bsearch(const type* d) const + + In a sorted array, finds the first occurrence of \a d using a + binary search. For a sorted array, this is generally much faster + than find(), which performs a linear search. + + Returns the position of \a d, or -1 if \a d could not be found. \a + d must not be 0. + + Compares items using the virtual function compareItems(). + + \sa sort(), find() +*/ + + +/*! + \fn int Q3PtrVector::findRef(const type *d, uint i) const + + Finds the first occurrence of the item pointer \a d in the vector + using a linear search. The search starts at position \a i, which + must be less than size(). \a i is by default 0; i.e. the search + starts at the start of the vector. + + Returns the position of \a d, or -1 if \a d could not be found. + + This function does \e not use compareItems() to compare items. + + Use the much faster bsearch() to search a sorted vector. + + \sa find(), bsearch() +*/ + +/*! + \fn int Q3PtrVector::find(const type *d, uint i) const + + Finds the first occurrence of item \a d in the vector using a + linear search. The search starts at position \a i, which must be + less than size(). \a i is by default 0; i.e. the search starts at + the start of the vector. + + Returns the position of \a d, or -1 if \a d could not be found. + + Compares items using the virtual function compareItems(). + + Use the much faster bsearch() to search a sorted vector. + + \sa findRef(), bsearch() +*/ + + +/*! + \fn uint Q3PtrVector::containsRef(const type *d) const + + Returns the number of occurrences of the item pointer \a d in the + vector. + + This function does \e not use compareItems() to compare items. + + \sa findRef() +*/ + +/*! + \fn uint Q3PtrVector::contains(const type *d) const + + Returns the number of occurrences of item \a d in the vector. + + Compares items using the virtual function compareItems(). + + \sa containsRef() +*/ + +/*! + \fn type *Q3PtrVector::operator[](int i) const + + Returns the item at position \a i, or 0 if there is no item at + that position. \a i must be less than size(). + + Equivalent to at(\a i). + + \sa at() +*/ + +/*! + \fn type *Q3PtrVector::at(uint i) const + + Returns the item at position \a i, or 0 if there is no item at + that position. \a i must be less than size(). +*/ + + +/*! + \fn void Q3PtrVector::toList(Q3GList *list) const + + \internal + + Copies all items in this vector to the list \a list. \a list is + first cleared and then all items are appended to \a list. + + \sa Q3PtrList, Q3PtrStack, Q3PtrQueue +*/ + +/*! + \fn int Q3PtrVector::compareItems(Q3PtrCollection::Item d1, + Q3PtrCollection::Item d2) + + This virtual function compares two list items. + + Returns: + \list + \i zero if \a d1 == \a d2 + \i nonzero if \a d1 != \a d2 + \endlist + + This function returns \e int rather than \e bool so that + reimplementations can return one of three values and use it to + sort by: + \list + \i 0 if \a d1 == \a d2 + \i \> 0 (positive integer) if \a d1 \> \a d2 + \i \< 0 (negative integer) if \a d1 \< \a d2 + \endlist + + The sort() and bsearch() functions require compareItems() to be + implemented as described here. + + This function should not modify the vector because some const + functions call compareItems(). +*/ + +/*! + \fn QDataStream& Q3PtrVector::read(QDataStream &s, + Q3PtrCollection::Item &item) + + Reads a vector item, \a item, from the stream \a s and returns a + reference to the stream. + + The default implementation sets \a item to 0. + + \sa write() +*/ + +/*! + \fn QDataStream& Q3PtrVector::write(QDataStream &s, + Q3PtrCollection::Item item) const + + Writes a vector item, \a item, to the stream \a s and returns a + reference to the stream. + + The default implementation does nothing. + + \sa read() +*/ + +/*! + \fn bool Q3PtrVector::operator==(const Q3PtrVector<type> &v) const + + Returns true if this vector and \a v are equal; otherwise returns + false. +*/ diff --git a/src/qt3support/tools/q3valuelist.qdoc b/src/qt3support/tools/q3valuelist.qdoc new file mode 100644 index 0000000..062a9da --- /dev/null +++ b/src/qt3support/tools/q3valuelist.qdoc @@ -0,0 +1,569 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \class Q3ValueList + \brief The Q3ValueList class is a value-based template class that + provides lists. + \compat + + Q3ValueList is a Qt implementation of an STL-like list container. + It can be used in your application if the standard \c list is not + available for your target platforms. + + Q3ValueList\<T\> defines a template instance to create a list of + values that all have the class T. Note that Q3ValueList does not + store pointers to the members of the list; it holds a copy of + every member. This is why these kinds of classes are called "value + based"; Q3PtrList and Q3Dict are "pointer based". + + Q3ValueList contains and manages a collection of objects of type T + and provides iterators that allow the contained objects to be + addressed. Q3ValueList owns the contained items. For more relaxed + ownership semantics, see Q3PtrCollection and friends which are + pointer-based containers. + + Some classes cannot be used within a Q3ValueList, for example, all + classes derived from QObject and thus all classes that implement + widgets. Only values can be used in a Q3ValueList. To qualify as a + value the class must provide: + \list + \i a copy constructor; + \i an assignment operator; + \i a default constructor, i.e. a constructor that does not take any arguments. + \endlist + + Note that C++ defaults to field-by-field assignment operators and + copy constructors if no explicit version is supplied. In many + cases this is sufficient. + + In addition, some compilers (e.g. Sun CC) might require that the + class provides an equality operator (operator==()). + + Q3ValueList's function naming is consistent with the other Qt + classes (e.g. count(), isEmpty()). Q3ValueList also provides extra + functions for compatibility with STL algorithms, such as size() + and empty(). Programmers already familiar with the STL \c list may + prefer to use the STL-compatible functions. + + Example: + \snippet doc/src/snippets/code/doc_src_q3valuelist.qdoc 0 + + + Notice that the latest changes to Mary's salary did not affect the + value in the list because the list created a copy of Mary's entry. + + There are several ways to find items in the list. The begin() and + end() functions return iterators to the beginning and end of the + list. The advantage of getting an iterator is that you can move + forward or backward from this position by + incrementing/decrementing the iterator. The iterator returned by + end() points to the item which is one \e past the last item in the + container. The past-the-end iterator is still associated with the + list it belongs to, however it is \e not dereferenceable; + operator*() will not return a well-defined value. If the list is + empty(), the iterator returned by begin() will equal the iterator + returned by end(). + + It is safe to have multiple iterators a the list at the same + time. If some member of the list is removed, only iterators + pointing to the removed member become invalid. Inserting into the + list does not invalidate any iterator. For convenience, the + function last() returns a reference to the last item in the list, + and first() returns a reference to the first item. If the + list is empty(), both last() and first() have undefined behavior + (your application will crash or do unpredictable things). Use + last() and first() with caution, for example: + + \snippet doc/src/snippets/code/doc_src_q3valuelist.qdoc 1 + + Because Q3ValueList is value-based there is no need to be careful + about deleting items in the list. The list holds its own copies + and will free them if the corresponding member or the list itself + is deleted. You can force the list to free all of its items with + clear(). + + Q3ValueList is shared implicitly, which means it can be copied in + constant time, i.e. O(1). If multiple Q3ValueList instances share + the same data and one needs to modify its contents, this modifying + instance makes a copy and modifies its private copy; therefore it + does not affect the other instances; this takes O(n) time. This is + often called "copy on write". If a Q3ValueList is being used in a + multi-threaded program, you must protect all access to the list. + See \l QMutex. + + There are several ways to insert items into the list. The + prepend() and append() functions insert items at the beginning and + the end of the list respectively. The insert() function comes in + several flavors and can be used to add one or more items at + specific positions within the list. + + Items can also be removed from the list in several ways. There + are several variants of the remove() function, which removes a + specific item from the list. The remove() function will find and + remove items according to a specific item value. + + \sa Q3ValueListIterator +*/ + +/*! \typedef Q3ValueList::iterator + The list's iterator type, Q3ValueListIterator. */ +/*! \typedef Q3ValueList::const_iterator + The list's const iterator type, Q3ValueListConstIterator. */ +/*! \typedef Q3ValueList::value_type + The type of the object stored in the list, T. */ +/*! \typedef Q3ValueList::pointer + The pointer to T type. */ +/*! \typedef Q3ValueList::const_pointer + The const pointer to T type. */ +/*! \typedef Q3ValueList::reference + The reference to T type. */ +/*! \typedef Q3ValueList::const_reference + The const reference to T type. */ +/*! \typedef Q3ValueList::size_type + An unsigned integral type, used to represent various sizes. */ +/*! \typedef Q3ValueList::difference_type + \internal +*/ +/*! + \fn Q3ValueList::Q3ValueList() + + Constructs an empty list. +*/ + +/*! + \fn Q3ValueList::Q3ValueList( const Q3ValueList<T>& l ) + \fn Q3ValueList::Q3ValueList( const QList<T>& l ) + \fn Q3ValueList::Q3ValueList( const QLinkedList<T>& l ) + + Constructs a copy of \a l. +*/ + +/*! + \fn Q3ValueList::Q3ValueList( const std::list<T>& l ) + + Contructs a copy of \a l. + + This constructor is provided for compatibility with STL + containers. +*/ + +/*! + \fn Q3ValueList::~Q3ValueList() + + Destroys the list. References to the values in the list and all + iterators of this list become invalidated. Note that it is + impossible for an iterator to check whether or not it is valid: + Q3ValueList is highly tuned for performance, not for error + checking. +*/ + +/*! + \fn bool Q3ValueList::operator== ( const Q3ValueList<T>& l ) const + + Compares both lists. + + Returns TRUE if this list and \a l are equal; otherwise returns + FALSE. +*/ + +/*! + \fn bool Q3ValueList::operator== ( const std::list<T>& l ) const + + \overload + + Returns TRUE if this list and \a l are equal; otherwise returns + FALSE. + + This operator is provided for compatibility with STL containers. +*/ + +/*! + \fn Q3ValueList<T>& Q3ValueList::operator= ( const Q3ValueList<T>& l ) + + Assigns \a l to this list and returns a reference to this list. + + All iterators of the current list become invalidated by this + operation. The cost of such an assignment is O(1) since Q3ValueList + is implicitly shared. +*/ + +/*! + \fn Q3ValueList<T>& Q3ValueList::operator= ( const QList<T>& l ) + + Assigns \a l to this list and returns a reference to this list. + + All iterators of the current list become invalidated by this + operation. +*/ + +/*! + \fn Q3ValueList<T>& Q3ValueList::operator= ( const std::list<T>& l ) + + \overload + + Assigns the contents of \a l to the list. + + All iterators of the current list become invalidated by this + operation. +*/ + +/*! + \fn bool Q3ValueList::operator!= ( const Q3ValueList<T>& l ) const + + Compares both lists. + + Returns TRUE if this list and \a l are unequal; otherwise returns + FALSE. +*/ + +/*! + \fn iterator Q3ValueList::insert( typename Q3ValueList<T>::Iterator it, const T& x ) + + Inserts the value \a x in front of the item pointed to by the + iterator, \a it. + + Returns an iterator pointing at the inserted item. + + \sa append(), prepend() +*/ + +/*! + \fn uint Q3ValueList::remove( const T& x ) + + \overload + + Removes all items that have value \a x and returns the number of + removed items. +*/ + +/*! + \fn QDataStream& operator>>( QDataStream& s, Q3ValueList<T>& l ) + + \relates Q3ValueList + + Reads a list, \a l, from the stream \a s. The type T stored in the + list must implement the streaming operator. +*/ + +/*! + \fn QDataStream& operator<<( QDataStream& s, const Q3ValueList<T>& l ) + + \overload + \relates Q3ValueList + + Writes a list, \a l, to the stream \a s. The type T stored in the + list must implement the streaming operator. +*/ + +/*! + \fn void Q3ValueList::insert( typename Q3ValueList<T>::Iterator pos, + typename Q3ValueList<T>::size_type n, const T& x ) + + \overload + + Inserts \a n copies of \a x before position \a pos. +*/ + +/*! + \fn Q3ValueList<T>& Q3ValueList::operator<< ( const T& x ) + + Adds the value \a x to the end of the list. + + Returns a reference to the list. +*/ + +/*! + \fn const T& Q3ValueList::operator[] ( typename Q3ValueList<T>::size_type i ) const + + Returns a const reference to the item with index \a i in the list. + It is up to you to check whether this item really exists. You can + do that easily with the count() function. However this operator + does not check whether \a i is in range and will deliver undefined + results if it does not exist. + + \warning This function uses a linear search and can be extremely + slow for large lists. Q3ValueList is not optimized for random item + access. If you need random access use a different container, such + as Q3ValueVector. +*/ + +/*! + \fn T& Q3ValueList::operator[] ( typename Q3ValueList<T>::size_type i ) + + \overload + + Returns a non-const reference to the item with index \a i. +*/ + +/*! + \fn const_iterator Q3ValueList::at( typename Q3ValueList<T>::size_type i ) const + + Returns an iterator pointing to the item at position \a i in the + list, or an undefined value if the index is out of range. + + \warning This function uses a linear search and can be extremely + slow for large lists. Q3ValueList is not optimized for random item + access. If you need random access use a different container, such + as Q3ValueVector. +*/ + +/*! + \fn iterator Q3ValueList::at( typename Q3ValueList<T>::size_type i ) + + \overload + + Returns an iterator pointing to the item at position \a i in the + list, or an undefined value if the index is out of range. + +*/ + +/*! + \fn iterator Q3ValueList::fromLast() + + \overload + + Returns an iterator to the last item in the list, or end() if + there is no last item. + + Use the end() function instead. For example: + + \snippet doc/src/snippets/code/doc_src_q3valuelist.qdoc 2 + +*/ + +/*! + \fn const_iterator Q3ValueList::fromLast() const + + Returns an iterator to the last item in the list, or end() if + there is no last item. + + Use the end() function instead. For example: + + \snippet doc/src/snippets/code/doc_src_q3valuelist.qdoc 3 + +*/ + +/*! + \fn Q3ValueList<T> Q3ValueList::operator+( const Q3ValueList<T>& l ) const + + Creates a new list and fills it with the items of this list. Then + the items of \a l are appended. Returns the new list. +*/ + +/*! + \fn Q3ValueList<T>& Q3ValueList::operator+= ( const Q3ValueList<T>& l ) + + Appends the items of \a l to this list. Returns a reference to + this list. +*/ + +/*! + \fn Q3ValueList<T>& Q3ValueList::operator+= ( const T& x ) + + \overload + + Appends the value \a x to the list. Returns a reference to the + list. +*/ + +/*! + \fn iterator Q3ValueList::append( const T& x ) + + Inserts \a x at the end of the list. + + \sa insert(), prepend() +*/ + +/*! + \fn iterator Q3ValueList::prepend( const T& x ) + + Inserts \a x at the beginning of the list. + + \sa insert(), append() +*/ + +/*! + \fn iterator Q3ValueList::remove( typename Q3ValueList<T>::Iterator it ) + + Removes the item pointed to by \a it from the list. No iterators + other than \a it or other iterators pointing at the same item as + \a it are invalidated. Returns an iterator to the next item after + \a it, or end() if there is no such item. + + \sa clear() +*/ + +/*! + \fn uint Q3ValueList::contains( const T& x ) const + + Returns the number of occurrences of the value \a x in the list. +*/ + +/*! + \class Q3ValueListIterator + \brief The Q3ValueListIterator class provides an iterator for Q3ValueList. + \compat + + An iterator is a class for accessing the items of a container + class: a generalization of the index in an array. A pointer + into a "const char *" and an index into an "int[]" are both + iterators, and the general idea is to provide that functionality + for any data structure. + + The Q3ValueListIterator class is an iterator for Q3ValueList + instantiations. You can create the appropriate iterator type by + using the \c iterator typedef provided by Q3ValueList. + + The only way to access the items in a Q3ValueList is to use an + iterator. + + Example (see Q3ValueList for the complete code): + \snippet doc/src/snippets/code/doc_src_q3valuelist.qdoc 4 + + Q3ValueList is highly optimized for performance and memory usage. + This means that you must be careful: Q3ValueList does not know + about all its iterators and the iterators don't know to which list + they belong. This makes things very fast, but if you're not + careful, you can get spectacular bugs. Always make sure iterators + are valid before dereferencing them or using them as parameters to + generic algorithms in the STL. + + Using an invalid iterator is undefined (your application will + probably crash). Many Qt functions return const value lists; to + iterate over these you should make a copy and iterate over the + copy. + + For every Iterator there is a ConstIterator. When accessing a + Q3ValueList in a const environment or if the reference or pointer + to the list is itself const, then you must use the ConstIterator. + Its semantics are the same as the Iterator, but it only returns + const references. + + \sa Q3ValueList, Q3ValueListConstIterator +*/ + +/*! + \fn Q3ValueListIterator::Q3ValueListIterator() + + Constructs an unitialized iterator. +*/ + +/*! + \fn Q3ValueListIterator::Q3ValueListIterator(const Q3ValueListIterator &o) + \fn Q3ValueListIterator::Q3ValueListIterator(const typename QLinkedList<T>::iterator &o) + + Constucts a copy of iterator \a o. +*/ + +/*! + \class Q3ValueListConstIterator + \brief The Q3ValueListConstIterator class provides a const iterator + for Q3ValueList. + \compat + + In contrast to Q3ValueListIterator, this class is used to iterate + over a const list. It does not allow modification of the values of + the list since that would break const semantics. + + You can create the appropriate const iterator type by using the \c + const_iterator typedef provided by Q3ValueList. + + For more information on Q3ValueList iterators, see + Q3ValueListIterator. + + \sa Q3ValueListIterator, Q3ValueList +*/ + +/*! + \fn Q3ValueListConstIterator::Q3ValueListConstIterator() + + Constructs an unitialized iterator. +*/ + +/*! + \fn Q3ValueListConstIterator::Q3ValueListConstIterator(const Q3ValueListConstIterator &o) + \fn Q3ValueListConstIterator::Q3ValueListConstIterator(const typename QLinkedList<T>::const_iterator &o) + \fn Q3ValueListConstIterator::Q3ValueListConstIterator(const typename QLinkedList<T>::iterator &o) + + Constructs a copy of iterator \a o. +*/ + +/*! + \typedef Q3ValueList::Iterator + + This iterator is an instantiation of Q3ValueListIterator for the + same type as this Q3ValueList. In other words, if you instantiate + Q3ValueList<int>, Iterator is a Q3ValueListIterator<int>. Several + member function use it, such as Q3ValueList::begin(), which returns + an iterator pointing to the first item in the list. + + Functionally, this is almost the same as ConstIterator. The only + difference is that you cannot use ConstIterator for non-const + operations, and that the compiler can often generate better code + if you use ConstIterator. + + \sa Q3ValueListIterator ConstIterator +*/ + +/*! + \typedef Q3ValueList::ConstIterator + + This iterator is an instantiation of Q3ValueListConstIterator for + the same type as this Q3ValueList. In other words, if you + instantiate Q3ValueList<int>, ConstIterator is a + Q3ValueListConstIterator<int>. Several member function use it, such + as Q3ValueList::begin(), which returns an iterator pointing to the + first item in the list. + + Functionally, this is almost the same as Iterator. The only + difference is you cannot use ConstIterator for non-const + operations, and that the compiler can often generate better code + if you use ConstIterator. + + \sa Q3ValueListIterator Iterator +*/ + +/*! + \fn Q3ValueList::operator QList<T>() const + + Automatically converts a Q3ValueList<T> into a QList<T>. +*/ diff --git a/src/qt3support/tools/q3valuestack.qdoc b/src/qt3support/tools/q3valuestack.qdoc new file mode 100644 index 0000000..bc44235 --- /dev/null +++ b/src/qt3support/tools/q3valuestack.qdoc @@ -0,0 +1,149 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \class Q3ValueStack + \brief The Q3ValueStack class is a value-based template class that provides a stack. + \compat + + Define a template instance Q3ValueStack\<X\> to create a stack of + values that all have the class X. + + Note that Q3ValueStack does not store pointers to the members of + the stack; it holds a copy of every member. That is why these + kinds of classes are called "value based"; Q3PtrStack, Q3PtrList, + Q3Dict, etc., are "pointer based". + + A stack is a last in, first out (LIFO) structure. Items are added + to the top of the stack with push() and retrieved from the top + with pop(). The top() function provides access to the topmost item + without removing it. + + Example: + \snippet doc/src/snippets/code/doc_src_q3valuestack.qdoc 0 + + Q3ValueStack is a specialized Q3ValueList provided for convenience. + All of Q3ValueList's functionality also applies to Q3PtrStack, for + example the facility to iterate over all elements using + Q3ValueStack<T>::Iterator. See Q3ValueListIterator for further + details. + + Some classes cannot be used within a Q3ValueStack, for example + everything derived from QObject and thus all classes that + implement widgets. Only values can be used in a Q3ValueStack. To + qualify as a value, the class must provide + \list + \i a copy constructor; + \i an assignment operator; + \i a default constructor, i.e. a constructor that does not take any arguments. + \endlist + + Note that C++ defaults to field-by-field assignment operators and + copy constructors if no explicit version is supplied. In many + cases this is sufficient. +*/ + + +/*! + \fn Q3ValueStack::Q3ValueStack() + + Constructs an empty stack. +*/ + +/*! + \fn Q3ValueStack::~Q3ValueStack() + + Destroys the stack. References to the values in the stack and all + iterators of this stack become invalidated. Because Q3ValueStack is + highly tuned for performance, you won't see warnings if you use + invalid iterators because it is impossible for an iterator to + check whether or not it is valid. +*/ + + +/*! + \fn void Q3ValueStack::push( const T& d ) + + Adds element, \a d, to the top of the stack. Last in, first out. + + This function is equivalent to append(). + + \sa pop(), top() +*/ + +/*! + \fn T& Q3ValueStack::top() + + Returns a reference to the top item of the stack or the item + referenced by end() if no such item exists. Note that you must not + change the value the end() iterator points to. + + This function is equivalent to last(). + + \sa pop(), push(), Q3ValueList::fromLast() +*/ + + +/*! + \fn const T& Q3ValueStack::top() const + + \overload + + Returns a reference to the top item of the stack or the item + referenced by end() if no such item exists. + + This function is equivalent to last(). + + \sa pop(), push(), Q3ValueList::fromLast() +*/ + +/*! + \fn T Q3ValueStack::pop() + + Removes the top item from the stack and returns it. + + \sa top() push() +*/ + + + + + diff --git a/src/qt3support/tools/q3valuevector.qdoc b/src/qt3support/tools/q3valuevector.qdoc new file mode 100644 index 0000000..4ab8896 --- /dev/null +++ b/src/qt3support/tools/q3valuevector.qdoc @@ -0,0 +1,274 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \class Q3ValueVector + \brief The Q3ValueVector class is a value-based template class that provides a dynamic array. + \compat + + Q3ValueVector is a Qt implementation of an STL-like vector + container. It can be used in your application if the standard \c + vector is not available for your target platforms. + + Q3ValueVector\<T\> defines a template instance to create a vector + of values that all have the class T. Q3ValueVector does not store + pointers to the members of the vector; it holds a copy of every + member. Q3ValueVector is said to be value based; in contrast, + Q3PtrList and Q3Dict are pointer based. + + Q3ValueVector contains and manages a collection of objects of type + T and provides random access iterators that allow the contained + objects to be addressed. Q3ValueVector owns the contained + elements. For more relaxed ownership semantics, see Q3PtrCollection + and friends, which are pointer-based containers. + + Q3ValueVector provides good performance if you append or remove + elements from the end of the vector. If you insert or remove + elements from anywhere but the end, performance is very bad. The + reason for this is that elements must to be copied into new + positions. + + Some classes cannot be used within a Q3ValueVector: for example, + all classes derived from QObject and thus all classes that + implement widgets. Only values can be used in a Q3ValueVector. To + qualify as a value the class must provide: + \list + \i a copy constructor; + \i an assignment operator; + \i a default constructor, i.e., a constructor that does not take any arguments. + \endlist + + Note that C++ defaults to field-by-field assignment operators and + copy constructors if no explicit version is supplied. In many + cases this is sufficient. + + Q3ValueVector uses an STL-like syntax to manipulate and address the + objects it contains. + + Example: + \snippet doc/src/snippets/code/doc_src_q3valuevector.qdoc 0 + + Program output: + \snippet doc/src/snippets/code/doc_src_q3valuevector.qdoc 1 + + As you can see, the most recent change to Joe's salary did not + affect the value in the vector because the vector created a copy + of Joe's entry. + + Many Qt functions return const value vectors; to iterate over + these you should make a copy and iterate over the copy. + + There are several ways to find items in the vector. The begin() + and end() functions return iterators to the beginning and end of + the vector. The advantage of getting an iterator is that you can + move forward or backward from this position by + incrementing/decrementing the iterator. The iterator returned by + end() points to the element which is one past the last element in + the container. The past-the-end iterator is still associated with + the vector it belongs to, however it is \e not dereferenceable; + operator*() will not return a well-defined value. If the vector is + empty(), the iterator returned by begin() will equal the iterator + returned by end(). + + The fastest way to access an element of a vector is by using + operator[]. This function provides random access and will return + a reference to the element located at the specified index. Thus, + you can access every element directly, in constant time, providing + you know the location of the element. It is undefined to access + an element that does not exist (your application will probably + crash). For example: + + \snippet doc/src/snippets/code/doc_src_q3valuevector.qdoc 2 + + Whenever inserting, removing or referencing elements in a vector, + always make sure you are referring to valid positions. For + example: + + \snippet doc/src/snippets/code/doc_src_q3valuevector.qdoc 3 + + The iterators provided by vector are random access iterators, + therefore you can use them with many generic algorithms, for + example, algorithms provided by the STL. + + It is safe to have multiple iterators on the vector at the same + time. Since Q3ValueVector manages memory dynamically, all iterators + can become invalid if a memory reallocation occurs. For example, + if some member of the vector is removed, iterators that point to + the removed element and to all following elements become + invalidated. Inserting into the middle of the vector will + invalidate all iterators. For convenience, the function back() + returns a reference to the last element in the vector, and front() + returns a reference to the first element. If the vector is + empty(), both back() and front() have undefined behavior (your + application will crash or do unpredictable things). Use back() and + front() with caution, for example: + + \snippet doc/src/snippets/code/doc_src_q3valuevector.qdoc 4 + + Because Q3ValueVector manages memory dynamically, it is recommended + that you contruct a vector with an initial size. Inserting and + removing elements happens fastest when: + \list + \i Inserting or removing elements happens at the end() of the + vector; + \i The vector does not need to allocate additional memory. + \endlist + + By creating a Q3ValueVector with a sufficiently large initial size, + there will be less memory allocations. Do not use an initial size + that is too big, since it will still take time to construct all + the empty entries, and the extra space will be wasted if it is + never used. + + Because Q3ValueVector is value-based there is no need to be careful + about deleting elements in the vector. The vector holds its own + copies and will free them if the corresponding member or the + vector itself is deleted. You can force the vector to free all of + its items with clear(). + + Q3ValueVector is shared implicitly, which means it can be copied in + constant time. If multiple Q3ValueVector instances share the same + data and one needs to modify its contents, this modifying instance + makes a copy and modifies its private copy; it thus does not + affect the other instances. This is often called "copy on write". + If a Q3ValueVector is being used in a multi-threaded program, you + must protect all access to the vector. See QMutex. + + There are several ways to insert elements into the vector. The + push_back() function insert elements into the end of the vector, + and is usually fastest. The insert() function can be used to add + elements at specific positions within the vector. + + Items can be also be removed from the vector in several ways. + There are several variants of the erase() function which removes a + specific element, or range of elements, from the vector. + + Q3ValueVector stores its elements in contiguous memory. This means + that you can use a Q3ValueVector in any situation that requires an + array. +*/ + +/*! + \fn Q3ValueVector::Q3ValueVector() + + Constructs an empty vector without any elements. To create a + vector which reserves an initial amount of space for elements, use + \c Q3ValueVector(size_type n). +*/ + +/*! + \fn Q3ValueVector::Q3ValueVector( const Q3ValueVector<T>& v ) + + Constructs a copy of \a v. + + This operation costs O(1) time because Q3ValueVector is implicitly + shared. + + The first modification to the vector does takes O(n) time, because + the elements must be copied. +*/ + +/*! + \fn Q3ValueVector::Q3ValueVector( const std::vector<T>& v ) + + This operation costs O(n) time because \a v is copied. +*/ + +/*! + \fn Q3ValueVector::Q3ValueVector( QVector<T>::size_type n, const T& val ) + + Constructs a vector with an initial size of \a n elements. Each + element is initialized with the value of \a val. +*/ + +/*! + \fn Q3ValueVector<T>& Q3ValueVector::operator=( const Q3ValueVector<T>& v ) + + Assigns \a v to this vector and returns a reference to this vector. + + All iterators of the current vector become invalidated by this + operation. The cost of such an assignment is O(1) since + Q3ValueVector is implicitly shared. +*/ + +/*! + \fn Q3ValueVector<T>& Q3ValueVector::operator=( const std::vector<T>& v ) + + \overload + + Assigns \a v to this vector and returns a reference to this vector. + + All iterators of the current vector become invalidated by this + operation. The cost of this assignment is O(n) since \a v is + copied. +*/ + +/*! + \fn T &Q3ValueVector::at( int i , bool* ok ) + + Returns a reference to the element with index \a i. If \a ok is + non-null, and the index \a i is out of range, *\a ok is set to + FALSE and the returned reference is undefined. If the index \a i + is within the range of the vector, and \a ok is non-null, *\a ok + is set to TRUE and the returned reference is well defined. +*/ + +/*! + \fn const T &Q3ValueVector::at( int i , bool* ok ) const + + \overload + + Returns a const reference to the element with index \a i. If \a ok + is non-null, and the index \a i is out of range, *\a ok is set to + FALSE and the returned reference is undefined. If the index \a i + is within the range of the vector, and \a ok is non-null, *\a ok + is set to TRUE and the returned reference is well defined. +*/ + +/*! + \fn void Q3ValueVector::resize( int n, const T& val = T() ) + + Changes the size of the vector to \a n. If \a n is greater than + the current size(), elements are added to the end and initialized + with the value of \a val. If \a n is less than size(), elements + are removed from the end. If \a n is equal to size() nothing + happens. +*/ diff --git a/src/qt3support/widgets/q3popupmenu.cpp b/src/qt3support/widgets/q3popupmenu.cpp index d2eaaa9..8912748 100644 --- a/src/qt3support/widgets/q3popupmenu.cpp +++ b/src/qt3support/widgets/q3popupmenu.cpp @@ -43,6 +43,43 @@ QT_BEGIN_NAMESPACE /*! + \class Q3PopupMenu + \brief The Q3PopupMenu class is a thin compatibility wrapper around QMenu. + \compat + + Use QMenu in new applications. Note that the menu's actions must + be \l {Q3Action}s. +*/ + +/*! + \fn Q3PopupMenu::Q3PopupMenu(QWidget *parent, const char *name) + + Constructs a menu with the given \a parent and \a name. +*/ + +/*! + \fn int Q3PopupMenu::exec() + + Pops up the menu and returns the ID of the action that was + selected. + + \sa QMenu::exec() +*/ + +/*! + \fn int Q3PopupMenu::exec(const QPoint & pos, int indexAtPoint) + + Pops up the menu at coordinate \a pos and returns the ID of the + action that was selected. + + If \a indexAtPoint is specified, the menu will pop up with the + item at index \a indexAtPoint under the mouse cursor. + + \sa QMenu::exec() +*/ + + +/*! \fn void Q3PopupMenu::setFrameRect(QRect) \internal */ diff --git a/src/script/qscriptable.cpp b/src/script/qscriptable.cpp index 33f14b1..4b9d1f5 100644 --- a/src/script/qscriptable.cpp +++ b/src/script/qscriptable.cpp @@ -60,7 +60,7 @@ QT_BEGIN_NAMESPACE \brief The QScriptable class provides access to the Qt Script environment from Qt C++ member functions. \ingroup script - \mainclass + With QScriptEngine::newQObject(), you can expose the signals and slots and properties of any QObject (or subclass) to script diff --git a/src/script/qscriptclass.cpp b/src/script/qscriptclass.cpp index 3981427..930c261 100644 --- a/src/script/qscriptclass.cpp +++ b/src/script/qscriptclass.cpp @@ -69,7 +69,7 @@ QT_BEGIN_NAMESPACE \brief The QScriptClass class provides an interface for defining custom behavior of (a class of) Qt Script objects. \ingroup script - \mainclass + The QScriptClass class defines an interface for handling various aspects of interaction with the Qt Script objects associated with diff --git a/src/script/qscriptcontext.cpp b/src/script/qscriptcontext.cpp index 978ca33..1ff2530 100644 --- a/src/script/qscriptcontext.cpp +++ b/src/script/qscriptcontext.cpp @@ -59,7 +59,7 @@ QT_BEGIN_NAMESPACE \brief The QScriptContext class represents a Qt Script function invocation. \ingroup script - \mainclass + A QScriptContext provides access to the `this' object and arguments passed to a script function. You typically want to access this diff --git a/src/script/qscriptcontextinfo.cpp b/src/script/qscriptcontextinfo.cpp index bf3930b..6467360 100644 --- a/src/script/qscriptcontextinfo.cpp +++ b/src/script/qscriptcontextinfo.cpp @@ -60,7 +60,7 @@ QT_BEGIN_NAMESPACE \brief The QScriptContextInfo class provides additional information about a QScriptContext. \ingroup script - \mainclass + QScriptContextInfo is typically used for debugging purposes. It can provide information about the code being executed, such as the type diff --git a/src/script/qscriptengine.cpp b/src/script/qscriptengine.cpp index 9fc94ae..07fed70 100644 --- a/src/script/qscriptengine.cpp +++ b/src/script/qscriptengine.cpp @@ -60,7 +60,7 @@ QT_BEGIN_NAMESPACE \brief The QScriptEngine class provides an environment for evaluating Qt Script code. \ingroup script - \mainclass + See the \l{QtScript} documentation for information about the Qt Script language, and how to get started with scripting your C++ application. @@ -1338,7 +1338,7 @@ QStringList QScriptEngine::importedExtensions() const Additionally, the type of each element in the sequence should be suitable for conversion to a QScriptValue. - See \l{QtScript Module#Conversion Between QtScript and C++ Types} + See \l{Making Applications Scriptable#Conversion Between QtScript and C++ Types} {Conversion Between QtScript and C++ Types} for more information about the restrictions on types that can be used with QScriptValue. @@ -1359,7 +1359,7 @@ QStringList QScriptEngine::importedExtensions() const Additionally, the type of each element in the sequence must be suitable for conversion to a C++ type from a QScriptValue. - See \l{QtScript Module#Conversion Between QtScript and C++ Types} + See \l{Making Applications Scriptable#Conversion Between QtScript and C++ Types} {Conversion Between QtScript and C++ Types} for more information about the restrictions on types that can be used with QScriptValue. @@ -1754,7 +1754,7 @@ QScriptValue QScriptEngine::objectById(qint64 id) const \brief The QScriptSyntaxCheckResult class provides the result of a script syntax check. \ingroup script - \mainclass + QScriptSyntaxCheckResult is returned by QScriptEngine::checkSyntax() to provide information about the syntactical (in)correctness of a script. diff --git a/src/script/qscriptengineagent.cpp b/src/script/qscriptengineagent.cpp index e381828..05efdd0 100644 --- a/src/script/qscriptengineagent.cpp +++ b/src/script/qscriptengineagent.cpp @@ -60,7 +60,7 @@ QT_BEGIN_NAMESPACE \brief The QScriptEngineAgent class provides an interface to report events pertaining to QScriptEngine execution. \ingroup script - \mainclass + The QScriptEngineAgent class is the basis of tools that monitor and/or control the execution of a QScriptEngine, such as debuggers and profilers. diff --git a/src/script/qscriptstring.cpp b/src/script/qscriptstring.cpp index ffd81fc..49bf648 100644 --- a/src/script/qscriptstring.cpp +++ b/src/script/qscriptstring.cpp @@ -78,7 +78,7 @@ struct QScriptStringPrivatePointerDeleter \brief The QScriptString class acts as a handle to "interned" strings in a QScriptEngine. \ingroup script - \mainclass + QScriptString can be used to achieve faster (repeated) property getting/setting, and comparison of property names, of diff --git a/src/script/qscriptvalue.cpp b/src/script/qscriptvalue.cpp index a23d4e8..131d9dc 100644 --- a/src/script/qscriptvalue.cpp +++ b/src/script/qscriptvalue.cpp @@ -80,7 +80,7 @@ struct QScriptValuePrivatePointerDeleter \brief The QScriptValue class acts as a container for the Qt Script data types. \ingroup script - \mainclass + QScriptValue supports the types defined in the \l{ECMA-262} standard: The primitive types, which are Undefined, Null, Boolean, diff --git a/src/script/qscriptvalueiterator.cpp b/src/script/qscriptvalueiterator.cpp index 796b38e..a7afc9e 100644 --- a/src/script/qscriptvalueiterator.cpp +++ b/src/script/qscriptvalueiterator.cpp @@ -60,7 +60,7 @@ QT_BEGIN_NAMESPACE \brief The QScriptValueIterator class provides a Java-style iterator for QScriptValue. \ingroup script - \mainclass + The QScriptValueIterator constructor takes a QScriptValue as argument. After construction, the iterator is located at the very diff --git a/src/scripttools/debugging/qscriptdebugger.cpp b/src/scripttools/debugging/qscriptdebugger.cpp index 1ce9ab6..40f4d6c 100644 --- a/src/scripttools/debugging/qscriptdebugger.cpp +++ b/src/scripttools/debugging/qscriptdebugger.cpp @@ -136,8 +136,8 @@ static bool scriptDebuggerEventCallback(void **data) \brief The QScriptDebugger class provides a Qt Script debugger. - \ingroup scripttools - \mainclass + \ingroup script + */ class QScriptDebuggerPrivate diff --git a/src/scripttools/debugging/qscriptenginedebugger.cpp b/src/scripttools/debugging/qscriptenginedebugger.cpp index b8ed4ea..0588109 100644 --- a/src/scripttools/debugging/qscriptenginedebugger.cpp +++ b/src/scripttools/debugging/qscriptenginedebugger.cpp @@ -75,8 +75,8 @@ public: \brief The QScriptEngineDebugger class provides a QScriptEngine debugger. - \ingroup scripttools - \mainclass + \ingroup script + The QScriptEngineDebugger class provides a debugger that can be embedded into Qt applications that use Qt Script. The debugger diff --git a/src/scripttools/debugging/qscriptstdmessagehandler.cpp b/src/scripttools/debugging/qscriptstdmessagehandler.cpp index e54183c..d2aa1cf 100644 --- a/src/scripttools/debugging/qscriptstdmessagehandler.cpp +++ b/src/scripttools/debugging/qscriptstdmessagehandler.cpp @@ -91,18 +91,7 @@ void QScriptStdMessageHandler::message(QtMsgType type, const QString &text, } msg.append(text); - FILE *fp = 0; - switch (type) { - case QtDebugMsg: - fp = stdout; - break; - case QtWarningMsg: - case QtCriticalMsg: - case QtFatalMsg: - fp = stderr; - break; - } - + FILE *fp = (type == QtDebugMsg) ? stdout : stderr; fprintf(fp, "%s\n", msg.toLatin1().constData()); fflush(fp); } diff --git a/src/sql/kernel/qsql.qdoc b/src/sql/kernel/qsql.qdoc new file mode 100644 index 0000000..8e6e321 --- /dev/null +++ b/src/sql/kernel/qsql.qdoc @@ -0,0 +1,139 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \namespace QSql + \inmodule QtSql + \brief The QSql namespace contains miscellaneous identifiers used throughout + the Qt SQL library. + + \inheaderfile QtSql + \ingroup database + + + \sa {QtSql Module} +*/ + +/*! + \enum QSql::Confirm + \compat + + This enum type describes edit confirmations. + + \value Yes + \value No + \value Cancel +*/ + +/*! + \enum QSql::Op + \compat + + This enum type describes edit operations. + + \value None + \value Insert + \value Update + \value Delete +*/ + + +/*! + \enum QSql::Location + + This enum type describes special SQL navigation locations: + + \value BeforeFirstRow Before the first record. + \value AfterLastRow After the last record. + + \omitvalue BeforeFirst + \omitvalue AfterLast + + \sa QSqlQuery::at() +*/ + +/*! + \enum QSql::ParamTypeFlag + + This enum is used to specify the type of a bind parameter. + + \value In The bind parameter is used to put data into the database. + \value Out The bind parameter is used to receive data from the database. + \value InOut The bind parameter is used to put data into the + database; it will be overwritten with output data on executing + a query. + \value Binary This must be OR'd with one of the other flags if + you want to indicate that the data being transferred is + raw binary data. +*/ + +/*! + \enum QSql::TableType + + This enum type describes types of SQL tables. + + \value Tables All the tables visible to the user. + \value SystemTables Internal tables used by the database. + \value Views All the views visible to the user. + \value AllTables All of the above. +*/ + +/*! + \enum QSql::NumericalPrecisionPolicy + + This enum type describes at which precision levels numercial values are read from + a database. + + Some databases support numerical values with a precision that is not storable in a + C++ basic data type. The default behavior is to bind these values as a QString. + This enum can be used to override this behavior. + + \value LowPrecisionInt32 Force 32bit integer values. In case of floating point numbers, + the fractional part is silently discarded. + \value LowPrecisionInt64 Force 64bit integer values. In case of floating point numbers, + the fractional part is silently discarded. + \value LowPrecisionDouble Force \c double values. + \value HighPrecision The default behavior - try to preserve maximum precision. + + Note: The actual behaviour if an overflow occurs is driver specific. The Oracle database + just returns an error in this case. +*/ + diff --git a/src/sql/kernel/qsqldatabase.cpp b/src/sql/kernel/qsqldatabase.cpp index e94c247..d155c03 100644 --- a/src/sql/kernel/qsqldatabase.cpp +++ b/src/sql/kernel/qsqldatabase.cpp @@ -363,7 +363,7 @@ void QSqlDatabasePrivate::disable() a database. \ingroup database - \mainclass + \inmodule QtSql The QSqlDatabase class provides an interface for accessing a diff --git a/src/sql/kernel/qsqlquery.cpp b/src/sql/kernel/qsqlquery.cpp index 48ada28..e3944ac 100644 --- a/src/sql/kernel/qsqlquery.cpp +++ b/src/sql/kernel/qsqlquery.cpp @@ -101,7 +101,7 @@ QSqlQueryPrivate::~QSqlQueryPrivate() \ingroup database \ingroup shared - \mainclass + \inmodule QtSql QSqlQuery encapsulates the functionality involved in creating, diff --git a/src/svg/qgraphicssvgitem.cpp b/src/svg/qgraphicssvgitem.cpp index 3a01a41..a287baa 100644 --- a/src/svg/qgraphicssvgitem.cpp +++ b/src/svg/qgraphicssvgitem.cpp @@ -99,7 +99,6 @@ public: /*! \class QGraphicsSvgItem - \ingroup multimedia \ingroup graphicsview-api \brief The QGraphicsSvgItem class is a QGraphicsItem that can be used to render the contents of SVG files. diff --git a/src/svg/qsvggenerator.cpp b/src/svg/qsvggenerator.cpp index ee29feb..2936c3f 100644 --- a/src/svg/qsvggenerator.cpp +++ b/src/svg/qsvggenerator.cpp @@ -511,7 +511,7 @@ public: /*! \class QSvgGenerator - \ingroup multimedia + \ingroup painting \since 4.3 \brief The QSvgGenerator class provides a paint device that is used to create SVG drawings. \reentrant diff --git a/src/svg/qsvghandler.cpp b/src/svg/qsvghandler.cpp index 3b5bd0d..a79e4a0 100644 --- a/src/svg/qsvghandler.cpp +++ b/src/svg/qsvghandler.cpp @@ -1740,14 +1740,13 @@ static void parseOpacity(QSvgNode *node, const QSvgAttributes &attributes, QSvgHandler *) { - QString value = attributes.value(QLatin1String("opacity")).toString(); - value = value.trimmed(); + const QString value = attributes.value(QLatin1String("opacity")).toString().trimmed(); bool ok = false; qreal op = value.toDouble(&ok); if (ok) { - QSvgOpacityStyle *opacity = new QSvgOpacityStyle(qMin(qreal(1.0), qMax(qreal(0.0), op))); + QSvgOpacityStyle *opacity = new QSvgOpacityStyle(qBound(qreal(0.0), op, qreal(1.0))); node->appendStyleProperty(opacity, someId(attributes)); } } diff --git a/src/svg/qsvgrenderer.cpp b/src/svg/qsvgrenderer.cpp index bb1f946..573b4a4 100644 --- a/src/svg/qsvgrenderer.cpp +++ b/src/svg/qsvgrenderer.cpp @@ -55,7 +55,7 @@ QT_BEGIN_NAMESPACE /*! \class QSvgRenderer - \ingroup multimedia + \ingroup painting \brief The QSvgRenderer class is used to draw the contents of SVG files onto paint devices. \since 4.1 diff --git a/src/svg/qsvgstyle.cpp b/src/svg/qsvgstyle.cpp index 820f716..1ecf870 100644 --- a/src/svg/qsvgstyle.cpp +++ b/src/svg/qsvgstyle.cpp @@ -90,6 +90,7 @@ QSvgFillStyle::QSvgFillStyle(const QBrush &brush) , m_fillRule(Qt::WindingFill) , m_fillOpacitySet(false) , m_fillOpacity(1.0) + , m_oldOpacity(0) , m_gradientResolved(true) , m_fillSet(true) { @@ -101,6 +102,7 @@ QSvgFillStyle::QSvgFillStyle(QSvgStyleProperty *style) , m_fillRule(Qt::WindingFill) , m_fillOpacitySet(false) , m_fillOpacity(1.0) + , m_oldOpacity(0) , m_gradientResolved(true) , m_fillSet(style != 0) { @@ -858,7 +860,7 @@ QSvgStyleProperty::Type QSvgAnimateColor::type() const } QSvgOpacityStyle::QSvgOpacityStyle(qreal opacity) - : m_opacity(opacity) + : m_opacity(opacity), m_oldOpacity(0) { } diff --git a/src/svg/qsvgtinydocument.cpp b/src/svg/qsvgtinydocument.cpp index 5ab2608..614494f 100644 --- a/src/svg/qsvgtinydocument.cpp +++ b/src/svg/qsvgtinydocument.cpp @@ -61,10 +61,12 @@ QT_BEGIN_NAMESPACE QSvgTinyDocument::QSvgTinyDocument() - : QSvgStructureNode(0), - m_animated(false), - m_animationDuration(0), - m_fps(30) + : QSvgStructureNode(0) + , m_widthPercent(false) + , m_heightPercent(false) + , m_animated(false) + , m_animationDuration(0) + , m_fps(30) { } diff --git a/src/svg/qsvgwidget.cpp b/src/svg/qsvgwidget.cpp index f8e672a..b7b0ab0 100644 --- a/src/svg/qsvgwidget.cpp +++ b/src/svg/qsvgwidget.cpp @@ -52,7 +52,7 @@ QT_BEGIN_NAMESPACE /*! \class QSvgWidget - \ingroup multimedia + \ingroup painting \brief The QSvgWidget class provides a widget that is used to display the contents of Scalable Vector Graphics (SVG) files. diff --git a/src/svg/svg.pro b/src/svg/svg.pro index 662940a..d2a4227 100644 --- a/src/svg/svg.pro +++ b/src/svg/svg.pro @@ -46,5 +46,5 @@ symbian:TARGET.UID3=0x2001B2E2 contains(QT_CONFIG, zlib) { INCLUDEPATH += ../3rdparty/zlib } else:!contains(QT_CONFIG, no-zlib) { - unix:LIBS += -lz + unix:LIBS_PRIVATE += -lz } diff --git a/src/testlib/qsignalspy.qdoc b/src/testlib/qsignalspy.qdoc new file mode 100644 index 0000000..02cb771 --- /dev/null +++ b/src/testlib/qsignalspy.qdoc @@ -0,0 +1,98 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \class QSignalSpy + \inmodule QtTest + + \brief The QSignalSpy class enables introspection of signal emission. + + QSignalSpy can connect to any signal of any object and records its emission. + QSignalSpy itself is a list of QVariant lists. Each emission of the signal + will append one item to the list, containing the arguments of the signal. + + The following example records all signal emissions for the \c clicked() signal + of a QCheckBox: + + \snippet doc/src/snippets/code/doc_src_qsignalspy.qdoc 0 + + \c{spy.takeFirst()} returns the arguments for the first emitted signal, as a + list of QVariant objects. The \c clicked() signal has a single bool argument, + which is stored as the first entry in the list of arguments. + + The example below catches a signal from a custom object: + + \snippet doc/src/snippets/code/doc_src_qsignalspy.qdoc 1 + + \bold {Note:} Non-standard data types need to be registered, using + the qRegisterMetaType() function, before you can create a + QSignalSpy. For example: + + \snippet doc/src/snippets/code/doc_src_qsignalspy.qdoc 2 + + To retrieve the \c QModelIndex, you can use qvariant_cast: + + \snippet doc/src/snippets/code/doc_src_qsignalspy.qdoc 3 + */ + +/*! \fn QSignalSpy::QSignalSpy(QObject *object, const char *signal) + + Constructs a new QSignalSpy that listens for emissions of the \a signal + from the QObject \a object. Neither \a signal nor \a object can be null. + + Example: + \snippet doc/src/snippets/code/doc_src_qsignalspy.qdoc 4 +*/ + +/*! \fn QSignalSpy::isValid() const + + Returns true if the signal spy listens to a valid signal, otherwise false. +*/ + +/*! \fn QSignalSpy::signal() const + + Returns the normalized signal the spy is currently listening to. +*/ + +/*! \fn int QSignalSpy::qt_metacall(QMetaObject::Call call, int id, void **a) + \internal +*/ + diff --git a/src/testlib/qtestevent.qdoc b/src/testlib/qtestevent.qdoc new file mode 100644 index 0000000..7c67d95 --- /dev/null +++ b/src/testlib/qtestevent.qdoc @@ -0,0 +1,191 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \class QTestEventList + \inmodule QtTest + + \brief The QTestEventList class provides a list of GUI events. + + QTestEventList inherits from QList<QTestEvent *>, and provides + convenience functions for populating the list. + + A QTestEventList can be populated with GUI events that can be + stored as test data for later usage, or be replayed on any + QWidget. + + Example: + \snippet doc/src/snippets/code/doc_src_qtestevent.qdoc 0 + + The example above simulates the user entering the character \c a + followed by a backspace, waiting for 200 milliseconds and + repeating it. +*/ + +/*! \fn QTestEventList::QTestEventList() + + Constructs an empty QTestEventList. +*/ + +/*! \fn QTestEventList::QTestEventList(const QTestEventList &other) + + Constructs a new QTestEventList as a copy of \a other. +*/ + +/*! \fn QTestEventList::~QTestEventList() + + Empties the list and destroys all stored events. +*/ + +/*! \fn void QTestEventList::clear() + + Removes all events from the list. +*/ + +/*! \fn void QTestEventList::addKeyClick(Qt::Key qtKey, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1) + + Adds a new key click to the list. The event will simulate the key \a qtKey with the modifier \a modifiers and then wait for \a msecs milliseconds. + + \sa QTest::keyClick() +*/ + +/*! \fn void QTestEventList::addKeyPress(Qt::Key qtKey, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1) + + Adds a new key press to the list. The event will press the key \a qtKey with the modifier \a modifiers and then wait for \a msecs milliseconds. + + \sa QTest::keyPress() +*/ + +/*! \fn void QTestEventList::addKeyRelease(Qt::Key qtKey, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1) + + Adds a new key release to the list. The event will release the key \a qtKey with the modifier \a modifiers and then wait for \a msecs milliseconds. + + \sa QTest::keyRelease() + +*/ + +/*! \fn void QTestEventList::addKeyEvent(QTest::KeyAction action, Qt::Key qtKey, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1) + \internal +*/ + +/*! \fn void QTestEventList::addKeyClick(char ascii, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1) + + \overload + + Adds a new key click to the list. The event will simulate the key \a ascii with the modifier \a modifiers and then wait for \a msecs milliseconds. + + \sa QTest::keyClick() + +*/ + +/*! \fn void QTestEventList::addKeyPress(char ascii, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1) + + \overload + + Adds a new key press to the list. The event will press the key \a ascii with the modifier \a modifiers and then wait for \a msecs milliseconds. + + \sa QTest::keyPress() +*/ + +/*! \fn void QTestEventList::addKeyRelease(char ascii, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1) + + \overload + + Adds a new key release to the list. The event will release the key \a ascii with the modifier \a modifiers and then wait for \a msecs milliseconds. + + \sa QTest::keyRelease() +*/ + +/*! \fn void QTestEventList::addKeyClicks(const QString &keys, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1) + + Adds new keyboard entries to the list. The event will press the \a keys with the \a modifiers and wait \a msecs milliseconds between each key. + + \sa QTest::keyClicks() +*/ + +/*! \fn void QTestEventList::addKeyEvent(QTest::KeyAction action, char ascii, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1) + \internal +*/ + +/*! \fn void QTestEventList::addDelay(int msecs) + + Adds a \a msecs milliseconds delay. + + \sa QTest::qWait() +*/ + +/*! \fn void QTestEventList::simulate(QWidget *w) + + Simulates the events from the list one by one on the widget \a w. + For an example, please read the \l QTestEventList class documentation. +*/ + +/*! \fn void QTestEventList::addMousePress(Qt::MouseButton button, Qt::KeyboardModifiers modifiers = 0, QPoint pos = QPoint(), int delay=-1) + + Add a mouse press to the list. The event will press the \a button with optional \a modifiers at the position \a pos with an optional \a delay. The default position is the center of the widget. + + \sa QTest::mousePress() +*/ +/*! \fn void QTestEventList::addMouseRelease(Qt::MouseButton button, Qt::KeyboardModifiers modifiers = 0, QPoint pos = QPoint(), int delay=-1) + + Add a mouse release to the list. The event will release the \a button with optional \a modifiers at the position \a pos with an optional \a delay. The default position is the center of the widget. + + \sa QTest::mouseRelease() +*/ +/*! \fn void QTestEventList::addMouseClick(Qt::MouseButton button, Qt::KeyboardModifiers modifiers = 0, QPoint pos = QPoint(), int delay=-1) + + Add a mouse click to the list. The event will click the \a button with optional \a modifiers at the position \a pos with an optional \a delay. The default position is the center of the widget. + + \sa QTest::mouseClick() +*/ +/*! \fn void QTestEventList::addMouseDClick(Qt::MouseButton button, Qt::KeyboardModifiers modifiers = 0, QPoint pos = QPoint(), int delay=-1) + + Add a double mouse click to the list. The event will double click the \a button with optional \a modifiers at the position \a pos with an optional \a delay. The default position is the center of the widget. + + \sa QTest::mousePress() +*/ +/*! \fn void QTestEventList::addMouseMove(QPoint pos = QPoint(), int delay=-1) + + Adds a mouse move to the list. The event will move the mouse to the position \a pos. If a \a delay (in milliseconds) is set, the test will wait after moving the mouse. The default position is the center of the widget. + + \sa QTest::mousePress() +*/ + diff --git a/src/testlib/testlib.pro b/src/testlib/testlib.pro index 00780b4..b098c16 100644 --- a/src/testlib/testlib.pro +++ b/src/testlib/testlib.pro @@ -57,10 +57,9 @@ wince*::LIBS += libcmt.lib \ commctrl.lib \ coredll.lib \ winsock.lib -mac:LIBS += -framework \ - IOKit \ - -framework \ - Security +mac:LIBS += -framework IOKit \ + -framework ApplicationServices \ + -framework Security include(../qbase.pri) QMAKE_TARGET_PRODUCT = QTestLib QMAKE_TARGET_DESCRIPTION = Qt \ diff --git a/src/tools/bootstrap/bootstrap.pro b/src/tools/bootstrap/bootstrap.pro index 396e9ae..1f81a6c 100644 --- a/src/tools/bootstrap/bootstrap.pro +++ b/src/tools/bootstrap/bootstrap.pro @@ -69,7 +69,7 @@ SOURCES += \ ../../corelib/tools/qbytearraymatcher.cpp \ ../../corelib/tools/qdatetime.cpp \ ../../corelib/tools/qhash.cpp \ - ../../corelib/tools/qlistdata.cpp \ + ../../corelib/tools/qlist.cpp \ ../../corelib/tools/qlocale.cpp \ ../../corelib/tools/qmap.cpp \ ../../corelib/tools/qregexp.cpp \ diff --git a/src/xml/dom/qdom.cpp b/src/xml/dom/qdom.cpp index 0b69b4c..cd9f37e 100644 --- a/src/xml/dom/qdom.cpp +++ b/src/xml/dom/qdom.cpp @@ -1845,8 +1845,7 @@ QDomNodePrivate* QDomNodePrivate::removeChild(QDomNodePrivate* oldChild) oldChild->prev = 0; // We are no longer interested in the old node - if (oldChild) - oldChild->ref.deref(); + oldChild->ref.deref(); return oldChild; } @@ -1939,7 +1938,7 @@ void QDomNodePrivate::setLocation(int lineNumber, int columnNumber) \inmodule QtXml \ingroup xml-tools - \mainclass + Many functions in the DOM return a QDomNode. @@ -4360,7 +4359,7 @@ bool QDomAttr::specified() const QDomElement QDomAttr::ownerElement() const { Q_ASSERT(impl->parent()); - if (!impl || !impl->parent()->isElement()) + if (!impl->parent()->isElement()) return QDomElement(); return QDomElement((QDomElementPrivate*)(impl->parent())); } @@ -6515,7 +6514,7 @@ void QDomDocumentPrivate::saveDocument(QTextStream& s, const int indent, QDomNod \brief The QDomDocument class represents an XML document. \inmodule QtXml - \mainclass + \ingroup xml-tools The QDomDocument class represents the entire XML document. diff --git a/src/xml/sax/qxml.cpp b/src/xml/sax/qxml.cpp index f29e8cf..d7ac5c5 100644 --- a/src/xml/sax/qxml.cpp +++ b/src/xml/sax/qxml.cpp @@ -3012,7 +3012,7 @@ void QXmlSimpleReaderPrivate::initIncrementalParsing() \inmodule QtXml \ingroup xml-tools - \mainclass + This XML reader is suitable for a wide range of applications. It is able to parse well-formed XML and can report the namespaces of diff --git a/src/xmlpatterns/api/qabstractxmlnodemodel.cpp b/src/xmlpatterns/api/qabstractxmlnodemodel.cpp index 51245c9..fda7cb4 100644 --- a/src/xmlpatterns/api/qabstractxmlnodemodel.cpp +++ b/src/xmlpatterns/api/qabstractxmlnodemodel.cpp @@ -190,8 +190,7 @@ bool QAbstractXmlNodeModel::isIgnorableInDeepEqual(const QXmlNodeModelIndex &n) Because the node model can be accessed concurrently by threads in the QtXmlPatterns module, subclasses of QAbstractXmlNodeModel must - be written to be \l{Thread Support in Qt#Reentrancy and Thread-Safety} - {thread-safe}. + be written to be \l{Reentrancy and Thread-Safety}{thread-safe}. Classes that simplify implementing thread-safety include QReadLocker and QWriteLocker. diff --git a/src/xmlpatterns/api/qxmlquery.cpp b/src/xmlpatterns/api/qxmlquery.cpp index b5b5244..9f9b136 100644 --- a/src/xmlpatterns/api/qxmlquery.cpp +++ b/src/xmlpatterns/api/qxmlquery.cpp @@ -151,7 +151,7 @@ QT_BEGIN_NAMESPACE \endcode \note For the current release, XSLT support should be considered - experimental. See section \l{QtXmlPatterns Module#XSLT + experimental. See section \l{Using XML technologies#XSLT 2.0}{XSLT conformance} for details. Stylesheet parameters are bound using bindVariable(). @@ -291,7 +291,7 @@ QXmlQuery::QXmlQuery(const QXmlNamePool &np) : d(new QXmlQueryPrivate(np)) create instances of QXmlQuery for running XQueries. \note The XSL-T support in this release is considered experimental. - See the \l{QtXmlPatterns Module#XSLT 2.0}{XSLT conformance} for + See the \l{Using XML technologies#XSLT 2.0}{XSLT conformance} for details. \since 4.5 diff --git a/src/xmlpatterns/data/qatomicvalue.cpp b/src/xmlpatterns/data/qatomicvalue.cpp index 24f1a01..8559c80 100644 --- a/src/xmlpatterns/data/qatomicvalue.cpp +++ b/src/xmlpatterns/data/qatomicvalue.cpp @@ -134,7 +134,7 @@ Item AtomicValue::toXDM(const QVariant &value) Q_ASSERT_X(value.isValid(), Q_FUNC_INFO, "QVariants sent to Patternist must be valid."); - switch(value.type()) + switch(value.userType()) { case QVariant::Char: /* Fallthrough. A single codepoint is a string in XQuery. */ @@ -166,6 +166,8 @@ Item AtomicValue::toXDM(const QVariant &value) return Date::fromDateTime(QDateTime(value.toDate(), QTime(), Qt::UTC)); case QVariant::DateTime: return DateTime::fromDateTime(value.toDateTime()); + case QMetaType::Float: + return Item(Double::fromValue(value.toFloat())); case QVariant::Double: return Item(Double::fromValue(value.toDouble())); default: diff --git a/src/xmlpatterns/utils/qautoptr.cpp b/src/xmlpatterns/utils/qautoptr.cpp index 619423b..5ab691d 100644 --- a/src/xmlpatterns/utils/qautoptr.cpp +++ b/src/xmlpatterns/utils/qautoptr.cpp @@ -44,7 +44,5 @@ \brief A smart pointer very similar to std::auto_ptr. \internal \since 4.4 - \ingroup misc - */ |