LINUX.ORG.RU

Си. Рисование примитивной графики

 , , ,


2

5

Требуется графическая либа для рисования примитивной графики в linux. ЯП - си. Компилятор - gcc/

Получил задание по учёбе: требуется с помощью модуля GRAPH из TurboPascal нарисовать графики функций и тд. Но я делаю лабы на чистом Си. Винды нет. Можно же наверно создать элементарное окно и вывести в подобие canvas?
Гугл внятного ничего не даёт. #include <vga.h> уже попробовал. Ошибку уже посмотрел;-) Насчёт sdl толком не понял.

★★★

Если по теме - я бы сделал микрофреймворк. Процедура инициализации создаёт окно (например на Gtk, если на C пишешь, можно и на Xlib). Остальное API идентично Borland CRT-шному, но рисует, соответственно, на этом окне.

Важное отличие в том, что в GUI-фреймворках принят событийный подход, т.е. пришло событие, очень быстро отработало и вернуло управление. А в Borland CRT простая последовательная модель выполнения. Нарисовали. Сделали Sleep. И т.д., поэтому тебе нужно будет все операции с рисованием делать в отдельном потоке, а главный поток уже будет последовательно выполняться, как в паскале. Ну и, соответственно, все команды на рисование должны высылаться GUI-потоку, который их будет подбирать и выполнять.

Осилишь это, причём так, чтобы код на Borland CRT компилировался на твоём фреймворке без изменений (кроме #include может быть), будет неплохой опыт. Но задача нетривиальная.

Legioner ★★★★★
()
Последнее исправление: Legioner (всего исправлений: 1)

Но я делаю лабы на чистом Си.

Ну и дурак. Ответственно заявляю. Училке нужно говорить что у тебя 64-битная винда и ТрупПаскаля на ней не запускается, а переустановить ты её не можешь, т.к. «у тебя лицензия только на 64-битную версию».

Короче, ничего путного просто нет. Одно из двух, либо тебе придется на твой школьный комп таскать Qt/Gtk/SDL, что судя по твоему уровню ты это сделать просто не сможешь, либо перезагрузиться в винду и заюзать ТрупПаскаля с пакетом Graph. Он, к слову, очень удобный.

Твоя задача, чувак, не строить из себя крутого программиста (тем более, хреново получается). А строить из себя крутого исполнителя требований. Твоя задача — получить 5... А уж чё ты там ваяешь для себя, так это уже никого не интересует.

Так что, перезагружайся в винду. Ставь ТрупПаскаля, делай задачу. Тем более была бы задача-то.

Macil ★★★★★
()

разумнее всего поставить досбокс и в него паскакаль. но если хочется хардкора с линуксом - то каира.

waker ★★★★★
()
Ответ на: комментарий от Ignatov

Я ж написал уже! Мне интересно как это реализуется в Linux!

Точно также как и под вендой. Тыщщей всевозможных способов. От самых низкоуровневых, до всевозможных фреймворков. Например, на некоторых платформах типа Raspberry Pi можно cделать консольное приложение через EGL. Задай направление.

Сделать кроссплатформенно ­— намного сложнее. Про SDL, Qt и Gtk/Cairo тебе уже сказали. Только если ты не будешь запускать свою прогу с личного ноутбука, на венде тебя постигнет определенный конфуз.

Еще очень круто, красиво и кроссплатформенно можно сделать внутри браузера, через тот же D3.js.

Macil ★★★★★
()

Так заюзай SDL or GTK, или вот openGL тоже хорошее решение.

abs ★★★
()

Получил задание по учёбе: требуется с помощью модуля GRAPH из TurboPascal нарисовать графики функций и тд.

Покупай винду, если требуется. Твою самодеятельность 95% нормальных преподов оценят на 2 и будут абсолютно правы.

peregrine ★★★★★
()
Ответ на: комментарий от waker

А если минимум хардкора? ;-) Но в линуксе. Сдам лучше через GRAPH. Меньше вопростов будет. Но для себя и под linux попробую сделать.

Ignatov ★★★
() автор топика
Ответ на: комментарий от Macil

