ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

ftmm.c
Go to the documentation of this file.
00001 /***************************************************************************/
00002 /*                                                                         */
00003 /*  ftmm.c                                                                 */
00004 /*                                                                         */
00005 /*    Multiple Master font support (body).                                 */
00006 /*                                                                         */
00007 /*  Copyright 1996-2001, 2003, 2004, 2009 by                               */
00008 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
00009 /*                                                                         */
00010 /*  This file is part of the FreeType project, and may only be used,       */
00011 /*  modified, and distributed under the terms of the FreeType project      */
00012 /*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
00013 /*  this file you indicate that you have read the license and              */
00014 /*  understand and accept it fully.                                        */
00015 /*                                                                         */
00016 /***************************************************************************/
00017 
00018 
00019 #include <ft2build.h>
00020 #include FT_MULTIPLE_MASTERS_H
00021 #include FT_INTERNAL_OBJECTS_H
00022 #include FT_SERVICE_MULTIPLE_MASTERS_H
00023 
00024 
00025   /*************************************************************************/
00026   /*                                                                       */
00027   /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
00028   /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
00029   /* messages during execution.                                            */
00030   /*                                                                       */
00031 #undef  FT_COMPONENT
00032 #define FT_COMPONENT  trace_mm
00033 
00034 
00035   static FT_Error
00036   ft_face_get_mm_service( FT_Face                   face,
00037                           FT_Service_MultiMasters  *aservice )
00038   {
00039     FT_Error  error;
00040 
00041 
00042     *aservice = NULL;
00043 
00044     if ( !face )
00045       return FT_Err_Invalid_Face_Handle;
00046 
00047     error = FT_Err_Invalid_Argument;
00048 
00049     if ( FT_HAS_MULTIPLE_MASTERS( face ) )
00050     {
00051       FT_FACE_LOOKUP_SERVICE( face,
00052                               *aservice,
00053                               MULTI_MASTERS );
00054 
00055       if ( *aservice )
00056         error = FT_Err_Ok;
00057     }
00058 
00059     return error;
00060   }
00061 
00062 
00063   /* documentation is in ftmm.h */
00064 
00065   FT_EXPORT_DEF( FT_Error )
00066   FT_Get_Multi_Master( FT_Face           face,
00067                        FT_Multi_Master  *amaster )
00068   {
00069     FT_Error                 error;
00070     FT_Service_MultiMasters  service;
00071 
00072 
00073     error = ft_face_get_mm_service( face, &service );
00074     if ( !error )
00075     {
00076       error = FT_Err_Invalid_Argument;
00077       if ( service->get_mm )
00078         error = service->get_mm( face, amaster );
00079     }
00080 
00081     return error;
00082   }
00083 
00084 
00085   /* documentation is in ftmm.h */
00086 
00087   FT_EXPORT_DEF( FT_Error )
00088   FT_Get_MM_Var( FT_Face      face,
00089                  FT_MM_Var*  *amaster )
00090   {
00091     FT_Error                 error;
00092     FT_Service_MultiMasters  service;
00093 
00094 
00095     error = ft_face_get_mm_service( face, &service );
00096     if ( !error )
00097     {
00098       error = FT_Err_Invalid_Argument;
00099       if ( service->get_mm_var )
00100         error = service->get_mm_var( face, amaster );
00101     }
00102 
00103     return error;
00104   }
00105 
00106 
00107   /* documentation is in ftmm.h */
00108 
00109   FT_EXPORT_DEF( FT_Error )
00110   FT_Set_MM_Design_Coordinates( FT_Face   face,
00111                                 FT_UInt   num_coords,
00112                                 FT_Long*  coords )
00113   {
00114     FT_Error                 error;
00115     FT_Service_MultiMasters  service;
00116 
00117 
00118     error = ft_face_get_mm_service( face, &service );
00119     if ( !error )
00120     {
00121       error = FT_Err_Invalid_Argument;
00122       if ( service->set_mm_design )
00123         error = service->set_mm_design( face, num_coords, coords );
00124     }
00125 
00126     return error;
00127   }
00128 
00129 
00130   /* documentation is in ftmm.h */
00131 
00132   FT_EXPORT_DEF( FT_Error )
00133   FT_Set_Var_Design_Coordinates( FT_Face    face,
00134                                  FT_UInt    num_coords,
00135                                  FT_Fixed*  coords )
00136   {
00137     FT_Error                 error;
00138     FT_Service_MultiMasters  service;
00139 
00140 
00141     error = ft_face_get_mm_service( face, &service );
00142     if ( !error )
00143     {
00144       error = FT_Err_Invalid_Argument;
00145       if ( service->set_var_design )
00146         error = service->set_var_design( face, num_coords, coords );
00147     }
00148 
00149     return error;
00150   }
00151 
00152 
00153   /* documentation is in ftmm.h */
00154 
00155   FT_EXPORT_DEF( FT_Error )
00156   FT_Set_MM_Blend_Coordinates( FT_Face    face,
00157                                FT_UInt    num_coords,
00158                                FT_Fixed*  coords )
00159   {
00160     FT_Error                 error;
00161     FT_Service_MultiMasters  service;
00162 
00163 
00164     error = ft_face_get_mm_service( face, &service );
00165     if ( !error )
00166     {
00167       error = FT_Err_Invalid_Argument;
00168       if ( service->set_mm_blend )
00169          error = service->set_mm_blend( face, num_coords, coords );
00170     }
00171 
00172     return error;
00173   }
00174 
00175 
00176   /* documentation is in ftmm.h */
00177 
00178   /* This is exactly the same as the previous function.  It exists for */
00179   /* orthogonality.                                                    */
00180 
00181   FT_EXPORT_DEF( FT_Error )
00182   FT_Set_Var_Blend_Coordinates( FT_Face    face,
00183                                 FT_UInt    num_coords,
00184                                 FT_Fixed*  coords )
00185   {
00186     FT_Error                 error;
00187     FT_Service_MultiMasters  service;
00188 
00189 
00190     error = ft_face_get_mm_service( face, &service );
00191     if ( !error )
00192     {
00193       error = FT_Err_Invalid_Argument;
00194       if ( service->set_mm_blend )
00195          error = service->set_mm_blend( face, num_coords, coords );
00196     }
00197 
00198     return error;
00199   }
00200 
00201 
00202 /* END */

Generated on Sun May 27 2012 04:33:35 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.