summaryrefslogtreecommitdiff
path: root/Build/source/libs/freetype2/freetype-2.6.1/src/smooth/ftspic.c
diff options
context:
space:
mode:
authorPeter Breitenlohner <peb@mppmu.mpg.de>2015-10-04 13:05:32 +0000
committerPeter Breitenlohner <peb@mppmu.mpg.de>2015-10-04 13:05:32 +0000
commit17525d11fda34a120e5a7c55e1564ccb4e1c1d73 (patch)
tree6185d991959ea205bc18acd6ac42c5adf86a308c /Build/source/libs/freetype2/freetype-2.6.1/src/smooth/ftspic.c
parent4b5255bebb36192e28713d495be24b2b1fa4a944 (diff)
freetype 2.6.1
git-svn-id: svn://tug.org/texlive/trunk@38545 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/libs/freetype2/freetype-2.6.1/src/smooth/ftspic.c')
-rw-r--r--Build/source/libs/freetype2/freetype-2.6.1/src/smooth/ftspic.c118
1 files changed, 118 insertions, 0 deletions
diff --git a/Build/source/libs/freetype2/freetype-2.6.1/src/smooth/ftspic.c b/Build/source/libs/freetype2/freetype-2.6.1/src/smooth/ftspic.c
new file mode 100644
index 00000000000..8e6ed57eecb
--- /dev/null
+++ b/Build/source/libs/freetype2/freetype-2.6.1/src/smooth/ftspic.c
@@ -0,0 +1,118 @@
+/***************************************************************************/
+/* */
+/* ftspic.c */
+/* */
+/* The FreeType position independent code services for smooth module. */
+/* */
+/* Copyright 2009-2015 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 "ftspic.h"
+#include "ftsmerrs.h"
+
+
+#ifdef FT_CONFIG_OPTION_PIC
+
+ /* forward declaration of PIC init functions from ftgrays.c */
+ void
+ FT_Init_Class_ft_grays_raster( FT_Raster_Funcs* funcs );
+
+
+ void
+ ft_smooth_renderer_class_pic_free( FT_Library library )
+ {
+ FT_PIC_Container* pic_container = &library->pic_container;
+ FT_Memory memory = library->memory;
+
+
+ if ( pic_container->smooth )
+ {
+ SmoothPIC* container = (SmoothPIC*)pic_container->smooth;
+
+
+ if ( --container->ref_count )
+ return;
+
+ FT_FREE( container );
+ pic_container->smooth = NULL;
+ }
+ }
+
+
+ FT_Error
+ ft_smooth_renderer_class_pic_init( FT_Library library )
+ {
+ FT_PIC_Container* pic_container = &library->pic_container;
+ FT_Error error = FT_Err_Ok;
+ SmoothPIC* container = NULL;
+ FT_Memory memory = library->memory;
+
+
+ /* since this function also serve smooth_lcd and smooth_lcdv renderers,
+ it implements reference counting */
+ if ( pic_container->smooth )
+ {
+ ((SmoothPIC*)pic_container->smooth)->ref_count++;
+ return error;
+ }
+
+ /* 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->smooth = container;
+
+ container->ref_count = 1;
+
+ /* initialize pointer table - */
+ /* this is how the module usually expects this data */
+ FT_Init_Class_ft_grays_raster( &container->ft_grays_raster );
+
+ return error;
+ }
+
+
+ /* re-route these init and free functions to the above functions */
+ FT_Error
+ ft_smooth_lcd_renderer_class_pic_init( FT_Library library )
+ {
+ return ft_smooth_renderer_class_pic_init( library );
+ }
+
+
+ void
+ ft_smooth_lcd_renderer_class_pic_free( FT_Library library )
+ {
+ ft_smooth_renderer_class_pic_free( library );
+ }
+
+
+ FT_Error
+ ft_smooth_lcdv_renderer_class_pic_init( FT_Library library )
+ {
+ return ft_smooth_renderer_class_pic_init( library );
+ }
+
+
+ void
+ ft_smooth_lcdv_renderer_class_pic_free( FT_Library library )
+ {
+ ft_smooth_renderer_class_pic_free( library );
+ }
+
+#endif /* FT_CONFIG_OPTION_PIC */
+
+
+/* END */