Allegro – свободная кроссплатформенная мультимедийная библиотека. Она предоставляет инструменты для вывода базовой 2D-графики и текста, работы с изображениями, воспроизведения аудиофайлов (в том числе MIDI-музыки) и обработки пользовательского ввода. Также она предоставляет дополнительные функции для использования чисел с фиксированной и плавающей запятой, операций над матрицами, использования строк в формате Юникод, работы с файловой системой и 3D-графикой.
Библиотека написана на языке программирования C и рассчитана на использование с языками C, C++. Также возможна связка с Pascal, Python, Lua for Windows, Scheme, D, Go и множеством других языков.
Allegro поддерживает платформы Microsoft Windows, Mac OS X, UNIX-подобные системы, Android и iOS, абстрагируя их API в один переносимый интерфейс. Существует независимый порт Allegro на AmigaOS 4 и MorphOS.
Также сообщество пользователей Allegro создало несколько расширений для библиотеки, к примеру, расширение, позволяющее прокручивать карту из тайлов, или проводящее импорт и экспорт из множества файловых форматов (PNG, GIF, JPEG изображения, MPEG видео, Ogg, MP3, S3M аудио, шрифты TTF и т. п.).
Особенности Allegro
Allegro предоставляет следующие графические функции:
- отдельные пиксели, линии, прямоугольники, треугольники, круги, эллипсы, дуги, кривые Безье;
- заливка фигур;
- полигоны: плоский, по Гуро, текстурный (3D) и полупрозрачный.
- сжатые и с использованием маски;
- бит-блит, вращение, масштабирование, альфа-смешивание, затенение по Гуро;
- встроенная поддержка форматов BMP, LBM, PCX и TGA (другие форматы поддерживаются с помощью расширений).
- операции с палитрой (чтение, запись, преобразование);
- преобразование цветов форматов RGB <-> HSV.
- поддержка различных кодировок и преобразований, по умолчанию используется UTF-8;
- растровые шрифты (маскирование, окраска, выравнивание).
- рендеринг прямо на экран или в текстуру любого размера;
- аппаратный скроллинг и тройная буферизация (где возможно), режим разделенного экрана;
- функции анимации для форматов FLI/FLC.
Cсылки