Навигация:
<< >> Оглавление Указатель

Приложения

Приложение А. Функции, константы и структуры RDS

А.5. Сервисные функции и макросы RDS

А.5.11. Разбор текста

А.5.11.5. rdsReadFontText – разбор описания шрифта

Функция rdsReadFontText считывает из переданной в параметрах строки описание шрифта и записывает его в переменные, указатели на которые переданы в других параметрах функции. Строка должна иметь кодировку UTF8, имя шрифта может возвращаться как в UTF8, так и в UTF16.

    rdsReadFontTextA(
     Start,       // Начало текста (UTF8)
     *pNextWord,  // Возврат – конец описания (UTF8)
     NameBuf,      // Указатель на массив для возврата имени шрифта (UTF8)
    int NameBufLen,      // Max длина имени
    int *pHeight,        // Возврат – высота шрифта
     *pColor,    // Возврат – цвет шрифта
    int *pCharset,       // Возврат – набор символов
    int *pEscapement,    // Возврат – угол
     *pBold,         // Возврат – жирность
     *pItalic,       // Возврат – курсив
     *pUnderline,    // Возврат – подчеркивание
     *pStrikeOut     // Возврат – зачеркивание
  );
    rdsReadFontTextW(
     Start,       // Начало текста (UTF8)
     *pNextWord,  // Возврат – конец описания (UTF8)
     NameBuf,     // Указатель на массив для возврата имени шрифта (UTF16)
    int NameBufLen,      // Max длина имени
    int *pHeight,        // Возврат – высота шрифта
     *pColor,    // Возврат – цвет шрифта
    int *pCharset,       // Возврат – набор символов
    int *pEscapement,    // Возврат – угол
     *pBold,         // Возврат – жирность
     *pItalic,       // Возврат – курсив
     *pUnderline,    // Возврат – подчеркивание
     *pStrikeOut     // Возврат – зачеркивание
  );
  // 
    rdsReadFontText(
     Start,       // Начало текста (UTF8)
     *pNextWord,  // Возврат – конец описания (UTF8)
     NameBuf,     // Указатель на массив для возврата имени шрифта (кодировка по умолчанию)
    int NameBufLen,      // Max длина имени
    int *pHeight,        // Возврат – высота шрифта
     *pColor,    // Возврат – цвет шрифта
    int *pCharset,       // Возврат – набор символов
    int *pEscapement,    // Возврат – угол
     *pBold,         // Возврат – жирность
     *pItalic,       // Возврат – курсив
     *pUnderline,    // Возврат – подчеркивание
     *pStrikeOut     // Возврат – зачеркивание
  );

Тип указателя на эту функцию

RDS_BSpSSIpIpCrpIpIpBpBpBpB (для UTF8) или RDS_BSpWsSIpIpCrpIpIpBpBpBpB (для UTF16)

Параметры

Start (RDSCSTR)
Указатель на начало текста описания шрифта. Пробелы и табуляции в начале текста будут пропущены.
pNextWord (*)
Указатель на переменную типа 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.

См. также

rdsFontTextToStruct, rdsStructToFontText, rdsWriteFontText.


<< >> Оглавление Указатель