Patch #34204: [Render Animation] Fails with "Error: Specified sample_fmt is not suppo...
[blender.git] / source / blender / blenkernel / intern / font.c
index 8689d66..b3edeb6 100644 (file)
@@ -50,7 +50,6 @@
 #include "DNA_scene_types.h"
 #include "DNA_object_types.h"
 
-#include "BKE_utildefines.h"
 #include "BKE_packedFile.h"
 #include "BKE_library.h"
 #include "BKE_font.h"
@@ -60,7 +59,6 @@
 #include "BKE_curve.h"
 #include "BKE_displist.h"
 
-//static ListBase ttfdata = {NULL, NULL};
 
 /* The vfont code */
 void BKE_vfont_free_data(struct VFont *vfont)
@@ -103,9 +101,9 @@ void BKE_vfont_free(struct VFont *vf)
 static void *builtin_font_data = NULL;
 static int builtin_font_size = 0;
 
-int  BKE_vfont_is_builtin(struct VFont *vfont)
+bool BKE_vfont_is_builtin(struct VFont *vfont)
 {
-       return (strcmp(vfont->name, FO_BUILTIN_NAME) == 0);
+       return STREQ(vfont->name, FO_BUILTIN_NAME);
 }
 
 void BKE_vfont_builtin_register(void *mem, int size)
@@ -149,7 +147,7 @@ static VFontData *vfont_get_data(Main *bmain, VFont *vfont)
 
                                /* We need to copy a tmp font to memory unless it is already there */
                                if (vfont->temp_pf == NULL) {
-                                       vfont->temp_pf = dupPackedFileMemory(pf);
+                                       vfont->temp_pf = dupPackedFile(pf);
                                }
                        }
                        else {
@@ -179,7 +177,7 @@ static VFontData *vfont_get_data(Main *bmain, VFont *vfont)
                }
        }
        
-       return vfont->data;     
+       return vfont->data;
 }
 
 VFont *BKE_vfont_load(Main *bmain, const char *name)
@@ -190,18 +188,14 @@ VFont *BKE_vfont_load(Main *bmain, const char *name)
        PackedFile *temp_pf = NULL;
        int is_builtin;
        
