Update for new nsfont_split expectations. Untested, but code similar to framebuffer.
This commit is contained in:
parent
bd2ca73de7
commit
e7e5211eb9
|
@ -59,23 +59,29 @@ static bool nsfont_position_in_string(const plot_font_style_t *fstyle,
|
|||
*
|
||||
* \param fstyle style for this text
|
||||
* \param string UTF-8 string to measure
|
||||
* \param length length of string
|
||||
* \param length length of string, in bytes
|
||||
* \param x width available
|
||||
* \param char_offset updated to offset in string of actual_x, [0..length]
|
||||
* \param char_offset updated to offset in string of actual_x, [1..length]
|
||||
* \param actual_x updated to x coordinate of character closest to x
|
||||
* \return true on success, false on error and error reported
|
||||
*
|
||||
* On exit, [char_offset == 0 ||
|
||||
* string[char_offset] == ' ' ||
|
||||
* char_offset == length]
|
||||
* On exit, char_offset indicates first character after split point.
|
||||
*
|
||||
* Note: char_offset of 0 should never be returned.
|
||||
*
|
||||
* Returns:
|
||||
* char_offset giving split point closest to x, where actual_x <= x
|
||||
* else
|
||||
* char_offset giving split point closest to x, where actual_x > x
|
||||
*
|
||||
* Returning char_offset == length means no split possible
|
||||
*/
|
||||
|
||||
static bool nsfont_split(const plot_font_style_t *fstyle,
|
||||
const char *string, size_t length,
|
||||
int x, size_t *char_offset, int *actual_x)
|
||||
{
|
||||
|
||||
*char_offset = x / (fstyle->size / FONT_SIZE_SCALE);
|
||||
int c_off = *char_offset = x / (fstyle->size / FONT_SIZE_SCALE);
|
||||
if (*char_offset > length) {
|
||||
*char_offset = length;
|
||||
} else {
|
||||
|
@ -84,6 +90,12 @@ static bool nsfont_split(const plot_font_style_t *fstyle,
|
|||
break;
|
||||
(*char_offset)--;
|
||||
}
|
||||
if (*char_offset == 0) {
|
||||
*char_offset = c_off;
|
||||
while (*char_offset < length && string[*char_offset] != ' ') {
|
||||
(*char_offset)++;
|
||||
}
|
||||
}
|
||||
}
|
||||
*actual_x = *char_offset * (fstyle->size / FONT_SIZE_SCALE);
|
||||
return true;
|
||||
|
|
Loading…
Reference in New Issue