LINUX.ORG.RU

Графический widget с возможностью выбора элементов


0

0

Приветствую.
Необходимо создать GTK+ (язык разработки: C) Widget, вероятнее всего унаследованный от DrawingArea, который позволит отрисовывать произволные кривые с возможностью "выбора" любого саб-объекта(любая отрисованная кривая).

Проблема этапа проектировки.
Главная идея: создать такие объекты XGraph, XCurve, .., благодаря которым можно было бы:
- Создать объект XGraph
- Создать любое количество XCurve и передать во владение XGraph с последующей отрировкой. XCurve определяет минимум три функции: инициализация, финализация и отрисовка одной единицы кривой(для простоты - кривая построенная по точкам)

Один из сложных вопросов для меня - как реализовать "выбор любой кривой", для простоты - как при клике на объекте XGraph разпознать 'объект' XCurve? Предполагаемое решение - спуститься на уровень GDK или ниже, анализировать координаты клика мыши и каким-то чудесным образом искать объект, которому эта координата принадлежит.

По симу, прошу подсказать идеи как интерфейса(уровень кода, не GUI отображение), так и идеи реализации. Более чем уверен что подобные разработки велись. Возможно GPL/LGPL библиотеки, код которых можно проанализировать.


ты за*бешся реализовывать отрисовку всего этого дела, что бы это еще не тормозило...

Может каждый объект сделать наследником от GtkWidget? и доверить всю мороку Gtk?

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

> В банде четырёх ...
Прошу прщения, что такое "банда четырёх"?

> ты за*бешся реализовывать отрисовку всего этого дела

Несомневаюсь в этом, но у меня достаточно времени и желания.

> Может каждый объект сделать наследником от GtkWidget?

Чем это может мне помочь? Быть может у cairo есть какой-либо механизм "слоев", который поможет мне в выборе.. буду читать

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

Попробуй осмотреть какой-то из существующих виджетов, построенных на
DrawingArea и позволяющих работать с графикой более структурно, на
более высоком уровне.
http://live.gnome.org/ProjectRidley/CanvasOverview, например.

> Прошу прщения, что такое "банда четырёх"?


Книжка «Design Patterns», там вначале рассказывают
о приложении некоторых приёмов к проектированию редактора.

Sphinx ★★☆☆
()

Может посмотреть на QGraphicsView (Да, Qt)

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

>Может каждый объект сделать наследником от GtkWidget? и доверить всю мороку Gtk?

Я не думаю, что такой подход будет быстрее

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