freetype-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[ft-devel] [PATCH 1/2] builds/windows/ftsystem.c: Added Unicode support.


From: Azamat H. Hackimov
Subject: [ft-devel] [PATCH 1/2] builds/windows/ftsystem.c: Added Unicode support.
Date: Mon, 30 Oct 2017 12:34:51 +0500

Now you can load filenames with Unicode characters.
Added ftsystem.c with customized ft_ansi_stream_io() function (used
MultiByteToWideChar() and _wfopen() functions from Windows API).
This feature only available from Windows 2000 and later. Windows 9x is
not supported and still uses default fopen() calls.
---
 builds/windows/ftsystem.c                      | 343 +++++++++++++++++++++++++
 builds/windows/vc2010/freetype.sln             |  49 ++--
 builds/windows/vc2010/freetype.vcxproj         |  40 +--
 builds/windows/vc2010/freetype.vcxproj.filters |  29 +--
 4 files changed, 398 insertions(+), 63 deletions(-)
 create mode 100644 builds/windows/ftsystem.c

diff --git a/builds/windows/ftsystem.c b/builds/windows/ftsystem.c
new file mode 100644
index 000000000..24bdf5fbe
--- /dev/null
+++ b/builds/windows/ftsystem.c
@@ -0,0 +1,343 @@
+/***************************************************************************/
+/*                                                                         */
+/*  ftsystem.c                                                             */
+/*                                                                         */
+/*    Windows-specific FreeType low-level system interface (body).         */
+/*                                                                         */
+/*  Copyright 1996-2017 by                                                 */
+/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
+/*                                                                         */
+/*  This file is part of the FreeType project, and may only be used,       */
+/*  modified, and distributed under the terms of the FreeType project      */
+/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
+/*  this file you indicate that you have read the license and              */
+/*  understand and accept it fully.                                        */
+/*                                                                         */
+/***************************************************************************/
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* This file contains the default interface used by FreeType to access   */
+  /* low-level, i.e. memory management, i/o access as well as thread       */
+  /* synchronisation.  It can be replaced by user-specific routines if     */
+  /* necessary.                                                            */
+  /*                                                                       */
+  /*************************************************************************/
+
+
+#include <ft2build.h>
+#include FT_CONFIG_CONFIG_H
+#include FT_INTERNAL_DEBUG_H
+#include FT_INTERNAL_STREAM_H
+#include FT_SYSTEM_H
+#include FT_ERRORS_H
+#include FT_TYPES_H
+
+#ifdef UNICODE
+#include <windows.h>
+#include <stdio.h>
+#define MAX_WIN32_FNAME 2048
+#endif
+
+  /*************************************************************************/
+  /*                                                                       */
+  /*                       MEMORY MANAGEMENT INTERFACE                     */
+  /*                                                                       */
+  /*************************************************************************/
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* It is not necessary to do any error checking for the                  */
+  /* allocation-related functions.  This will be done by the higher level  */
+  /* routines like ft_mem_alloc() or ft_mem_realloc().                     */
+  /*                                                                       */
+  /*************************************************************************/
+
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* <Function>                                                            */
+  /*    ft_alloc                                                           */
+  /*                                                                       */
+  /* <Description>                                                         */
+  /*    The memory allocation function.                                    */
+  /*                                                                       */
+  /* <Input>                                                               */
+  /*    memory :: A pointer to the memory object.                          */
+  /*                                                                       */
+  /*    size   :: The requested size in bytes.                             */
+  /*                                                                       */
+  /* <Return>                                                              */
+  /*    The address of newly allocated block.                              */
+  /*                                                                       */
+  FT_CALLBACK_DEF( void* )
+  ft_alloc( FT_Memory  memory,
+            long       size )
+  {
+    FT_UNUSED( memory );
+
+    return ft_smalloc( (size_t)size );
+  }
+
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* <Function>                                                            */
+  /*    ft_realloc                                                         */
+  /*                                                                       */
+  /* <Description>                                                         */
+  /*    The memory reallocation function.                                  */
+  /*                                                                       */
+  /* <Input>                                                               */
+  /*    memory   :: A pointer to the memory object.                        */
+  /*                                                                       */
+  /*    cur_size :: The current size of the allocated memory block.        */
+  /*                                                                       */
+  /*    new_size :: The newly requested size in bytes.                     */
+  /*                                                                       */
+  /*    block    :: The current address of the block in memory.            */
+  /*                                                                       */
+  /* <Return>                                                              */
+  /*    The address of the reallocated memory block.                       */
+  /*                                                                       */
+  FT_CALLBACK_DEF( void* )
+  ft_realloc( FT_Memory  memory,
+              long       cur_size,
+              long       new_size,
+              void*      block )
+  {
+    FT_UNUSED( memory );
+    FT_UNUSED( cur_size );
+
+    return ft_srealloc( block, (size_t)new_size );
+  }
+
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* <Function>                                                            */
+  /*    ft_free                                                            */
+  /*                                                                       */
+  /* <Description>                                                         */
+  /*    The memory release function.                                       */
+  /*                                                                       */
+  /* <Input>                                                               */
+  /*    memory  :: A pointer to the memory object.                         */
+  /*                                                                       */
+  /*    block   :: The address of block in memory to be freed.             */
+  /*                                                                       */
+  FT_CALLBACK_DEF( void )
+  ft_free( FT_Memory  memory,
+           void*      block )
+  {
+    FT_UNUSED( memory );
+
+    ft_sfree( block );
+  }
+
+
+  /*************************************************************************/
+  /*                                                                       */
+  /*                     RESOURCE MANAGEMENT INTERFACE                     */
+  /*                                                                       */
+  /*************************************************************************/
+
+#ifndef FT_CONFIG_OPTION_DISABLE_STREAM_SUPPORT
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* 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_io
+
+  /* We use the macro STREAM_FILE for convenience to extract the       */
+  /* system-specific stream handle from a given FreeType stream object */
+#define STREAM_FILE( stream )  ( (FT_FILE*)stream->descriptor.pointer )
+
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* <Function>                                                            */
+  /*    ft_ansi_stream_close                                               */
+  /*                                                                       */
+  /* <Description>                                                         */
+  /*    The function to close a stream.                                    */
+  /*                                                                       */
+  /* <Input>                                                               */
+  /*    stream :: A pointer to the stream object.                          */
+  /*                                                                       */
+  FT_CALLBACK_DEF( void )
+  ft_ansi_stream_close( FT_Stream  stream )
+  {
+    ft_fclose( STREAM_FILE( stream ) );
+
+    stream->descriptor.pointer = NULL;
+    stream->size               = 0;
+    stream->base               = NULL;
+  }
+
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* <Function>                                                            */
+  /*    ft_ansi_stream_io                                                  */
+  /*                                                                       */
+  /* <Description>                                                         */
+  /*    The function to open a stream.                                     */
+  /*                                                                       */
+  /* <Input>                                                               */
+  /*    stream :: A pointer to the stream object.                          */
+  /*                                                                       */
+  /*    offset :: The position in the data stream to start reading.        */
+  /*                                                                       */
+  /*    buffer :: The address of buffer to store the read data.            */
+  /*                                                                       */
+  /*    count  :: The number of bytes to read from the stream.             */
+  /*                                                                       */
+  /* <Return>                                                              */
+  /*    The number of bytes actually read.  If `count' is zero (this is,   */
+  /*    the function is used for seeking), a non-zero return value         */
+  /*    indicates an error.                                                */
+  /*                                                                       */
+  FT_CALLBACK_DEF( unsigned long )
+  ft_ansi_stream_io( FT_Stream       stream,
+                     unsigned long   offset,
+                     unsigned char*  buffer,
+                     unsigned long   count )
+  {
+    FT_FILE*  file;
+
+
+    if ( !count && offset > stream->size )
+      return 1;
+
+    file = STREAM_FILE( stream );
+
+    if ( stream->pos != offset )
+      ft_fseek( file, (long)offset, SEEK_SET );
+
+    return (unsigned long)ft_fread( buffer, 1, count, file );
+  }
+
+
+  /* documentation is in ftstream.h */
+
+  FT_BASE_DEF( FT_Error )
+  FT_Stream_Open( FT_Stream    stream,
+                  const char*  filepathname )
+  {
+    FT_FILE*  file;
+
+
+    if ( !stream )
+      return FT_THROW( Invalid_Stream_Handle );
+
+    stream->descriptor.pointer = NULL;
+    stream->pathname.pointer   = (char*)filepathname;
+    stream->base               = NULL;
+    stream->pos                = 0;
+    stream->read               = NULL;
+    stream->close              = NULL;
+
+  /* Windows-specific handling for opening Unicode filenames */
+    file = ft_fopen( filepathname, "rb" );
+  /* First attempt failed, assume that is Unicode filename, try
+       _wfopen() */
+#ifdef UNICODE
+    if ( !file )
+    {
+      wchar_t fnameW[MAX_WIN32_FNAME];
+      if ( MultiByteToWideChar( CP_UTF8, 0, filepathname, -1,
+                                 fnameW, MAX_WIN32_FNAME) == 0 )
+      {
+        file = NULL;
+      }
+      else
+      {
+           file = _wfopen(fnameW, L"rb");
+      }     
+    }
+#endif
+    if ( !file )
+    {
+      FT_ERROR(( "FT_Stream_Open:"
+                 " could not open `%s'\n", filepathname ));
+
+      return FT_THROW( Cannot_Open_Resource );
+    }
+
+    ft_fseek( file, 0, SEEK_END );
+    stream->size = (unsigned long)ft_ftell( file );
+    if ( !stream->size )
+    {
+      FT_ERROR(( "FT_Stream_Open:" ));
+      FT_ERROR(( " opened `%s' but zero-sized\n", filepathname ));
+      ft_fclose( file );
+      return FT_THROW( Cannot_Open_Stream );
+    }
+    ft_fseek( file, 0, SEEK_SET );
+
+    stream->descriptor.pointer = file;
+    stream->read  = ft_ansi_stream_io;
+    stream->close = ft_ansi_stream_close;
+
+    FT_TRACE1(( "FT_Stream_Open:" ));
+    FT_TRACE1(( " opened `%s' (%d bytes) successfully\n",
+                filepathname, stream->size ));
+
+    return FT_Err_Ok;
+  }
+
+#endif /* !FT_CONFIG_OPTION_DISABLE_STREAM_SUPPORT */
+
+#ifdef FT_DEBUG_MEMORY
+
+  extern FT_Int
+  ft_mem_debug_init( FT_Memory  memory );
+
+  extern void
+  ft_mem_debug_done( FT_Memory  memory );
+
+#endif
+
+
+  /* documentation is in ftobjs.h */
+
+  FT_BASE_DEF( FT_Memory )
+  FT_New_Memory( void )
+  {
+    FT_Memory  memory;
+
+
+    memory = (FT_Memory)ft_smalloc( sizeof ( *memory ) );
+    if ( memory )
+    {
+      memory->user    = NULL;
+      memory->alloc   = ft_alloc;
+      memory->realloc = ft_realloc;
+      memory->free    = ft_free;
+#ifdef FT_DEBUG_MEMORY
+      ft_mem_debug_init( memory );
+#endif
+    }
+
+    return memory;
+  }
+
+
+  /* documentation is in ftobjs.h */
+
+  FT_BASE_DEF( void )
+  FT_Done_Memory( FT_Memory  memory )
+  {
+#ifdef FT_DEBUG_MEMORY
+    ft_mem_debug_done( memory );
+#endif
+    ft_sfree( memory );
+  }
+
+
+/* END */
diff --git a/builds/windows/vc2010/freetype.sln 
b/builds/windows/vc2010/freetype.sln
index b209eddd2..1e2465af0 100644
--- a/builds/windows/vc2010/freetype.sln
+++ b/builds/windows/vc2010/freetype.sln
@@ -1,49 +1,54 @@
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio Express 2012 for Windows Desktop
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 15
+VisualStudioVersion = 15.0.27004.2005
+MinimumVisualStudioVersion = 10.0.40219.1
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "freetype", 
"freetype.vcxproj", "{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}"
 EndProject
 Global
        GlobalSection(SolutionConfigurationPlatforms) = preSolution
