Приложения
Приложение А. Функции, константы и структуры RDS
А.5. Сервисные функции и макросы RDS
А.5.11. Разбор текста
А.5.11.5. rdsReadFontText – разбор описания шрифта
Функция rdsReadFontText считывает из переданной в параметрах строки описание шрифта и записывает его в переменные, указатели на которые переданы в других параметрах функции. Строка должна иметь кодировку UTF8, имя шрифта может возвращаться как в UTF8, так и в UTF16.
BOOL RDSCALL rdsReadFontTextA( RDSCSTR Start, // Начало текста (UTF8) RDSCSTR *pNextWord, // Возврат – конец описания (UTF8) RDSSTR NameBuf, // Указатель на массив для возврата имени шрифта (UTF8) int NameBufLen, // Max длина имени int *pHeight, // Возврат – высота шрифта COLORREF *pColor, // Возврат – цвет шрифта int *pCharset, // Возврат – набор символов int *pEscapement, // Возврат – угол BOOL *pBold, // Возврат – жирность BOOL *pItalic, // Возврат – курсив BOOL *pUnderline, // Возврат – подчеркивание BOOL *pStrikeOut // Возврат – зачеркивание ); BOOL RDSCALL rdsReadFontTextW( RDSCSTR Start, // Начало текста (UTF8) RDSCSTR *pNextWord, // Возврат – конец описания (UTF8) RDSWSTR NameBuf, // Указатель на массив для возврата имени шрифта (UTF16) int NameBufLen, // Max длина имени int *pHeight, // Возврат – высота шрифта COLORREF *pColor, // Возврат – цвет шрифта int *pCharset, // Возврат – набор символов int *pEscapement, // Возврат – угол BOOL *pBold, // Возврат – жирность BOOL *pItalic, // Возврат – курсив BOOL *pUnderline, // Возврат – подчеркивание BOOL *pStrikeOut // Возврат – зачеркивание ); // Функция-псевдоним BOOL RDSCALL rdsReadFontText( RDSCSTR Start, // Начало текста (UTF8) RDSCSTR *pNextWord, // Возврат – конец описания (UTF8) RDSXSTR NameBuf, // Указатель на массив для возврата имени шрифта (кодировка по умолчанию) int NameBufLen, // Max длина имени int *pHeight, // Возврат – высота шрифта COLORREF *pColor, // Возврат – цвет шрифта int *pCharset, // Возврат – набор символов int *pEscapement, // Возврат – угол BOOL *pBold, // Возврат – жирность BOOL *pItalic, // Возврат – курсив BOOL *pUnderline, // Возврат – подчеркивание BOOL *pStrikeOut // Возврат – зачеркивание );
Тип указателя на эту функцию
RDS_BSpSSIpIpCrpIpIpBpBpBpB (для UTF8) или RDS_BSpWsSIpIpCrpIpIpBpBpBpB (для UTF16)
Параметры
- Start (RDSCSTR)
- Указатель на начало текста описания шрифта. Пробелы и табуляции в начале текста будут пропущены.
- pNextWord (RDSCSTR*)
- Указатель на переменную типа char*, в которую будет записан указатель на начало первого слова строки Start, которое не относится к описанию шрифта. Если вызывающей программе не нужно знать, где кончается описание шрифта, в этом параметре можно передать NULL.
- NameBuf (RDSSTR*, RDSWSTR*, RDSXSTR*)
- Указатель на массив символов, в который функция запишет имя шрифта. Может равняться NULL, если имя шрифта не нужно вызвавшей программе.
- NameBufLen (int)
- Максимально допустимая длина имени шрифта (размер массива NameBuf минус один). При NameBuf==NULL игнорируется.
- pHeight (int*)
- Указатель на целую переменную, в которую функция запишет высоту шрифта в точках экрана, или NULL, если это значение не нужно вызвавшей программе.
- pСolor (COLORREF*)
- Указатель на переменную типа COLORREF, в которую функция запишет цвет шрифта, или NULL, если это значение не нужно вызвавшей программе.
- pCharset (int*)
- Указатель на целую переменную, в которую функция запишет набор символов шрифта, или NULL, если это значение не нужно вызвавшей программе.
- pEscapement (int*)
- Указатель на целую переменную, в которую функция запишет угол поворота шрифта в градусах относительно горизонтали, или NULL, если это значение не нужно вызвавшей программе.
- pBold (BOOL*)
- Указатель на логическую переменную, в которую функция запишет TRUE, если шрифт жирный, или FALSE в противном случае. Может равняться NULL, если этот параметр не нужен вызвавшей программе.
- pItalic (BOOL*)
- Указатель на логическую переменную, в которую функция запишет TRUE, если шрифт курсивный, или FALSE в противном случае. Может равняться NULL, если этот параметр не нужен вызвавшей программе.
- pUnderline (BOOL*)
- Указатель на логическую переменную, в которую функция запишет TRUE, если шрифт подчеркнутый, или FALSE в противном случае. Может равняться NULL, если этот параметр не нужен вызвавшей программе.
- pStrikeOut (BOOL*)
- Указатель на логическую переменную, в которую функция запишет TRUE, если шрифт перечеркнутый, или FALSE в противном случае. Может равняться NULL, если этот параметр не нужен вызвавшей программе.
Возвращаемое значение
TRUE, если в описании шрифта не обнаружено ошибок, FALSE в противном случае.
Примечания
Эта функция двигается по строке, начиная с указателя Start, считывает из нее ключевые слова описания шрифта (те же, что используются в функции rdsWriteFontText) и следующие за ними значения, записывая при этом эти значения по указателям, переданным в ее параметрах. Как только функция встретит в строке ключевое слово, не относящееся к словам описания шрифта, она запишет указатель на начало этого слова в переменную по указателю pNextWord и завершит работу. Функция работает так же, как rdsFontTextToStruct, но записывает считанные значения не в структуру, а в переменные вызвавшей программы. В отличие от rdsFontTextToStruct она всегда возвращает высоту шрифта в точках экрана, даже если в разбираемом тексте высота указана в типографских точках (преобразование в точки экрана в этом случае выполняется автоматически).
Функция автоматически обрабатывает знак продолжения «+», используемый в текстовом формате схем RDS – обнаружив его, она пропускает следующий за ним перевод строки и повторение знака продолжения, считая следующую строку текста продолжением текущей строки.
Передаваемая в функцию строка должна иметь кодировку UTF8, поскольку текстовые данные блока всегда хранятся и передаются в модель в этой кодировке. Версия функции с суффиксом W возвращает название шрифта в кодировке UTF16, но обрабатываемая строка при этом все равно должна быть в UTF8. Если необходимо обрабатывать строку в UTF16, необходимо предварительно преобразовать ее функцией rdsUTF16toUTF8.
См. также