Псевдо- консольная графика C++. Библиотека libbmp. (Рисование в файл bmp вместо консоли удобнее.)

Полезные советы и программы от пользователей нашего форума.

Модератор: Модераторы разделов

Ответить
xshaman
Сообщения: 105
ОС: Debian

Псевдо- консольная графика C++. Библиотека libbmp.

Сообщение xshaman »

Доброго времени суток!
Рекомендую всем интересующимся программированием графики в консоли попробовать выложенную здесь библиотеку libbmp.
----------------назначение--------------------------
1. Библиотека предназначена для реализации графики посредством консольного программирования на языке С++.
Она будет интересна начинающим программистам и всем тем, кому потребуется создать несложные (и сложные:))
рисунки или чертежи (например графики функций), при этом не используя оконных сред программирования.
2. С другой стороны, средства библиотеки могут быть использованы для вполне серьёзного создания битовых образов,
при этом простым и прозрачным для понимания методом.
Преимущество перед настоящей консолью: рисунки можно большие делать- следовательно с хорошим качеством. Ну и сохранённый рисунок легко вывести на принтер и тд......
---------------------------------------------------------
Вкратце:
Язык: С++.
Используя просто g++ и эту библиотеку можно рисовать в оперативку и сохранять рисунки на винт в формате bmp.
Рисует простые фигуры: пиксель, линию,окружн. и тд.
Две возможности управления цветом: 16 цветов и 16 млн- т. е. 24-битный цвет.

Распакуйте архив libbmp.tar.gz в любую удобную папку и прочитайте небольшую(4стр.) инструкцию к библиотеке.
Исходники в архиве- они очень простые.Кто хочет- изменит или дополнит под свои нужды. (можно заюзать и под винды)
Ставится в пол пинка.
(Кто помнит graf.pas -поймёт меня)

Буду рад выслушать все впечатления, а также отвечу на вопросы, если таковые будут.

Автор.

libbmp.tar.gz
(148.76 КБ) 694 скачивания

обновил 11 дек 09 г. баги пофиксены = )
(для скачивания нужна регистрация на форуме- она очень простая.)
Debian Squeeze.
Спасибо сказали:
Pengvjan
Сообщения: 2
ОС: правильная

Re: Псевдо- консольная графика C++. Библиотека libbmp.

Сообщение Pengvjan »

Когда то я тоже пробовал порисовать в bmp-файл, но столкнулся с такими граблями- нужно правильно создать начало файла, чтоб система потом могла правильно с ним работать. Здесь этот вопрос то решен- ось распознает созданные файлы,- но как сделано- коментов нет(хотя это уже конечно к внутреннему устройству функций относится.)
А так ниче- полезная штука, пользоваться просто.
Афтору- респект.

ЗЫ в мане очепятка : в коментах к примеру проги в конце надо Test.bmp а не ris.bmp
Спасибо сказали:
xshaman
Сообщения: 105
ОС: Debian

Re: Псевдо- консольная графика C++. Библиотека libbmp.

Сообщение xshaman »

Pengvjan писал(а):
02.12.2009 12:16
ЗЫ в мане очепятка : в коментах к примеру проги в конце надо Test.bmp а не ris.bmp


уже fixed.

--
Формирование шапки файла bmp под созданное изображение происходит при записи на диск. Это в функции rec().
Если ее рассмотреть - там видно что делается- она по сути линейная.

Но всё это не нужно для использования библиотеки- это всё внутри само обрабатывается.
Спасибо за респект.
Debian Squeeze.
Спасибо сказали:
xshaman
Сообщения: 105
ОС: Debian

Re: Псевдо- консольная графика C++. Библиотека libbmp.

Сообщение xshaman »

