Текущий раздел:

Описания RDS

Приложения

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

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

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

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

# Приложения

## Приложение А. Функции, константы и структуры 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.

См. также

rdsFontTextToStruct, rdsStructToFontText, rdsWriteFontText.