-       if (strcmp(name, FO_BUILTIN_NAME) == 0) {
+       if (STREQ(name, FO_BUILTIN_NAME)) {
                BLI_strncpy(filename, name, sizeof(filename));
                
                pf = get_builtin_packedfile();
                is_builtin = TRUE;
        }
        else {
-               char dir[FILE_MAXDIR];
-               
-               BLI_strncpy(dir, name, sizeof(dir));
-               BLI_splitdirstring(dir, filename);
-
+               BLI_split_file_part(name, filename, sizeof(filename));
                pf = newPackedFile(NULL, name, bmain->name);
                temp_pf = newPackedFile(NULL, name, bmain->name);
                
@@ -237,8 +231,6 @@ VFont *BKE_vfont_load(Main *bmain, const char *name)
                if (!vfont || vfont->packedfile != pf) {
                        freePackedFile(pf);
                }
-       
-               //XXX waitcursor(0);
        }
        
        return vfont;
@@ -248,13 +240,13 @@ static VFont *which_vfont(Curve *cu, CharInfo *info)
 {
        switch (info->flag & (CU_CHINFO_BOLD | CU_CHINFO_ITALIC)) {
                case CU_CHINFO_BOLD:
-                       if (cu->vfontb) return(cu->vfontb); else return(cu->vfont);
+                       return cu->vfontb ? cu->vfontb : cu->vfont;
                case CU_CHINFO_ITALIC:
-                       if (cu->vfonti) return(cu->vfonti); else return(cu->vfont);
+                       return cu->vfonti ? cu->vfonti : cu->vfont;
                case (CU_CHINFO_BOLD | CU_CHINFO_ITALIC):
-                       if (cu->vfontbi) return(cu->vfontbi); else return(cu->vfont);
+                       return cu->vfontbi ? cu->vfontbi : cu->vfont;
                default:
-                       return(cu->vfont);
+                       return cu->vfont;
        }
 }
 
@@ -310,23 +302,23 @@ static void build_underline(Curve *cu, float x1, float y1, float x2, float y2, i
        nu2->bp = bp;
 
        nu2->bp[0].vec[0] = x1;
-       nu2->bp[0].vec[1] = y1; 
+       nu2->bp[0].vec[1] = y1;
        nu2->bp[0].vec[2] = 0;
        nu2->bp[0].vec[3] = 1.0f;
        nu2->bp[1].vec[0] = x2;
        nu2->bp[1].vec[1] = y1;
-       nu2->bp[1].vec[2] = 0;  
+       nu2->bp[1].vec[2] = 0;
        nu2->bp[1].vec[3] = 1.0f;
        nu2->bp[2].vec[0] = x2;
-       nu2->bp[2].vec[1] = y2; 
+       nu2->bp[2].vec[1] = y2;
        nu2->bp[2].vec[2] = 0;
        nu2->bp[2].vec[3] = 1.0f;
        nu2->bp[3].vec[0] = x1;
        nu2->bp[3].vec[1] = y2;
-       nu2->bp[3].vec[2] = 0;  
+       nu2->bp[3].vec[2] = 0;
        nu2->bp[3].vec[3] = 1.0f;
        
-       BLI_addtail(&(cu->nurb), nu2);  
+       BLI_addtail(&(cu->nurb), nu2);
 
 }
 
@@ -549,7 +541,7 @@ struct CharTrans *BKE_vfont_to_curve(Main *bmain, Scene *scene, Object *ob, int
        /* The VFont Data can not be found */
        if (!vfd) {
                if (mem)
-                       MEM_freeN(mem); 
+                       MEM_freeN(mem);
                return NULL;
        }
 
@@ -675,7 +667,7 @@ makebreak:
 
                        yof -= linedist;
 
-                       maxlen = maxf(maxlen, (xof - tb->x / cu->fsize));
+                       maxlen = max_ff(maxlen, (xof - tb->x / cu->fsize));
                        linedata[lnr] = xof - tb->x / cu->fsize;
                        linedata2[lnr] = cnr;
                        linedata3[lnr] = tb->w / cu->fsize;
@@ -735,7 +727,7 @@ makebreak:
                        if (ascii == 32) {
                                wsfac = cu->wordspace; 
                                wsnr++;
-                       } 
+                       }
                        else {
                                wsfac = 1.0f;
                        }
@@ -758,7 +750,7 @@ makebreak:
        for (i = 0; i <= slen; i++, tmp++, ct++) {
                ascii = *tmp;
                if (ascii == '\n' || ascii == '\r' || ct->dobreak) cu->lines++;
-       }       
+       }
 
        /* linedata is now: width of line
         * linedata2 is now: number of characters
@@ -796,7 +788,7 @@ makebreak:
 //                             }
                                ct++;
                        }
-               } 
+               }
                else if ((cu->spacemode == CU_JUSTIFY) && (cu->tb[0].w != 0.0f)) {
                        float curofs = 0.0f;
                        for (i = 0; i <= slen; i++) {
@@ -932,8 +924,12 @@ makebreak:
                 * 3: curs down */
                ct = chartransdata + cu->pos;
                
-               if ((mode == FO_CURSUP || mode == FO_PAGEUP) && ct->linenr == 0) ;
-               else if ((mode == FO_CURSDOWN || mode == FO_PAGEDOWN) && ct->linenr == lnr) ;
+               if ((mode == FO_CURSUP || mode == FO_PAGEUP) && ct->linenr == 0) {
+                       /* pass */
+               }
+               else if ((mode == FO_CURSDOWN || mode == FO_PAGEDOWN) && ct->linenr == lnr) {
+                       /* pass */
+               }
                else {
                        switch (mode) {
                                case FO_CURSUP:     lnr = ct->linenr - 1; break;
@@ -947,10 +943,13 @@ makebreak:
                        ct = chartransdata;
                        for (i = 0; i < slen; i++) {
                                if (ct->linenr == lnr) {
-                                       if (ct->charnr == cnr) break;
-                                       if ( (ct + 1)->charnr == 0) break;
+                                       if ((ct->charnr == cnr) || ((ct + 1)->charnr == 0)) {
+                                               break;
+                                       }
+                               }
+                               else if (ct->linenr > lnr) {
+                                       break;
                                }
-                               else if (ct->linenr > lnr) break;
                                cu->pos++;
                                ct++;
                        }
@@ -962,9 +961,9 @@ makebreak:
                float si, co;
                
                ct = chartransdata + cu->pos;
-               si = (float)sin(ct->rot);
-               co = (float)cos(ct->rot);
-                               
+               si = sinf(ct->rot);
+               co = cosf(ct->rot);
+
                f = cu->editfont->textcurs[0];
                
                f[0] = cu->fsize * (-0.1f * co + ct->xof);