Добрый человек заметил ошибку доступа к простому цвету в функции setcolor() внутри библиотеки.
(байты стояли в обратном порядке)
Fixed.
Выложил по-новой.
-----------------------------
Гуголь нашел ещё библиотеку libbmp, да не одну. Но они все другие, сделаны по-другому, и видимо, цели использования тоже отличаются. Моя самая маленькая и простая= как в использовании, так и в дописании под собственные нужды пользователя-программиста.
(Имхо, те другие не так уж и распространены(в обычных дебиановских репах их нет), так что конфликт маловероятен, и также по той причине, что две упомянутых библиотеки имхо ни кчему.)
-----------------------------
Было несколько скачиваний, кто еще заметил баги- прошу, пожалуйста, пишите, хоть сюда, хоть в личку.
Список исправленных багов:
1.В мане в коментах к примеру проги был не правильно назван обьект.
2.Внутри библ. в функции setcolor() неправильный порядок байтов приводил при простом доступе к цвету к неправильному отображению цвета.
Надеюсь, конечно, что на этот раз с багами покончено. :)
Debian Squeeze.
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable
Контактная информация:

Re: Псевдо- консольная графика C++. Библиотека libbmp.

Сообщение Portnov »

А поехали-ка в проекты.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
Pengvjan
Сообщения: 2
ОС: правильная

Re: Псевдо- консольная графика C++. Библиотека libbmp.

Сообщение Pengvjan »

Portnov писал(а):
11.12.2009 15:18
А поехали-ка в проекты.


В проекты логичнее, в смысле не по степени законченности, а по смыслу работы.

Да, байты цвета, в функции setcolor() стояли задом наперед :), я сам поправил, а то вместо красного напрмер, синим рисовало :). Но это при 16цветовом обращении к цвету, а при 16,7 млн- не влияло. Счас правильно цвет ставится.
Спасибо сказали:
xshaman
Сообщения: 105
ОС: Debian

Re: Псевдо- консольная графика C++. Библиотека libbmp.

Сообщение xshaman »

Здравствуйте!
По идее человека, представившегося как Mantrakk, в библиотеку было внесено изменение:

название создаваемого рисунка (и его путь, если не по дефолту) прописывается теперь в функции rec(), то есть по завершению работы, а не при создании объекта.
Кроме того, в инструкцию добавлены коменты для пользователей Windows.

Текущую версию (ver 1.2) выкладываю:

libbmp.tar.gz
(153.53 КБ) 187 скачиваний
Debian Squeeze.
Спасибо сказали:
ass
Сообщения: 1

Re: Псевдо- консольная графика C++. Библиотека libbmp.

Сообщение ass »

Отличная либа! На винде работает без использования мерзкого WinAPI. Продолжаете разработку, проект стоящий. Есть предложение, например сделать поддержку закрашенных многоугольников, т.е. что-то типа этого: void
bmp::drawPolygon(int *x, int *y, int r, int g, int b);
или этого
struct Point { int x, y; }; struct Color { int r, g, b; }; bmp::drawPolygon(Point *p, Color *c);
Спасибо сказали:
xshaman
Сообщения: 105
ОС: Debian

Re: Псевдо- консольная графика C++. Библиотека libbmp.

Сообщение xshaman »

ass писал(а):
31.07.2010 07:42
Отличная либа! На винде работает без использования мерзкого WinAPI. Продолжаете разработку, проект стоящий. Есть предложение, например сделать поддержку закрашенных многоугольников, т.е. что-то типа этого: void
bmp::drawPolygon(int *x, int *y, int r, int g, int b);
или этого
struct Point { int x, y; }; struct Color { int r, g, b; }; bmp::drawPolygon(Point *p, Color *c);



Здравствуйте.

Я долго думал над вашим сообщением. В итоге, мысли разделились на две группы.
1. Спасибо на добром слове. Библиотека не претендует на развернутую многофункциональность. Напротив, в ее основе лежит идея о максимальной простоте. Поскольку она ориентирована на начинающих программистов. (которые, если захотят, могут изменить ее по своему усмотрению).
Да, действительно, можно было бы добавить функции, рисующие многоугольники, причем, наиболее красиво это можно сделать, как мне кажется, применяя функции с переменным числом аргуметов (соответсвенно от количеств пар координат вершин рисовался бы соответствующий многоугольник).
В данном случае передачу целочисленных аргументов по указателю, как вы предлагаете не вижу целесообразной. Это только усложнит простую вещь.

2. Ваш ник не позволяет мне обращаться к вам с его использованием. Возможно целью вашего сообщения было нечто не очень хорошее. И, да, я параноик. Если я чего-то себе тут напридумывал- не берите в голову.
Debian Squeeze.
Спасибо сказали:
Ответить