Как определить шаг для 4-х канального растрового изображения?

Сначала мои извинения, если это наивный вопрос. Я только начал изучать низкоуровневый рендеринг текста с помощью freetype2 и Pango. Я заметил, что Pango может отображать текст в растровое изображение FT2, определяемое структурой

typedef struct  FT_Bitmap_
  {
    unsigned int    rows;
    unsigned int    width;
    int             pitch;
    unsigned char*  buffer;
    unsigned short  num_grays;
    unsigned char   pixel_mode;
    unsigned char   palette_mode;
    void*           palette;

  } FT_Bitmap;

Я не очень разбираюсь в особенностях растрового изображения и не могу правильно настроить высоту звука, особенно для 4-канального растрового изображения. Я нашел несколько рабочих примеров для растровых изображений в градациях серого, которые хорошо работают.

  FT_Bitmap bmp = {0};

  int stride = 0;
  int width = 640;
  int height = 480;

  /* ------------------------------------------------------------ */
  /*                   I N I T I A L I Z E                        */
  /* ------------------------------------------------------------ */

  /* FT buffer */
  FT_Bitmap_New(&bmp);
  bmp.rows = height;
  bmp.width = width;

  bmp.buffer = (unsigned char*)malloc(bmp.rows * bmp.width);
  if (NULL == bmp.buffer) {
    printf("+ error: cannot allocate the buffer for the output bitmap.\n");
    exit(EXIT_FAILURE);
  }

  /* create our "canvas" */
  bmp.pitch = (width + 3) & -4;
  bmp.pixel_mode = FT_PIXEL_MODE_GRAY; /*< Grayscale*/
  bmp.num_grays = 256;
  stride = cairo_format_stride_for_width(CAIRO_FORMAT_A8, width);
  surf = cairo_image_surface_create_for_data(bmp.buffer, CAIRO_FORMAT_A8, width, height, stride);

Может кто-то указать пример или объяснить алгоритм определения высоты тона для 4-канального растрового изображения на основе любой ширины? Мне нужно использовать Pango для рендеринга текста на 4-х канальном растровом изображении.

Заранее спасибо.

0 ответов

Другие вопросы по тегам