Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. /***************************************************************************/
  2. /*                                                                         */
  3. /*  ftrender.h                                                             */
  4. /*                                                                         */
  5. /*    FreeType renderer modules public interface (specification).          */
  6. /*                                                                         */
  7. /*  Copyright 1996-2001, 2005, 2006, 2010 by                               */
  8. /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
  9. /*                                                                         */
  10. /*  This file is part of the FreeType project, and may only be used,       */
  11. /*  modified, and distributed under the terms of the FreeType project      */
  12. /*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
  13. /*  this file you indicate that you have read the license and              */
  14. /*  understand and accept it fully.                                        */
  15. /*                                                                         */
  16. /***************************************************************************/
  17.  
  18.  
  19. #ifndef __FTRENDER_H__
  20. #define __FTRENDER_H__
  21.  
  22.  
  23. #include <ft2build.h>
  24. #include FT_MODULE_H
  25. #include FT_GLYPH_H
  26.  
  27.  
  28. FT_BEGIN_HEADER
  29.  
  30.  
  31.   /*************************************************************************/
  32.   /*                                                                       */
  33.   /* <Section>                                                             */
  34.   /*    module_management                                                  */
  35.   /*                                                                       */
  36.   /*************************************************************************/
  37.  
  38.  
  39.   /* create a new glyph object */
  40.   typedef FT_Error
  41.   (*FT_Glyph_InitFunc)( FT_Glyph      glyph,
  42.                         FT_GlyphSlot  slot );
  43.  
  44.   /* destroys a given glyph object */
  45.   typedef void
  46.   (*FT_Glyph_DoneFunc)( FT_Glyph  glyph );
  47.  
  48.   typedef void
  49.   (*FT_Glyph_TransformFunc)( FT_Glyph          glyph,
  50.                              const FT_Matrix*  matrix,
  51.                              const FT_Vector*  delta );
  52.  
  53.   typedef void
  54.   (*FT_Glyph_GetBBoxFunc)( FT_Glyph  glyph,
  55.                            FT_BBox*  abbox );
  56.  
  57.   typedef FT_Error
  58.   (*FT_Glyph_CopyFunc)( FT_Glyph   source,
  59.                         FT_Glyph   target );
  60.  
  61.   typedef FT_Error
  62.   (*FT_Glyph_PrepareFunc)( FT_Glyph      glyph,
  63.                            FT_GlyphSlot  slot );
  64.  
  65. /* deprecated */
  66. #define FT_Glyph_Init_Func       FT_Glyph_InitFunc
  67. #define FT_Glyph_Done_Func       FT_Glyph_DoneFunc
  68. #define FT_Glyph_Transform_Func  FT_Glyph_TransformFunc
  69. #define FT_Glyph_BBox_Func       FT_Glyph_GetBBoxFunc
  70. #define FT_Glyph_Copy_Func       FT_Glyph_CopyFunc
  71. #define FT_Glyph_Prepare_Func    FT_Glyph_PrepareFunc
  72.  
  73.  
  74.   struct  FT_Glyph_Class_
  75.   {
  76.     FT_Long                 glyph_size;
  77.     FT_Glyph_Format         glyph_format;
  78.     FT_Glyph_InitFunc       glyph_init;
  79.     FT_Glyph_DoneFunc       glyph_done;
  80.     FT_Glyph_CopyFunc       glyph_copy;
  81.     FT_Glyph_TransformFunc  glyph_transform;
  82.     FT_Glyph_GetBBoxFunc    glyph_bbox;
  83.     FT_Glyph_PrepareFunc    glyph_prepare;
  84.   };
  85.  
  86.  
  87.   typedef FT_Error
  88.   (*FT_Renderer_RenderFunc)( FT_Renderer       renderer,
  89.                              FT_GlyphSlot      slot,
  90.                              FT_UInt           mode,
  91.                              const FT_Vector*  origin );
  92.  
  93.   typedef FT_Error
  94.   (*FT_Renderer_TransformFunc)( FT_Renderer       renderer,
  95.                                 FT_GlyphSlot      slot,
  96.                                 const FT_Matrix*  matrix,
  97.                                 const FT_Vector*  delta );
  98.  
  99.  
  100.   typedef void
  101.   (*FT_Renderer_GetCBoxFunc)( FT_Renderer   renderer,
  102.                               FT_GlyphSlot  slot,
  103.                               FT_BBox*      cbox );
  104.  
  105.  
  106.   typedef FT_Error
  107.   (*FT_Renderer_SetModeFunc)( FT_Renderer  renderer,
  108.                               FT_ULong     mode_tag,
  109.                               FT_Pointer   mode_ptr );
  110.  
  111. /* deprecated identifiers */
  112. #define FTRenderer_render  FT_Renderer_RenderFunc
  113. #define FTRenderer_transform  FT_Renderer_TransformFunc
  114. #define FTRenderer_getCBox  FT_Renderer_GetCBoxFunc
  115. #define FTRenderer_setMode  FT_Renderer_SetModeFunc
  116.  
  117.  
  118.   /*************************************************************************/
  119.   /*                                                                       */
  120.   /* <Struct>                                                              */
  121.   /*    FT_Renderer_Class                                                  */
  122.   /*                                                                       */
  123.   /* <Description>                                                         */
  124.   /*    The renderer module class descriptor.                              */
  125.   /*                                                                       */
  126.   /* <Fields>                                                              */
  127.   /*    root            :: The root @FT_Module_Class fields.               */
  128.   /*                                                                       */
  129.   /*    glyph_format    :: The glyph image format this renderer handles.   */
  130.   /*                                                                       */
  131.   /*    render_glyph    :: A method used to render the image that is in a  */
  132.   /*                       given glyph slot into a bitmap.                 */
  133.   /*                                                                       */
  134.   /*    transform_glyph :: A method used to transform the image that is in */
  135.   /*                       a given glyph slot.                             */
  136.   /*                                                                       */
  137.   /*    get_glyph_cbox  :: A method used to access the glyph's cbox.       */
  138.   /*                                                                       */
  139.   /*    set_mode        :: A method used to pass additional parameters.    */
  140.   /*                                                                       */
  141.   /*    raster_class    :: For @FT_GLYPH_FORMAT_OUTLINE renderers only.    */
  142.   /*                       This is a pointer to its raster's class.        */
  143.   /*                                                                       */
  144.   typedef struct  FT_Renderer_Class_
  145.   {
  146.     FT_Module_Class            root;
  147.  
  148.     FT_Glyph_Format            glyph_format;
  149.  
  150.     FT_Renderer_RenderFunc     render_glyph;
  151.     FT_Renderer_TransformFunc  transform_glyph;
  152.     FT_Renderer_GetCBoxFunc    get_glyph_cbox;
  153.     FT_Renderer_SetModeFunc    set_mode;
  154.  
  155.     FT_Raster_Funcs*           raster_class;
  156.  
  157.   } FT_Renderer_Class;
  158.  
  159.  
  160.   /*************************************************************************/
  161.   /*                                                                       */
  162.   /* <Function>                                                            */
  163.   /*    FT_Get_Renderer                                                    */
  164.   /*                                                                       */
  165.   /* <Description>                                                         */
  166.   /*    Retrieve the current renderer for a given glyph format.            */
  167.   /*                                                                       */
  168.   /* <Input>                                                               */
  169.   /*    library :: A handle to the library object.                         */
  170.   /*                                                                       */
  171.   /*    format  :: The glyph format.                                       */
  172.   /*                                                                       */
  173.   /* <Return>                                                              */
  174.   /*    A renderer handle.  0~if none found.                               */
  175.   /*                                                                       */
  176.   /* <Note>                                                                */
  177.   /*    An error will be returned if a module already exists by that name, */
  178.   /*    or if the module requires a version of FreeType that is too great. */
  179.   /*                                                                       */
  180.   /*    To add a new renderer, simply use @FT_Add_Module.  To retrieve a   */
  181.   /*    renderer by its name, use @FT_Get_Module.                          */
  182.   /*                                                                       */
  183.   FT_EXPORT( FT_Renderer )
  184.   FT_Get_Renderer( FT_Library       library,
  185.                    FT_Glyph_Format  format );
  186.  
  187.  
  188.   /*************************************************************************/
  189.   /*                                                                       */
  190.   /* <Function>                                                            */
  191.   /*    FT_Set_Renderer                                                    */
  192.   /*                                                                       */
  193.   /* <Description>                                                         */
  194.   /*    Set the current renderer to use, and set additional mode.          */
  195.   /*                                                                       */
  196.   /* <InOut>                                                               */
  197.   /*    library    :: A handle to the library object.                      */
  198.   /*                                                                       */
  199.   /* <Input>                                                               */
  200.   /*    renderer   :: A handle to the renderer object.                     */
  201.   /*                                                                       */
  202.   /*    num_params :: The number of additional parameters.                 */
  203.   /*                                                                       */
  204.   /*    parameters :: Additional parameters.                               */
  205.   /*                                                                       */
  206.   /* <Return>                                                              */
  207.   /*    FreeType error code.  0~means success.                             */
  208.   /*                                                                       */
  209.   /* <Note>                                                                */
  210.   /*    In case of success, the renderer will be used to convert glyph     */
  211.   /*    images in the renderer's known format into bitmaps.                */
  212.   /*                                                                       */
  213.   /*    This doesn't change the current renderer for other formats.        */
  214.   /*                                                                       */
  215.   FT_EXPORT( FT_Error )
  216.   FT_Set_Renderer( FT_Library     library,
  217.                    FT_Renderer    renderer,
  218.                    FT_UInt        num_params,
  219.                    FT_Parameter*  parameters );
  220.  
  221.  
  222.   /* */
  223.  
  224.  
  225. FT_END_HEADER
  226.  
  227. #endif /* __FTRENDER_H__ */
  228.  
  229.  
  230. /* END */
  231.