replace BLF's blf_utf8_next() with BLI_str_utf8_as_unicode_step(),
authorCampbell Barton <ideasman42@gmail.com>
Fri, 21 Oct 2011 01:33:06 +0000 (01:33 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Fri, 21 Oct 2011 01:33:06 +0000 (01:33 +0000)
also fixed some spelling errors.

source/blender/blenfont/intern/blf_font.c
source/blender/blenfont/intern/blf_internal.h
source/blender/blenfont/intern/blf_util.c
source/blender/blenkernel/intern/softbody.c
source/blender/blenlib/PIL_time.h
source/blender/blenlib/intern/string_utf8.c
source/blender/editors/transform/transform.h
source/gameengine/GameLogic/SCA_KeyboardSensor.h

index 9a7fb95..355182f 100644 (file)
@@ -129,7 +129,7 @@ static void blf_font_ensure_ascii_table(FontBLF *font)
                g= (glyph_ascii_table)[c];                                            \
                i++;                                                                  \
        }                                                                         \
-       else if ((c= blf_utf8_next((str), &(i))) != BLI_UTF8_ERR) {               \
+       else if ((c= BLI_str_utf8_as_unicode_step((str), &(i))) != BLI_UTF8_ERR) {               \
                if ((g= blf_glyph_search((font)->glyph_cache, c)) == NULL) {          \
                        g= blf_glyph_add(font, FT_Get_Char_Index((font)->face, c), c);    \
                }                                                                     \
index 4c83091..df88d0c 100644 (file)
@@ -40,7 +40,6 @@ struct rctf;
 
 unsigned int blf_next_p2(unsigned int x);
 unsigned int blf_hash(unsigned int val);
-unsigned int blf_utf8_next(const char *buf, size_t *iindex);
 
 char *blf_dir_search(const char *file);
 char *blf_dir_metrics_search(const char *filename);
index aef97b6..d51f9b8 100644 (file)
@@ -64,67 +64,3 @@ unsigned int blf_hash(unsigned int val)
        key ^= (key >> 17);
        return key % 257;
 }
-
-/*
- * This function is from Imlib2 library (font_main.c), a
- * library that does image file loading and saving as well
- * as rendering, manipulation, arbitrary polygon support, etc.
- *
- * Copyright (C) 2000 Carsten Haitzler and various contributors
- * The original name: imlib_font_utf8_get_next
- * more info here: http://docs.enlightenment.org/api/imlib2/html/
- */
-unsigned int blf_utf8_next(const char *buf, size_t *iindex)
-{
-       /* Reads UTF8 bytes from 'buf', starting at 'index' and
-        * returns the code point of the next valid code point.
-        * 'index' is updated ready for the next call.
-        *
-        * Returns 0 to indicate an error (e.g. invalid UTF8)
-        */
-       int index= *iindex, len, r;
-       unsigned char d, d2, d3, d4;
-
-       d= buf[index++];
-       if (!d)
-               return BLI_UTF8_ERR;
-
-       while (buf[index] && ((buf[index] & 0xc0) == 0x80))
-               index++;
-
-       len= index - *iindex;
-       if (len == 1)
-               r= d;
-       else if (len == 2) {
-               /* 2 byte */
-               d2= buf[*iindex + 1];
-               r= d & 0x1f; /* copy lower 5 */
-               r <<= 6;
-               r |= (d2 & 0x3f); /* copy lower 6 */
-       }
-       else if (len == 3) {
-               /* 3 byte */
-               d2= buf[*iindex + 1];
-               d3= buf[*iindex + 2];
-               r= d & 0x0f; /* copy lower 4 */
-               r <<= 6;
-               r |= (d2 & 0x3f);
-               r <<= 6;
-               r |= (d3 & 0x3f);
-       }
-       else {
-               /* 4 byte */
-               d2= buf[*iindex + 1];
-               d3= buf[*iindex + 2];
-               d4= buf[*iindex + 3];
-               r= d & 0x0f; /* copy lower 4 */
-               r <<= 6;
-               r |= (d2 & 0x3f);
-               r <<= 6;
-               r |= (d3 & 0x3f);
-               r <<= 6;
-               r |= (d4 & 0x3f);
-       }
-       *iindex= index;
-       return r;
-}
index 8787ec0..cd147f4 100644 (file)
@@ -208,7 +208,7 @@ static float sb_time_scale(Object *ob)
        }
        return (1.0f);
        /*
-       this would be frames/sec independant timing assuming 25 fps is default
+       this would be frames/sec independent timing assuming 25 fps is default
        but does not work very well with NLA
                return (25.0f/scene->r.frs_sec)
        */
