replace BLF's blf_utf8_next() with BLI_str_utf8_as_unicode_step(),

also fixed some spelling errors.
This commit is contained in:
Campbell Barton 2011-10-21 01:33:06 +00:00
parent 2d8189cec0
commit 6912e94d06
8 changed files with 34 additions and 81 deletions

@ -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); \
} \

@ -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);

@ -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;
}

@ -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)
*/

@ -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);

@ -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;
}

@ -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;

@ -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;