LINUX.ORG.RU

Состоялся релиз Nuklear — библиотеки для построения пользовательских интерфейсов, написанной на ANSI C

 , ,


15

8

11 апреля 2016 года состоялся релиз Nuklear — небольшой библиотеки для построения GUI, написанной на ANSI C.

Это минималистичный тулкит, построенный на принципах immediate mode и переданный в общественное достояние. Библиотека была спроектирована как простой встраиваемый интерфейс и не имеет никаких дополнительных зависимостей. Для рендеринга и обработки пользовательского ввода используются платформозависимые бэкенды, поверх которых построена модульная система, позволяющая спроектировать интерфейс основываясь на концепциях ввода/вывода.

Особенности

  • immediate mode
  • header only (можно использовать и как обычную библиотеку, с разделением на реализацию и заголовки)
  • написан на C89 (ANSI C)
  • небольшая кодовая база (~15kLOC)
  • ориентирован на портабельность, эффективность и простоту
  • нет зависимостей (не требуется даже стандартная библиотека)
  • настраиваемый внешний вид
  • занимает мало места в памяти, предоставляет полный контроль за потребляемыми ресурсами
  • поддержка UTF-8
  • не имеет глобального или скрытого состояния
  • модульность: вы можете скомпилировать и использовать только ту часть библиотеки, которую собираетесь использовать

Несколько примеров пользовательского интерфейса, реализованного с помощью nuklear: раз, два, три.

>>> Подробности

★★★

Проверено: tailgunner ()

Ну если позволяет натягивать на себя скины как на 3 скриншоте — то годно.

Wow! на его сайте куда более крутые и понятные скриншоты, рекомендую взглянуть.

kep ()

Скриншоты уродливы все без исключения.

Deleted ()

Библиотека состоящая из одного *.h — я ужаснулся.

beastie ★★★★★ ()

Тач умеет? Вывод в OpenGL умеет?

Впрочем, даже если не умеет, то всё равно круто.

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

С первого (слегка нетрезвого) взгляда — внушает. Правда, нифига не понятно как оно работает, а просматривать один файлик в 15 тыщ строк (слегка нетрезвым взглядом) пока как-то не тянет.

anonymous ()

Офигенно. А то от этих жирнотулкитов и их внутренних костылей тошнит.

Zaskard ()

Какие сюрфейсы поддерживает-то? X11, GDI? SDL?

yoghurt ★★★★★ ()

Wikipedia:
Immediate mode rendering is a style for application programming >interfaces of graphics libraries, in which client calls directly >cause rendering of graphics objects to the display. It does not >preclude the use of double-buffering.

...

It does not preclude the use of double-buffering.

Росходимся, поцаны. На этой поделке не сделаешь игр.

anonymous ()

написан на C89 (ANSI C)

шел 2016 год

cvs-255 ★★★★★ ()

Я правильно понимаю, что графические примитивы (квадратики, линии, кнопочки) пользователь должен отрисовать сам под все платформы, которые он поддерживает в приложении? По крайней мере вроде как это происходит в демках.

Тогда это получается не тулкит для построения гуя, а тулкит для тулкитов для построения гуя.

gaga ()

Ну блин, небольшой тулкит. Я хочу что-то, что было таким же крутым, как GTK2. Чтобы все его приняли, пропихнули в стандарт, гласно и негласно! Благодаря чему софт реально начнёт появляться!

Остаётся надеяться на то, что тулкит ждёт судьба Blender после открытия исходников (взрывное развитие и когда-нибудь признание)

ZenitharChampion ★★★★★ ()

настраиваемый внешний вид

Ибо системные темы он не понимает.

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

Пользователь может уже взять реализацию из демок или автор вкатит код реализаций в свою кодовую базу.

Edible ()

Ух нихрена себе заголовочный файл на 19.5к строк, учитывая пустые. (о, заметил что beastie от этого тоже в легком испуге)

Правда, зачем single header, мне не понятно. Неужели нельзя было разбить на несколько независимых файлов?

А внешний вид годный, относительно, ибо непонятно на размытой демонстрации, как оно будет в реальности.

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

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

anonymous ()

Либа прикольная, но увы, не для десктопа. Даже какого-либо намека на HIG нет.

От код плакать хочется, ибо C.

500LOC для примитивного калькулятора, который на Qt можно в 100-200 реализовать...

А так хочется нормального, десктопного тулкита.

нет зависимостей (не требуется даже стандартная библиотека)

LIBS = -lglfw -lGL -lm -lGLU -lGLEW

написан на C89 (ANSI C)

CFLAGS = -std=c99

занимает мало места в памяти

Пример extended жрет 32MB ОЗУ, как то жирно.

RazrFalcon ★★★★★ ()

Пока не попробовал, думал, что это как раз то, чего я ждал.

Компилируется долго, как будто c++. Кроме x11 всё замылено, почему? Уже словил один сегфолт.

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

Пример extended жрет 32MB ОЗУ, как то жирно.

А у меня все 40 RSS. Надо бы как-то посмотреть, что именно столько памяти потянуло. Зато zahnrad - 3.4MB.

