void JE_helpBox( JE_word x, JE_word y, const char *message, JE_byte boxwidth ) { JE_byte startpos, endpos, pos; JE_boolean endstring; char substring[256]; if (strlen(message) == 0) { return; } pos = 1; endpos = 0; endstring = false; do { startpos = endpos + 1; do { endpos = pos; do { pos++; if (pos == strlen(message)) { endstring = true; if (pos - startpos < boxwidth) { endpos = pos + 1; } } } while (!(message[pos-1] == ' ' || endstring)); } while (!(pos - startpos > boxwidth || endstring)); JE_textShade(x, y, strnztcpy(substring, message + startpos - 1, endpos - startpos), helpBoxColor, helpBoxBrightness, helpBoxShadeType); y += verticalHeight; } while (!endstring); if (endpos != pos + 1) { JE_textShade(x, y, message + endpos, helpBoxColor, helpBoxBrightness, helpBoxShadeType); } helpBoxColor = 12; helpBoxShadeType = FULL_SHADE; }
void JE_helpBox( SDL_Surface *screen, int x, int y, const char *message, unsigned int boxwidth ) { uint8_t startpos, endpos, pos; bool endstring; char substring[256]; if (strlen(message) == 0) { return; } pos = 1; endpos = 0; endstring = false; do { startpos = endpos + 1; do { endpos = pos; do { pos++; if (pos == strlen(message)) { endstring = true; if ((unsigned)(pos - startpos) < boxwidth) { endpos = pos + 1; } } } while (!(message[pos-1] == ' ' || endstring)); } while (!((unsigned)(pos - startpos) > boxwidth || endstring)); JE_textShade(screen, x, y, strnztcpy(substring, message + startpos - 1, endpos - startpos), helpBoxColor, helpBoxBrightness, helpBoxShadeType); y += verticalHeight; } while (!endstring); if (endpos != pos + 1) { JE_textShade(screen, x, y, message + endpos, helpBoxColor, helpBoxBrightness, helpBoxShadeType); } helpBoxColor = 12; helpBoxShadeType = FULL_SHADE; }