index 8286903..36ea43b 100644 (file)
@@ -1,7 +1,5 @@
-/*
- * @file PIL_time.h
- * 
- * Platform independant time functions.
+/* 
+ * Platform independent time functions.
  * $Id$
  *
  * ***** BEGIN GPL LICENSE BLOCK *****
@@ -51,7 +49,7 @@ extern
 double PIL_check_seconds_timer         (void);
 
        /**
-        * Platform-independant sleep function.
+        * Platform-independent sleep function.
         * @param ms Number of milliseconds to sleep
         */
 void   PIL_sleep_ms                            (int ms);
index 25a0e67..8dc683f 100644 (file)
@@ -297,12 +297,12 @@ size_t BLI_strncpy_wchar_from_utf8(wchar_t *dst_w, const char *src_c, const size
                Len = -1;                                                             \
        }
 
-
-#define UTF8_GET(Result, Chars, Count, Mask, Len)                             \
+/* same as glib define but added an 'Err' arg */
+#define UTF8_GET(Result, Chars, Count, Mask, Len, Err)                        \
        (Result) = (Chars)[0] & (Mask);                                           \
        for ((Count) = 1; (Count) < (Len); ++(Count)) {                           \
                if (((Chars)[(Count)] & 0xc0) != 0x80) {                              \
-                       (Result) = -1;                                                    \
+                       (Result) = Err;                                                   \
                        break;                                                            \
                }                                                                     \
                (Result) <<= 6;                                                       \
@@ -332,7 +332,7 @@ unsigned int BLI_str_utf8_as_unicode(const char *p)
   UTF8_COMPUTE (c, mask, len);
   if (len == -1)
     return BLI_UTF8_ERR;
-  UTF8_GET (result, p, i, mask, len);
+  UTF8_GET (result, p, i, mask, len, BLI_UTF8_ERR);
 
   return result;
 }
@@ -347,12 +347,13 @@ unsigned int BLI_str_utf8_as_unicode_and_size(const char *p, size_t *index)
        UTF8_COMPUTE (c, mask, len);
        if (len == -1)
                return BLI_UTF8_ERR;
-       UTF8_GET (result, p, i, mask, len);
+       UTF8_GET (result, p, i, mask, len, BLI_UTF8_ERR);
        *index += len;
        return result;
 }
 
-/* another varient that steps over the index */
+/* another varient that steps over the index,
+ * note, currently this also falls back to latin1 for text drawing. */
 unsigned int BLI_str_utf8_as_unicode_step(const char *p, size_t *index)
 {
        int i, mask = 0, len;
@@ -372,7 +373,26 @@ unsigned int BLI_str_utf8_as_unicode_step(const char *p, size_t *index)
                *index += (size_t)(p_next - p);
                return BLI_UTF8_ERR;
        }
-       UTF8_GET (result, p, i, mask, len);
+
+       /* this is tricky since there are a few ways we can bail out of bad unicode
+        * values, 3 possible solutions. */
+#if 0
+       UTF8_GET (result, p, i, mask, len, BLI_UTF8_ERR);
+#elif 1
+       /* WARNING: this is NOT part of glib, or supported by similar functions.
+        * this is added for text drawing because some filepaths can have latin1
+        * characters */
+       UTF8_GET (result, p, i, mask, len, BLI_UTF8_ERR);
+       if(result == BLI_UTF8_ERR) {
+               len= 1;
+               result= *p;
+       }
+       /* end warning! */
+#else
+       /* without a fallback like '?', text drawing will stop on this value */
+       UTF8_GET (result, p, i, mask, len, '?');
+#endif
+
        *index += len;
        return result;
 }
index 2f17723..7fccbcb 100644 (file)
@@ -152,7 +152,7 @@ typedef struct TransData2D {
        float loc[3];           /* Location of data used to transform (x,y,0) */
        float *loc2d;           /* Pointer to real 2d location of data */
 
-       float *h1, *h2;     /* Pointer to handle locations, if handles aren't being moved independantly*/
+       float *h1, *h2;     /* Pointer to handle locations, if handles aren't being moved independently */
        float ih1[2], ih2[2];
 } TransData2D;
 
index ee40567..6df648b 100644 (file)
@@ -69,7 +69,7 @@ class SCA_KeyboardSensor : public SCA_ISensor
         * The property that indicates whether or not to log text when in
         * loggin mode. If the property equals 0, no loggin is done. For
         * all other values, logging is active. Logging can only become
-        * active if there is a property to log to. Logging is independant
+        * active if there is a property to log to. Logging is independent
         * from hotkey settings. */
        STR_String      m_toggleprop;