summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/freetype/src/psnames
diff options
context:
space:
mode:
authorKonstantin Ritt <ritt.ks@gmail.com>2013-03-26 08:57:05 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-04-01 12:03:55 +0200
commit6845a4fb0147117e8517d66f18792ca7acdbe06e (patch)
tree68e35417b79989a7af8a4ea8c0d282b84dbe0a6e /src/3rdparty/freetype/src/psnames
parent0fcadcca3d0842354de07ffaa8c622e607aab22c (diff)
Update bundled FreeType sources to 2.3.12
Most important changes: * SFNT cmap 13 table format support; * fixed glitches when rasterizing stretched TTF (xsize!=ysize); * various fixes in Type1, CFF, and PCF drivers Change-Id: Ib9e2210ffbd0daa2fdbf518ea87f4be502de6b48 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'src/3rdparty/freetype/src/psnames')
-rw-r--r--src/3rdparty/freetype/src/psnames/Jamfile2
-rw-r--r--src/3rdparty/freetype/src/psnames/psmodule.c73
-rw-r--r--src/3rdparty/freetype/src/psnames/psmodule.h2
-rw-r--r--src/3rdparty/freetype/src/psnames/psnames.c1
-rw-r--r--src/3rdparty/freetype/src/psnames/pspic.c77
-rw-r--r--src/3rdparty/freetype/src/psnames/pspic.h54
6 files changed, 173 insertions, 36 deletions
diff --git a/src/3rdparty/freetype/src/psnames/Jamfile b/src/3rdparty/freetype/src/psnames/Jamfile
index d85c1e97de..06c0dda66f 100644
--- a/src/3rdparty/freetype/src/psnames/Jamfile
+++ b/src/3rdparty/freetype/src/psnames/Jamfile
@@ -16,7 +16,7 @@ SubDir FT2_TOP $(FT2_SRC_DIR) psnames ;
if $(FT2_MULTI)
{
- _sources = psmodule ;
+ _sources = psmodule pspic ;
}
else
{
diff --git a/src/3rdparty/freetype/src/psnames/psmodule.c b/src/3rdparty/freetype/src/psnames/psmodule.c
index 41942a9b46..00b363f8bb 100644
--- a/src/3rdparty/freetype/src/psnames/psmodule.c
+++ b/src/3rdparty/freetype/src/psnames/psmodule.c
@@ -24,6 +24,7 @@
#include "pstables.h"
#include "psnamerr.h"
+#include "pspic.h"
#ifdef FT_CONFIG_OPTION_POSTSCRIPT_NAMES
@@ -33,7 +34,7 @@
#define VARIANT_BIT 0x80000000UL
-#define BASE_GLYPH( code ) ( (code) & ~VARIANT_BIT )
+#define BASE_GLYPH( code ) ( (FT_UInt32)( (code) & ~VARIANT_BIT ) )
/* Return the Unicode value corresponding to a given glyph. Note that */
@@ -57,7 +58,7 @@
/* `uniXXXXYYYYZZZZ'... */
FT_Int count;
- FT_ULong value = 0;
+ FT_UInt32 value = 0;
const char* p = glyph_name + 3;
@@ -92,7 +93,7 @@
if ( *p == '\0' )
return value;
if ( *p == '.' )
- return value | VARIANT_BIT;
+ return (FT_UInt32)( value | VARIANT_BIT );
}
}
@@ -101,7 +102,7 @@
if ( glyph_name[0] == 'u' )
{
FT_Int count;
- FT_ULong value = 0;
+ FT_UInt32 value = 0;
const char* p = glyph_name + 1;
@@ -132,7 +133,7 @@
if ( *p == '\0' )
return value;
if ( *p == '.' )
- return value | VARIANT_BIT;
+ return (FT_UInt32)( value | VARIANT_BIT );
}
}
@@ -154,9 +155,10 @@
/* now look up the glyph in the Adobe Glyph List */
if ( !dot )
- return ft_get_adobe_glyph_index( glyph_name, p );
+ return (FT_UInt32)ft_get_adobe_glyph_index( glyph_name, p );
else
- return ft_get_adobe_glyph_index( glyph_name, dot ) | VARIANT_BIT;
+ return (FT_UInt32)( ft_get_adobe_glyph_index( glyph_name, dot ) |
+ VARIANT_BIT );
}
}
@@ -435,7 +437,7 @@
}
- static FT_ULong
+ static FT_UInt32
ps_unicodes_char_next( PS_Unicodes table,
FT_UInt32 *unicode )
{
@@ -516,38 +518,43 @@
}
- static
- const FT_Service_PsCMapsRec pscmaps_interface =
- {
#ifdef FT_CONFIG_OPTION_ADOBE_GLYPH_LIST
-
+ FT_DEFINE_SERVICE_PSCMAPSREC(pscmaps_interface,
(PS_Unicode_ValueFunc) ps_unicode_value,
(PS_Unicodes_InitFunc) ps_unicodes_init,
(PS_Unicodes_CharIndexFunc)ps_unicodes_char_index,
(PS_Unicodes_CharNextFunc) ps_unicodes_char_next,
+ (PS_Macintosh_NameFunc) ps_get_macintosh_name,
+ (PS_Adobe_Std_StringsFunc) ps_get_standard_strings,
+
+ t1_standard_encoding,
+ t1_expert_encoding
+ )
+
#else
+ FT_DEFINE_SERVICE_PSCMAPSREC(pscmaps_interface,
0,
0,
0,
0,
-#endif /* FT_CONFIG_OPTION_ADOBE_GLYPH_LIST */
-
(PS_Macintosh_NameFunc) ps_get_macintosh_name,
(PS_Adobe_Std_StringsFunc) ps_get_standard_strings,
t1_standard_encoding,
t1_expert_encoding
- };
+ )
+
+#endif /* FT_CONFIG_OPTION_ADOBE_GLYPH_LIST */
+
+
+ FT_DEFINE_SERVICEDESCREC1(pscmaps_services,
+ FT_SERVICE_ID_POSTSCRIPT_CMAPS, &FT_PSCMAPS_INTERFACE_GET
+ )
- static const FT_ServiceDescRec pscmaps_services[] =
- {
- { FT_SERVICE_ID_POSTSCRIPT_CMAPS, &pscmaps_interface },
- { NULL, NULL }
- };
static FT_Pointer
@@ -556,16 +563,20 @@
{
FT_UNUSED( module );
- return ft_service_list_lookup( pscmaps_services, service_id );
+ return ft_service_list_lookup( FT_PSCMAPS_SERVICES_GET, service_id );
}
#endif /* FT_CONFIG_OPTION_POSTSCRIPT_NAMES */
+#ifndef FT_CONFIG_OPTION_POSTSCRIPT_NAMES
+#define PUT_PS_NAMES_SERVICE(a) 0
+#else
+#define PUT_PS_NAMES_SERVICE(a) a
+#endif
- FT_CALLBACK_TABLE_DEF
- const FT_Module_Class psnames_module_class =
- {
+ FT_DEFINE_MODULE(psnames_module_class,
+
0, /* this is not a font driver, nor a renderer */
sizeof ( FT_ModuleRec ),
@@ -573,18 +584,12 @@
0x10000L, /* driver version */
0x20000L, /* driver requires FreeType 2 or above */
-#ifndef FT_CONFIG_OPTION_POSTSCRIPT_NAMES
- 0,
- (FT_Module_Constructor)0,
- (FT_Module_Destructor) 0,
- (FT_Module_Requester) 0
-#else
- (void*)&pscmaps_interface, /* module specific interface */
+ PUT_PS_NAMES_SERVICE((void*)&FT_PSCMAPS_INTERFACE_GET), /* module specific interface */
(FT_Module_Constructor)0,
(FT_Module_Destructor) 0,
- (FT_Module_Requester) psnames_get_service
-#endif
- };
+ (FT_Module_Requester) PUT_PS_NAMES_SERVICE(psnames_get_service)
+ )
+
/* END */
diff --git a/src/3rdparty/freetype/src/psnames/psmodule.h b/src/3rdparty/freetype/src/psnames/psmodule.h
index 232fdfb9a9..28fa14807c 100644
--- a/src/3rdparty/freetype/src/psnames/psmodule.h
+++ b/src/3rdparty/freetype/src/psnames/psmodule.h
@@ -27,7 +27,7 @@
FT_BEGIN_HEADER
- FT_EXPORT_VAR( const FT_Module_Class ) psnames_module_class;
+ FT_DECLARE_MODULE( psnames_module_class )
FT_END_HEADER
diff --git a/src/3rdparty/freetype/src/psnames/psnames.c b/src/3rdparty/freetype/src/psnames/psnames.c
index d6ed998bfb..1ede225dc9 100644
--- a/src/3rdparty/freetype/src/psnames/psnames.c
+++ b/src/3rdparty/freetype/src/psnames/psnames.c
@@ -19,6 +19,7 @@
#define FT_MAKE_OPTION_SINGLE_OBJECT
#include <ft2build.h>
+#include "pspic.c"
#include "psmodule.c"
diff --git a/src/3rdparty/freetype/src/psnames/pspic.c b/src/3rdparty/freetype/src/psnames/pspic.c
new file mode 100644
index 0000000000..ed7dadda39
--- /dev/null
+++ b/src/3rdparty/freetype/src/psnames/pspic.c
@@ -0,0 +1,77 @@
+/***************************************************************************/
+/* */
+/* pspic.c */
+/* */
+/* The FreeType position independent code services for psnames module. */
+/* */
+/* Copyright 2009 by */
+/* Oran Agra and Mickey Gabel. */
+/* */
+/* 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_FREETYPE_H
+#include FT_INTERNAL_OBJECTS_H
+#include "pspic.h"
+
+#ifdef FT_CONFIG_OPTION_PIC
+
+ /* forward declaration of PIC init functions from psmodule.c */
+ FT_Error FT_Create_Class_pscmaps_services( FT_Library, FT_ServiceDescRec**);
+ void FT_Destroy_Class_pscmaps_services( FT_Library, FT_ServiceDescRec*);
+ void FT_Init_Class_pscmaps_interface( FT_Library, FT_Service_PsCMapsRec*);
+
+ void
+ psnames_module_class_pic_free( FT_Library library )
+ {
+ FT_PIC_Container* pic_container = &library->pic_container;
+ FT_Memory memory = library->memory;
+ if ( pic_container->psnames )
+ {
+ PSModulePIC* container = (PSModulePIC*)pic_container->psnames;
+ if(container->pscmaps_services)
+ FT_Destroy_Class_pscmaps_services(library, container->pscmaps_services);
+ container->pscmaps_services = NULL;
+ FT_FREE( container );
+ pic_container->psnames = NULL;
+ }
+ }
+
+ FT_Error
+ psnames_module_class_pic_init( FT_Library library )
+ {
+ FT_PIC_Container* pic_container = &library->pic_container;
+ FT_Error error = FT_Err_Ok;
+ PSModulePIC* container;
+ FT_Memory memory = library->memory;
+
+ /* allocate pointer, clear and set global container pointer */
+ if ( FT_ALLOC ( container, sizeof ( *container ) ) )
+ return error;
+ FT_MEM_SET( container, 0, sizeof(*container) );
+ pic_container->psnames = container;
+
+ /* initialize pointer table - this is how the module usually expects this data */
+ error = FT_Create_Class_pscmaps_services(library, &container->pscmaps_services);
+ if(error)
+ goto Exit;
+ FT_Init_Class_pscmaps_interface(library, &container->pscmaps_interface);
+
+Exit:
+ if(error)
+ psnames_module_class_pic_free(library);
+ return error;
+ }
+
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
+
+/* END */
diff --git a/src/3rdparty/freetype/src/psnames/pspic.h b/src/3rdparty/freetype/src/psnames/pspic.h
new file mode 100644
index 0000000000..75a14fdcb9
--- /dev/null
+++ b/src/3rdparty/freetype/src/psnames/pspic.h
@@ -0,0 +1,54 @@
+/***************************************************************************/
+/* */
+/* pspic.h */
+/* */
+/* The FreeType position independent code services for psnames module. */
+/* */
+/* Copyright 2009 by */
+/* Oran Agra and Mickey Gabel. */
+/* */
+/* 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 __PSPIC_H__
+#define __PSPIC_H__
+
+
+FT_BEGIN_HEADER
+
+#include FT_INTERNAL_PIC_H
+
+#ifndef FT_CONFIG_OPTION_PIC
+#define FT_PSCMAPS_SERVICES_GET pscmaps_services
+#define FT_PSCMAPS_INTERFACE_GET pscmaps_interface
+
+#else /* FT_CONFIG_OPTION_PIC */
+
+#include FT_SERVICE_POSTSCRIPT_CMAPS_H
+
+ typedef struct PSModulePIC_
+ {
+ FT_ServiceDescRec* pscmaps_services;
+ FT_Service_PsCMapsRec pscmaps_interface;
+ } PSModulePIC;
+
+#define GET_PIC(lib) ((PSModulePIC*)((lib)->pic_container.psnames))
+#define FT_PSCMAPS_SERVICES_GET (GET_PIC(library)->pscmaps_services)
+#define FT_PSCMAPS_INTERFACE_GET (GET_PIC(library)->pscmaps_interface)
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
+ /* */
+
+FT_END_HEADER
+
+#endif /* __PSPIC_H__ */
+
+
+/* END */