Ну и дурак. Ответственно заявляю. Училке нужно говорить что у тебя 64-битная винда и ТрупПаскаля на ней не запускается, а переустановить ты её не можешь, т.к. «у тебя лицензия только на 64-битную версию».

Про XP compatibility mode не слышал, да?

anonymous
()

а вывести результат в файл не разрешают?

int13h ★★★★★
()
Ответ на: комментарий от int13h

Потому что у них попаболь от СГС(э) и СГС(м).

anonymous
()

directfb уже упоминали?

ananas ★★★★★
()
Ответ на: комментарий от Ignatov

Я вот тоже почитал, поражен до глубины души: есть конкретное задание, на си, складывается впечатление что на Си это сделать нельзя, а если и можно то через какие то грабли. Зато в винде как все проще

anonymous
()
Ответ на: комментарий от anonymous

Аледятел, задание на паскале!

anonymous
()
Ответ на: комментарий от peregrine

Зойчем покупать, если на торрентах есть?

А насчет оценки — да. Если бы я задавал лабораторку на сях в линуксе, а кто-нибудь принес ее на паскале в мастдайке (а то и на шарпе, буэээ), то я бы не только 2 поставил, но и поиздевался бы еще!

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Ignatov

как преодолел отсутствие вложенных функций в стандартом ?

qulinxao ★★☆
()
Ответ на: комментарий от Ignatov

если дельфи , то в них есть замыкания(давно уже)

в обычном с нужно(нужно ли? если в ручную) закатывать солнце в ручную в части захвата контекста и сбора эт самого.

qulinxao ★★☆
()
Ответ на: комментарий от anonymous

на борландском С делается также само;-) но винда. Пошарил по форумам - через FPascal тоже проблематично. Там GRAPH кривой. А тема то похоже популярная;-) Или поприкалываться кто-то решилXD

Ignatov ★★★
() автор топика
Последнее исправление: Ignatov (всего исправлений: 1)

ЯП - си. Компилятор - gcc/

+ ws-сервер + js + canvas

Debasher ★★★★★
()

Если использовать функции BGI (это как раз те что в модуле GRAPH TP) - то можно использовать SDL_bgi (http://libxbgi.sourceforge.net/) или libXbgi (там-же). Ни тебе ни преподу ненадо изучать другие функции - все знакомо - только сишный код вместо паскаля.

sigurd ★★★★★
()
Последнее исправление: sigurd (всего исправлений: 1)
Ответ на: комментарий от sigurd

И мануал борландский;-) А то 6 лаб сделано под linux, а из-за одной разгонять dosbox/virtualbox. А мне подсказывает интуиция - половину и смотреть не будут.

Ignatov ★★★
() автор топика
Последнее исправление: Ignatov (всего исправлений: 1)

Требуется графическая либа для рисования примитивной графики в linux. ЯП - си. Компилятор - gcc

gtkmm, qt

ЯП - си

никто пока не запрещает писать на C внутри C++ (или снаружи).

Компилятор - gcc

там в коробке g++

emulek
()
Ответ на: комментарий от Ignatov

А вот это то, что нужно;-) Спасибо! А если поставить FPC, то наверное будет Turbo Pascal! + примеры на сайте;-)

под fpc есть unit graph.

dikiy ★★☆☆☆
()
Ответ на: комментарий от dikiy

Тему можно считать закрытой! То, что я хотел, получил. Если у кого-то еще возникнет такой же вопрос - ответ тоже тут найдут. Установил SDL_bgi и libsdl-gfx-dev. Пакет+маны+примеры в исходниках. Куда проще - не знаю. Всем спасибо за ответы!

Ignatov ★★★
() автор топика
Ответ на: комментарий от Eddy_Em

а еслиб на ассемблере принесли? всё равно два? :) Был свидетелем случая: задавали на турбопаскале, а сокурсник на ассемблере притащил, повороты фигуры там в разных плоскостях, перемещения, с кнопочками как в виндовс сделал. Преподаватель насколько помню освободил от занятий студента:)

Frost ★★★
()
Ответ на: комментарий от Frost

Уже 5 получил. Но будет свободное время - гляну!

Ignatov ★★★
() автор топика
Последнее исправление: Ignatov (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.