gag ★★★★★ ()

immediate mode - это без аппаратного ускорения что-ли? Так оно же будет тормозить на hidpi экранах. И вообще, как я понял, оно не умеет в dpi. Так что для десктопа не годится, только в embedded.

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

Росходимся, поцаны. На этой поделке не сделаешь игр.

Почему? Тебя не устраивает, что оно не препятствует двойной буферизации? Если бы оно с ней конфликтовало, ты с посонами наделал бы игор?

nemyax ()

Радиальное меню выглядит забавно :)

X-Pilot ★★★★★ ()
Ответ на: комментарий от ZenitharChampion

Жди когда efl перестанет падать и вырвиглазо выглядеть

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

Так это, как я понял, для ембидеда. Т.е. для всяких там кофеварок и холодильников. Или нет? Нафига там системные темы?

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

для всяких там кофеварок и холодильников. Или нет? Нафига там системные темы?

Там тоже могут быть ОС. Вон на LTE-свистке за 600р стоит аж две %)

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

Но зачем там поддержка системных тем? В ембидете как правило весь гуй (если он есть) создаётся разрабами этого ембидеда. Зачем тянуть всякую жирноту? Нужно тебе на микроволновке управление с тачскрина на три кнопки, рисуешь эти три кнопки как тебе надо, вот и всё.

MrClon ★★★★★ ()

Бегло просмотрел исходники. Производит впечатление поделки средней руки. Возможно кому-то будет полезно. Однако в качестве мультиплатформенного тулкита для создания интерфейса на C, уже давно есть IUP. Если кому интересно: http://webserver2.tecgraf.puc-rio.br/iup/ На нем можно писать вполне серьезные приложения. Есть поддержка двойного буфера и OpenGL, есть встроенная поддержка скриптинга на Луа и при этом требования к ресурсам - минимальные.

anonymous ()

Оставлю это тут: http://www.nanapro.org/en-us/, типа симметричный ответ, только со всякими C++11 :-)

Кстати, а кто понакидает ссылок на годные GUI тулкиты под embedded?

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

Однако в качестве мультиплатформенного тулкита для создания интерфейса на C, уже давно есть IUP

Может, задумка дюжину лет назад у них была и неплохая, но в итоге там внутри GTK. Так что - не в счёт.

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

Нужно тебе на микроволновке управление с тачскрина на три кнопки, рисуешь эти три кнопки как тебе надо, вот и всё.

подходит твоя жена к микроволновке, а та - раз, и шкурку на розовую на тачскрине меняет

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

Анонимусу невдомек, что иммидит-моде родился в играх, и куда раньше этих его гтк, кутэ, мфц, тк.

Полтреда не понимает, что это и для чего. Оп, такие вещи надо цитировать и введение писать, чтобы в каментах х** с пальцем не сравнивали. Также лорчую анонимуса с IUP-ом.

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

Может, задумка дюжину лет назад у них была и неплохая, но в итоге там внутри GTK. Так что - не в счёт.

GTK коннектор используется только там, где это уместно. Кроме него есть много других: GDI, Motif, итд. При желании легко написать свой - кода там не очень много.

anonymous ()

С документацией как у проекта? Самая лучшая библиотека не нужна без нормальной документации.

anonymous ()

написан на C89 (ANSI C)

Заа-чеем, текущий стандарт C11. Автор библиотеки в был в заморозке аж с 1980-х годов.

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

Затем, кретин, что vs не умеет в с90.

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

Зато даже компилятором от МС скомпилится.

Ну тогда Windows надо сдать в архив.

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

А чем оно лучше fltk?

Тем, что написан на чистом Си.

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

Затем, кретин, что vs не умеет в с90.

Тогда Visual Studio на свалку.

Это мир тотального GNU C Compiller.

anonymous ()

Судя по описанию годнота, надо будет ее в Go попробовать, благо что маленькая.

umren ★★★★★ ()

С лицензией слегка не понятно

This software is dual-licensed to the public domain and under the following license: you are granted a perpetual, irrevocable license to copy, modify, publish and distribute this file as you see fit.

Почему не выпускать под стандартной лицензией аля BSD, MIT, Apache?

придумал какой то велосипед

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

иммидит-моде
Полтреда не понимает, что это и для чего.

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

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

по моему, это совсем другое.

если надо писать много междумордия, я б этот не взял.

да и в флтк не хватает упаковки виджетов.

samy_volosaty ★★★★★ ()

небольшая кодовая база (~15kLOC)
занимает мало места в памяти
поддержка UTF-8

Ну-ну.

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

небольшая кодовая база (~15kLOC)

15 к строк - это только процессоры рендера. Плюс еще примерно столько же на обертки для конкретной системы (X/OGL etc)

занимает мало места в памяти

Занимает 30 метров. Скорее всего из-за говно аллокатора. Нужно тестировать с отключенным флагом, чтобы юзал стандартный. Ни о каком эмбеддед тут речь в принципе идти не может.

поддержка UTF-8

Не увидел в когда. Юзаются стандартные strXXX

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.