среда, 25 сентября 2013 г.

Библиотека для элементарного вывода графики для С++ под linux

Когда я в школе начинал изучать программирование, сначала - QuickBasic 4.5, потом Turbo Pascal 7.0 и Borland C три точка чего-то-там, больше всего мне нравилось рисовать. Графики, фракталы, проекции многомерных объектов... А позднее - симуляция физических систем (всякие планеты с гравитацией, цепочки грузиков и пружинок...). И во всём этом, кряхтя и пыхтя под Windows XP, мне служила библиотека BGI, Borlad Graphic Interface. Помните initgraph(gdriver, gmode, 'C:\TP7\BGI') в Паскале? Эх...
Итак, для полноценного изучения программирования, для творчества, на мой взгляд, просто необходимо рисовать. Но насколько трудно для начинающего программиста, обычно - школьника, написать на программу C/C++, которая нарисует квадратик на виндузовской форме, используя WinAPI? Или Qt, GTK+, wxWidgets... Можно, конечно, взять C++ Builder (к слову, всего за 132 956,35 руб - см. тут), или что-то сделать в последних Visual Studio. Но это стрельба из пушки по воробьям, на мой взгляд. Да и вообще, я за открытый софт, и за Linux.
Я решил написать совсем небольшую библиотеку для тех, кто только начинает изучать программирование на С++ (и программирование в целом), значительно облегчающую рисование графики под Linux.

Моя библиотека создаёт окно средствами GTK3 с парой кнопочек, и рисует на нём всё, что попросит пользователь. Возможно, я изобретаю велосипед, но быть может и он кому-то будет полезен.

К сожалению, с началом очередного семестра времени на допиливание библиотеки нет, также как и нет времени на написание более-менее подробного мануала по её использованию. Однако, по тестовому коду и по прототипу класса SimpleGTKDrawspace не составит большого труда научиться его использовать и новичку в программировании.

Код лежит здесь: https://github.com/DAlexis/simple-gtk-drawspace

Собирать можно из корневого каталога репозитория командой make, но использующийся для сборки Makefile достаточно нетривиален для новичка, потому имеется более простой, в папке source с названием SimpleMakefile. Просто переименуйте его в Makefile, и выполните make там.

Вывод графики на экран осуществляется асинхронно, поэтому окно никогда не "залипнет" при зависании пользовательского рисующего кода. Пользователь рисует в буфер, который определенное количество раз в секунду копируется на экран. Рисованием окна и копированием занимается main thread, пользовательская функция рисования запускается в отдельном треде, который завершается, как только завершается эта функция.

Вот пример каракуль, которые можно выводить на экран при помощи моей библиотеки:

Увы, но времени на создание приличной демки у меня не было.

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

1 комментарий:

  1. This way my pal Wesley Virgin's autobiography launches in this SHOCKING AND CONTROVERSIAL VIDEO.

    Wesley was in the army-and soon after leaving-he discovered hidden, "self mind control" tactics that the government and others used to get anything they want.

    These are the EXACT same SECRETS many celebrities (especially those who "come out of nowhere") and elite business people used to become wealthy and famous.

    You've heard that you use less than 10% of your brain.

    Really, that's because the majority of your brain's power is UNCONSCIOUS.

    Maybe this expression has even taken place INSIDE OF YOUR own brain... as it did in my good friend Wesley Virgin's brain 7 years ago, while driving a non-registered, beat-up trash bucket of a car with a suspended driver's license and with $3 on his debit card.

    "I'm so frustrated with living paycheck to paycheck! When will I get my big break?"

    You took part in those conversations, ain't it so?

    Your own success story is going to happen. You just have to take a leap of faith in YOURSELF.

    WATCH WESLEY SPEAK NOW

    ОтветитьУдалить