2.50: svn merge https://svn.blender.org/svnroot/bf-blender/trunk/blender -r19323...
[blender.git] / source / blender / blenlib / intern / freetypefont.c
index 308f567005a3acf44efc49426caddc87e13f8b70..4b7b5914b60f6dd2fd944ebcf8e3f75c2ef6fd43 100644 (file)
@@ -1,15 +1,12 @@
 /**
  * $Id$
  *
- * ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
+ * ***** BEGIN GPL LICENSE BLOCK *****
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
  * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version. The Blender
- * Foundation also sells licenses for use in proprietary software under
- * the Blender License.  See http://www.blender.org/BL/ for information
- * about this.
+ * of the License, or (at your option) any later version.
  *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -25,7 +22,7 @@
  *
  * Contributor(s): none yet.
  *
- * ***** END GPL/BL DUAL LICENSE BLOCK *****
+ * ***** END GPL LICENSE BLOCK *****
  *
  * This code parses the Freetype font outline data to chains of Blender's beziertriples.
  * Additional information can be found at the bottom of this file.
 #include "BLI_blenlib.h"
 #include "BLI_arithb.h"  
 
-#include "BIF_toolbox.h"
+//XXX #include "BIF_toolbox.h"
 
 #include "BKE_global.h"
+#include "BKE_font.h"
 #include "BKE_utildefines.h"
 
 #include "DNA_vfont_types.h"
@@ -80,14 +78,9 @@ void freetypechar_to_vchar(FT_Face face, FT_ULong charcode, VFontData *vfd)
        FT_GlyphSlot glyph;
        FT_UInt glyph_index;
        FT_Outline ftoutline;
-       const char *fontname;
        float scale, height;
        float dx, dy;
-       int i,j,k,l,m=0;
-       
-       // Variables
-       int *npoints;
-       int *onpoints;
+       int j,k,l,m=0;
        
        // adjust font size
        height= ((double) face->bbox.yMax - (double) face->bbox.yMin);
@@ -106,6 +99,9 @@ void freetypechar_to_vchar(FT_Face face, FT_ULong charcode, VFontData *vfd)
        // If loading succeeded, convert the FT glyph to the internal format
        if(!err)
        {
+               int *npoints;
+               int *onpoints;
+               
                // First we create entry for the new character to the character list
                che= (VChar *) MEM_callocN(sizeof(struct VChar), "objfnt_char");
                BLI_addtail(&vfd->characters, che);
@@ -155,7 +151,7 @@ void freetypechar_to_vchar(FT_Face face, FT_ULong charcode, VFontData *vfd)
                        nu->type= CU_BEZIER+CU_2D;
                        nu->pntsu = onpoints[j];
                        nu->resolu= 8;
-                       nu->flagu= 1;
+                       nu->flagu= CU_CYCLIC;
                        nu->bezt = bezt;
 
                        //individual curve loop, start-end
@@ -183,6 +179,7 @@ void freetypechar_to_vchar(FT_Face face, FT_ULong charcode, VFontData *vfd)
                                                bezt->vec[2][1] = (dy + (2 * ftoutline.points[l+1].y)* scale) / 3.0;
 
                                                bezt->h1= bezt->h2= HD_ALIGN;
+                                               bezt->radius= 1.0f;
                                                bezt++;
                                        }
                                }
@@ -269,31 +266,24 @@ void freetypechar_to_vchar(FT_Face face, FT_ULong charcode, VFontData *vfd)
                                        {
                                                bezt->h1= bezt->h2= HD_ALIGN;
                                        }
+                                       bezt->radius= 1.0f;
                                        bezt++;
                                }
                        }
                }
+               if(npoints) MEM_freeN(npoints);
+               if(onpoints) MEM_freeN(onpoints);       
        }
-       
-       if(npoints) MEM_freeN(npoints);
-       if(onpoints) MEM_freeN(onpoints);       
 }
 
 int objchr_to_ftvfontdata(VFont *vfont, FT_ULong charcode)
 {
        // Freetype2
        FT_Face face;
-       FT_UInt glyph_index;
        struct TmpFont *tf;
        
        // Find the correct FreeType font
-       tf= G.ttfdata.first;
-       while(tf)
-       {
-               if(tf->vfont == vfont)
-                       break;
-               tf= tf->next;           
-       }
+       tf= vfont_find_tmpfont(vfont);
        
        // What, no font found. Something strange here
        if(!tf) return FALSE;
@@ -324,7 +314,6 @@ static VFontData *objfnt_to_ftvfontdata(PackedFile * pf)
        FT_Face face;
        FT_ULong charcode = 0, lcode;
        FT_UInt glyph_index;
-       FT_UInt temp;
        const char *fontname;
        VFontData *vfd;
 
@@ -412,8 +401,6 @@ static VFontData *objfnt_to_ftvfontdata(PackedFile * pf)
                        break;
                lcode = charcode;
        }
-       
-       err = FT_Set_Charmap( face, (FT_CharMap) FT_ENCODING_UNICODE );
 
        return vfd;     
 }
@@ -440,7 +427,7 @@ static int check_freetypefont(PackedFile * pf)
                                                        &face );
        if(err) {
                success = 0;
-           error("This is not a valid font");
+           //XXX error("This is not a valid font");
        }
        else {
 /*
@@ -469,7 +456,7 @@ static int check_freetypefont(PackedFile * pf)
                        if (glyph->format == ft_glyph_format_outline ) {
                                success = 1;
                        } else {
-                               error("Selected Font has no outline data");
+                               //XXX error("Selected Font has no outline data");
                                success = 0;
                        }
                }
@@ -487,7 +474,7 @@ VFontData *BLI_vfontdata_from_freetypefont(PackedFile *pf)
        //init Freetype 
        err = FT_Init_FreeType( &library);
        if(err) {
-               error("Failed to load the Freetype font library");
+               //XXX error("Failed to load the Freetype font library");
                return 0;
        }
 
@@ -512,7 +499,7 @@ int BLI_vfontchar_from_freetypefont(VFont *vfont, unsigned long character)
        // Init Freetype
        err = FT_Init_FreeType(&library);
        if(err) {
-               error("Failed to load the Freetype font library");
+               //XXX error("Failed to load the Freetype font library");
                return 0;
        }