printГрафическая библиотека

printИзображения

Для повышения наглядности тип void * для хранения изображений в оригинальной библиотеке был заменен на IMAGE *. Вместо функции imagesize и явного выделения/освобождения памяти предлагается использовать функции createimage и freeimage. Старые программы можно компилировать без изменений.

void getimage(int left, int top, int right, int bottom, IMAGE *bitmap);
Сохраняет изображение некоторой области экрана в памяти
void putimage(int left, int top, IMAGE *bitmap, int op, int dwidth=0, int dheight=0);
Выводит на экран изображение. Для вывода можно использовать режимы COPY_PUT, XOR_PUT, OR_PUT, AND_PUT, NOT_PUT, TRANSPARENT_PUT (цвет в левом верхнем углу картинки считается прозрачным), TRANSPARENTBK_PUT (текущий фоновый цвет считается прозрачным), ALPHABLEND_PUT (при использовании α-канала). Можно указать размеры картинки на экране; если указать только один из размеров, то выполнится пропорциональное изменение размеров.
void imageputpixel(IMAGE *bitmap, int x, int y, int color, int alpha=255);
Изменить цвет пикселя в изображении. Для color=NO_COLOR значение α-канала игнорируется.
int imagegetpixel(IMAGE *bitmap, int x,int y);
Считать RGB-цвет пикселя в изображении. Если необходимо сравнение с BGI-цветом, например, WHITE, его нужно преобразовать converttorgb(WHITE).
IMAGE *createimage(int width, int height, int color=NO_COLOR);
Создать изображение указанного размера, все пикселы черные и прозрачные или указанного цвета.
void freeimage(IMAGE *bitmap);
Освободить память от изображения.
int imageheight(IMAGE *bitmap);
Высота изображения.
int imagewidth(IMAGE *bitmap);
Ширина изображения.
IMAGE *imageturn(IMAGE *bitmap, double a=90, int color=NO_COLOR);
Создать новое изображение из bitmap, повернув его на a градусов. Свободное место заполнить цветом color. После использования созданного изображения нужно освободить память.
IMAGE *imageresize(IMAGE *bitmap, int width=0, int height=0, int op=COLORONCOLOR_RESIZE);
Создать новое изображение из bitmap, изменив его размеры до width x height. Если указать только один из размеров, то выполнится пропорциональное изменение размеров. Также можно указать способ сжатия: COLORONCOLOR_RESIZE (цвет-в-цвет), HALFTONE_RESIZE (полутона), ALPHABLEND_RESIZE (для картинок с α-каналом). После использования созданного изображения нужно освободить память.
IMAGE *imagecopy(IMAGE *bitmap, int x=0, int y=0, int width=0, int height=0);
Создать новое изображение, вырезав из bitmap, начиная с координаты (x,y), размером width × height. Если размеры больше размеров bitmap, добавляются повторения этого изображения. По умолчанию размеры совпадают с размерами bitmap, то есть происходит циклический сдвиг.
IMAGE *imagemirror(IMAGE *bitmap, int dir=HORIZ_DIR);
Создать новое изображение из bitmap, отразив его по вертикали (HORIZ_DIR) или горизонтали (VERT_DIR). После использования созданного изображения нужно освободить память.
void imagealphatransparent(IMAGE *image, int color=-1, int alpha1=255, int alpha2=0);
Изменить α-канал у прозрачного цвета. Для color=-1 прозрачным цветом будет цвет пикселя в в левом верхнем углу картинки. Можно явно задать значение α-канала у непрозрачного и прозрачного цвета.
int imagegetalpha(IMAGE *image,int x,int y);
Получить α-канал у пикселя.
void imagesetalpha(IMAGE *image,int x,int y, int alpha);
Изменить α-канал у пикселя.
IMAGE *loadBMP(const char *filename);
Создать и загрузить изображение из файла. Функция поддерживает загрузку из BMP, JPG, GIF. Добавлена загрузка BMP с α-каналом.
void saveBMP(const char *filename, IMAGE *bitmap);
Сохранить изображение в указанном файле (только BMP).
loading