Ой, вей.
warchief писал(а):будет дальше развиваться?
Будет. Период творческого кризиса подходит, надеюсь, к концу =). Скорее всего, это будет почти полный рефакторинг с максимально разумным сохранением интерфейса.
warchief писал(а):и эта любовь автора к строкам....
ну серьезно:
- конфигурирование через строчки.. может писателям в блокнотах и пофиг, но тем кто пишет в нормальных IDE... не хватает IntellIsence
Все таки вместо того чтобы написать SetSize(800, 600). я должен по идиотски изворачиваться со строками
Как правильно отметил
Jesus05, строковая конфигурация очень помогла в минимизации API. Она расширяема и кросс-платфоменна (в смысле языков программирования). Это то, что позволило сделать тучу оберток под всякие ЯП и долго поддерживать их в более-менее актуальном состоянии. Строковая конфигурация попросту очень гибкая (как динамическая типизация, т. е. это и плюс и минус). Форматирование строк это тлен, хуже когда настройка требует структуры на структурах и фабрики на фабриках. Строки позволяют записать лаконично и потом не сломать при обновлении.
Некоторые свойства будут доступны и отдельно. Большая часть настроек текущего терминала -- это статичные, глобальные настройки, раз в начале задал и забыл. В терминале mk.II будут самостоятельные объекты-субтерминалы, некоторые свойства которых (как минимум размер и расположение) могут быть столь же динамичны, как и текущий цвет. Логично для этого предоставить методы настройки. Наверное, не менее логично будет предоставить их и для корневого терминала.
Проблема провести границу, что должно быть отдельным методом, а что конфигурацией. Я стараюсь разделять их по частоте использования. Например установка заголовка окна -- это штучная операция, а установка текущего слоя -- частая. Довольно очевидно, что эта граница во многом субъективна. Но все взять и переделать на методы/структуры непросто, это свяжет руки в дальнейшем. Я склоняюсь к позиции, что в любом проекте несложно набросать обертки для конкретных используемых настроек (более того, любой проект покрупнее неизбежно обрастает такими обертками независимо от интерфейса библиотеки).
Xecutor писал(а):Есть же замечательный libfmt. Безопасное и быстрое форматирование!
Но с++11 only, что в 2018-м году уже не должно быть проблемой.
Кстати, вот этот момент. Я думаю разделить интерфейс С/С++ на отдельно С99 и отдельно C++11, уж больно это разные языки (одни строки чего стоят, а уж когда объекты появятся...). Версия для С++ в этом случае будет содержать компактную printf-подобную реализацию форматирования по мотивам
tinyformat.
warchief писал(а):но зачем было изображения идентифицировать символами? а если у меня 100500 тайлов? я запутаюсь минимум
Скорее наоборот, это все символы идентифицированы числами (из таблицы Unicode). Общее индексное пространство позволяет поштучно подменять символы в шрифте картинками и наоборот, вставлять пиктограммы в выводимый текст. Терминал просто оперирует пронумерованными картинками, а символы там или тайлы -- ему без разницы.
Если не нужен текст, то можно просто пользоваться числами, функция terminal_put делает именно это. Достаточно выбрать для тайлов индексы далеко от используемых в выводе текста, чтобы они не пересеклись.