Я делаю игровой графический интерфейс API. Это идет очень хорошо, за исключением одного аспекта. Я хочу темы, похожие на то, как работает GTK. Я хочу, чтобы все работало так, чтобы каждый элемент графического интерфейса по умолчанию рисовался как Windows9X. Если будет найдено, что тема установлена для этого типа виджета, она будет нарисована с этими растровыми изображениями.
Моя первоначальная концепция заключалась в создании класса Theme, в котором были бы методы получения и установки для растровых изображений.
например:
themeManager.setButtonHover(Bitmap *bitmap);
Проблема в том, что он не может быть гибким, если я хочу создавать новые типы виджетов. Возможно, я в конечном итоге захочу создать супербаттон, который будет использовать тему, отличную от кнопки. Это недостаток этой концепции. Концепция, о которой я думаю, заключается в том, что каждый тип виджета имеет статические методы для установки темы для себя, и конструктор использует это.
Есть ли лучшие способы сделать это, о которых я не думаю? Поскольку это API, я хочу избегать чтения текстовых файлов, поэтому чтение темы из текстового документа не вариант.
Спасибо