-               Debug|Win32 = Debug|Win32
-               Debug|x64 = Debug|x64
                Debug Multithreaded|Win32 = Debug Multithreaded|Win32
                Debug Multithreaded|x64 = Debug Multithreaded|x64
                Debug Singlethreaded|Win32 = Debug Singlethreaded|Win32
                Debug Singlethreaded|x64 = Debug Singlethreaded|x64
-               Release|Win32 = Release|Win32
-               Release|x64 = Release|x64
+               Debug|Win32 = Debug|Win32
+               Debug|x64 = Debug|x64
                Release Multithreaded|Win32 = Release Multithreaded|Win32
                Release Multithreaded|x64 = Release Multithreaded|x64
                Release Singlethreaded|Win32 = Release Singlethreaded|Win32
                Release Singlethreaded|x64 = Release Singlethreaded|x64
+               Release|Win32 = Release|Win32
+               Release|x64 = Release|x64
        EndGlobalSection
        GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug 
Multithreaded|Win32.ActiveCfg = Debug Static|Win32
+               {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug 
Multithreaded|Win32.Build.0 = Debug Static|Win32
+               {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug 
Multithreaded|x64.ActiveCfg = Debug Static|x64
+               {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug 
Multithreaded|x64.Build.0 = Debug Static|x64
+               {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug 
Singlethreaded|Win32.ActiveCfg = Debug Static|Win32
+               {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug 
Singlethreaded|Win32.Build.0 = Debug Static|Win32
+               {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug 
Singlethreaded|x64.ActiveCfg = Debug Static|x64
+               {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug 
Singlethreaded|x64.Build.0 = Debug Static|x64
                {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}.Debug|x64.ActiveCfg = 
Debug|x64
                {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|x64.Build.0 = 
Debug|x64
-               {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 
Multithreaded|x64.ActiveCfg = Debug Multithreaded|x64
-               {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug 
Multithreaded|x64.Build.0 = Debug Multithreaded|x64
-               {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 
Singlethreaded|x64.ActiveCfg = Debug Singlethreaded|x64
-               {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug 
Singlethreaded|x64.Build.0 = Debug Singlethreaded|x64
+               {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release 
Multithreaded|Win32.ActiveCfg = Release Static|Win32
+               {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release 
Multithreaded|Win32.Build.0 = Release Static|Win32
+               {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release 
Multithreaded|x64.ActiveCfg = Release Static|x64
+               {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release 
Multithreaded|x64.Build.0 = Release Static|x64
+               {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release 
Singlethreaded|Win32.ActiveCfg = Release Static|Win32
+               {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release 
Singlethreaded|Win32.Build.0 = Release Static|Win32
+               {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release 
Singlethreaded|x64.ActiveCfg = Release Static|x64
+               {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release 
Singlethreaded|x64.Build.0 = Release Static|x64
                {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|Win32.ActiveCfg 
= Release|Win32
                {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|Win32.Build.0 = 
Release|Win32
                {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|x64.ActiveCfg = 
Release|x64
                {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|x64.Build.0 = 
Release|x64
-               {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 
Multithreaded|x64.ActiveCfg = Release Multithreaded|x64
-               {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release 
Multithreaded|x64.Build.0 = Release Multithreaded|x64
-               {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 
Singlethreaded|x64.ActiveCfg = Release Singlethreaded|x64
-               {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release 
Singlethreaded|x64.Build.0 = Release Singlethreaded|x64
        EndGlobalSection
        GlobalSection(SolutionProperties) = preSolution
                HideSolutionNode = FALSE
        EndGlobalSection
+       GlobalSection(ExtensibilityGlobals) = postSolution
+               SolutionGuid = {A93CD4E1-A02E-4F16-9C92-A8502D82995C}
+       EndGlobalSection
 EndGlobal
diff --git a/builds/windows/vc2010/freetype.vcxproj 
b/builds/windows/vc2010/freetype.vcxproj
index 93e755acc..3daa4b93a 100644
--- a/builds/windows/vc2010/freetype.vcxproj
+++ b/builds/windows/vc2010/freetype.vcxproj
@@ -34,35 +34,35 @@
       <Platform>x64</Platform>
     </ProjectConfiguration>
   </ItemGroup>
-    <!--
+  <!--
     Switch the PlatformToolset based on the Visual Studio Version
 -->
-<PropertyGroup>
+  <PropertyGroup>
     <!-- Assume Visual Studio 2010 / 4.0 as the default -->
     <VisualStudioVersion Condition="'$(VisualStudioVersion)' == 
''">4.0</VisualStudioVersion>
-</PropertyGroup>
-<!-- Visual Studio 2010 (4.0) -->
-<PropertyGroup Condition="'$(VisualStudioVersion)' == '4.0'">
+  </PropertyGroup>
+  <!-- Visual Studio 2010 (4.0) -->
+  <PropertyGroup Condition="'$(VisualStudioVersion)' == '4.0'">
     <PlatformToolset>v100</PlatformToolset>
-</PropertyGroup>
-<!-- Visual Studio 2013 (12.0) -->
-<PropertyGroup Condition="'$(VisualStudioVersion)' == '12.0'">
+  </PropertyGroup>
+  <!-- Visual Studio 2013 (12.0) -->
+  <PropertyGroup Condition="'$(VisualStudioVersion)' == '12.0'">
     <PlatformToolset>v120</PlatformToolset>
-</PropertyGroup>
-<!-- Visual Studio 2015 (14.0) -->
-<PropertyGroup Condition="'$(VisualStudioVersion)' == '14.0'">
+  </PropertyGroup>
+  <!-- Visual Studio 2015 (14.0) -->
+  <PropertyGroup Condition="'$(VisualStudioVersion)' == '14.0'">
     <PlatformToolset>v140</PlatformToolset>
-</PropertyGroup>
-<!-- Visual Studio 2017 (15.0) -->
-<PropertyGroup Condition="'$(VisualStudioVersion)' == '15.0'">
+  </PropertyGroup>
+  <!-- Visual Studio 2017 (15.0) -->
+  <PropertyGroup Condition="'$(VisualStudioVersion)' == '15.0'">
     <PlatformToolset>v141</PlatformToolset>
-</PropertyGroup>
-<!--
+  </PropertyGroup>
+  <!--
     End of: Switch the PlatformToolset based on the Visual Studio Version
 -->
   <PropertyGroup Label="Globals">
-     <ProjectGuid>{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}</ProjectGuid>
-     <RootNamespace>FreeType</RootNamespace>
+    <ProjectGuid>{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}</ProjectGuid>
+    <RootNamespace>FreeType</RootNamespace>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" 
Label="Configuration">
@@ -405,7 +405,6 @@
     <ClCompile Include="..\..\..\src\base\ftinit.c" />
     <ClCompile Include="..\..\..\src\lzw\ftlzw.c" />
     <ClCompile Include="..\..\..\src\base\ftstroke.c" />
-    <ClCompile Include="..\..\..\src\base\ftsystem.c" />
     <ClCompile Include="..\..\..\src\smooth\smooth.c" />
     <ClCompile Include="..\..\..\src\base\ftbbox.c" />
     <ClCompile Include="..\..\..\src\base\ftfntfmt.c" />
@@ -433,6 +432,9 @@
     <ClCompile Include="..\ftdebug.c">
       <DisableLanguageExtensions>false</DisableLanguageExtensions>
     </ClCompile>
+    <ClCompile Include="..\ftsystem.c">
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>
+    </ClCompile>
     <ResourceCompile Include="..\ftver.rc" />
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
diff --git a/builds/windows/vc2010/freetype.vcxproj.filters 
b/builds/windows/vc2010/freetype.vcxproj.filters
index 0e947f4ba..9cd15a788 100644
--- a/builds/windows/vc2010/freetype.vcxproj.filters
+++ b/builds/windows/vc2010/freetype.vcxproj.filters
@@ -56,9 +56,6 @@
     <ClCompile Include="..\..\..\src\base\ftstroke.c">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\..\src\base\ftsystem.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
     <ClCompile Include="..\..\..\src\smooth\smooth.c">
       <Filter>Source Files</Filter>
     </ClCompile>
@@ -131,25 +128,13 @@
     <ClCompile Include="..\..\..\src\winfonts\winfnt.c">
       <Filter>Source Files\FT_MODULES</Filter>
     </ClCompile>
+    <ClCompile Include="..\ftsystem.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ClInclude Include="..\..\..\include\ft2build.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\include\freetype\config\ftconfig.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\include\freetype\config\ftheader.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\include\freetype\config\ftmodule.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\include\freetype\config\ftoption.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\..\include\freetype\config\ftstdlib.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
+    <ResourceCompile Include="..\ftver.rc">
+      <Filter>Source Files</Filter>
+    </ResourceCompile>
   </ItemGroup>
-</Project>
+</Project>
\ No newline at end of file
-- 
2.13.6




reply via email to

[Prev in Thread] Current Thread [Next in Thread]