Как определить шаг для 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-х канальном растровом изображении.
Заранее спасибо.