Проектирование графического редактора
От: Andruh Россия  
Дата: 19.04.06 11:38
Оценка:
Привет всем!
У меня стоит задача написать что-то вроде своего графического редактора. Мысли и набросок проекта, решающий нынешние проблемы есть, но я решил обратиться к накопленному опыту коллег — чтобы не наступать на уже давно известные грабли. Всё что удалось найти — это, в основном, библиотеки поддержки графического интерфейса, лучшая из которых, как я понял — Qt, изучением которой сейчас и занимаюсь.
Хотелось бы почитать что-нибудь на тему теории проектирования графических редакторов. К книге GOF прошу не отсылать, я с ней хорошо знаком.
Посоветуйте, пожалуйста, с какими статьями/книгами или готовыми библиотеками будет полезно ознакомиться? Язык программирования значения, как понимаете, не имеет.
Re: Проектирование графического редактора
От: Кирилл Лебедев Россия http://askofen.blogspot.com/
Дата: 19.04.06 12:41
Оценка: 12 (1)
Здравствуйте, Andruh, Вы писали:

A>Посоветуйте, пожалуйста, с какими статьями/книгами или готовыми библиотеками будет полезно ознакомиться? Язык программирования значения, как понимаете, не имеет.


1) Ознакомьтесь с обсуждениями:
http://www.rsdn.ru/Forum/?mid=1691851&flat=0
Автор: Дядюшка Че
Дата: 21.02.06

http://www.rsdn.ru/Forum/?mid=1791692&flat=0
Автор: programmater
Дата: 19.03.06


2) Прочитайте статьи:
http://www.triz-ri.ru/themes/method/creative/creative50.asp
http://www.triz-ri.ru/themes/method/creative/creative57.asp
С уважением,
Кирилл Лебедев
Software Design blog — http://askofen.blogspot.ru/
Re: Проектирование графического редактора
От: 0xdead Беларусь  
Дата: 19.04.06 13:41
Оценка:
Здравствуйте, Andruh, Вы писали:

A>Привет всем!

A>У меня стоит задача написать что-то вроде своего графического редактора. Мысли и набросок проекта, решающий нынешние проблемы есть, но я решил обратиться к накопленному опыту коллег — чтобы не наступать на уже давно известные грабли. Всё что удалось найти — это, в основном, библиотеки поддержки графического интерфейса, лучшая из которых, как я понял — Qt, изучением которой сейчас и занимаюсь.
A>Хотелось бы почитать что-нибудь на тему теории проектирования графических редакторов. К книге GOF прошу не отсылать, я с ней хорошо знаком.
A>Посоветуйте, пожалуйста, с какими статьями/книгами или готовыми библиотеками будет полезно ознакомиться? Язык программирования значения, как понимаете, не имеет.

Посмотри здесь.
Re[2]: Проектирование графического редактора
От: Andruh Россия  
Дата: 19.04.06 13:55
Оценка:
Здравствуйте, Кирилл Лебедев, Вы писали:

КЛ>1) Ознакомьтесь с обсуждениями:

КЛ>http://www.rsdn.ru/Forum/?mid=1691851&flat=0
Автор: Дядюшка Че
Дата: 21.02.06

КЛ>http://www.rsdn.ru/Forum/?mid=1791692&flat=0
Автор: programmater
Дата: 19.03.06

Я раньше уже читал эти ветки. По-моему, обсуждения в них сводятся к корректному применению паттернов Bridge и Visitor в том или ином контексте. С этим я, думаю, справлюсь, спасибо. Но пробежаться по веткам ещё раз было интересно.

КЛ>2) Прочитайте статьи:

КЛ>http://www.triz-ri.ru/themes/method/creative/creative50.asp
КЛ>http://www.triz-ri.ru/themes/method/creative/creative57.asp
Ой, ходил я как-то на этот сайт. Сначала (первые абзацы) кажется интересным, но в результате получаем вывод извесных паттернов, только многословный и непоследовательный, преподнесённый в лучших традициях втюхивания. Неужели метод рационального мышления ТРИЗ не учит лаконичности, последовательности, безэмоциональности? Книга GOF — как бриллиант: маленький, а стоит гораздо больше.
Re[3]: Проектирование графического редактора
От: Кирилл Лебедев Россия http://askofen.blogspot.com/
Дата: 19.04.06 14:35
Оценка:
Здравствуйте, Andruh, Вы писали:

A>Ой, ходил я как-то на этот сайт. Сначала (первые абзацы) кажется интересным, но в результате получаем вывод извесных паттернов, только многословный и непоследовательный, преподнесённый в лучших традициях втюхивания. Неужели метод рационального мышления ТРИЗ не учит лаконичности, последовательности, безэмоциональности? Книга GOF — как бриллиант: маленький, а стоит гораздо больше.


Зная паттерны, Вы, тем не менее, испытываете трудности при проектировании. Не говорит ли Вам этот факт о том, что одних паттернов недостаточно для того, чтобы спроектировать программу? Это как в языке: знание отдельных слов не поможет Вам научиться складывать фразы.

А с какими трудностями Вы сталкиваетесь? Почему Вам трудно взять и спроектировать графический редактор "с нуля"?
С уважением,
Кирилл Лебедев
Software Design blog — http://askofen.blogspot.ru/
Re[4]: Проектирование графического редактора
От: Andruh Россия  
Дата: 19.04.06 15:09
Оценка:
Здравствуйте, Кирилл Лебедев, Вы писали:

КЛ>Зная паттерны, Вы, тем не менее, испытываете трудности при проектировании. Не говорит ли Вам этот факт о том, что одних паттернов недостаточно для того, чтобы спроектировать программу? Это как в языке: знание отдельных слов не поможет Вам научиться складывать фразы. :)


КЛ>А с какими трудностями Вы сталкиваетесь? Почему Вам трудно взять и спроектировать графический редактор "с нуля"?


Я же написал, что свои текущие проблемы я решил, но наша программа постоянно развивается, поэтому хотелось бы ознакомиться с опытом коллег, чтобы увидеть верные обобщения и спроектировать редактор сразу хорошо, чтобы потом по возможности развиваться быстро без мучительных глобальных рефакторингов. Я уверен, что существуют какие-то известные общие подходы, паттерны или их комбинации для графических редакторов (типа виджетов == глифов) и какие-то законченные знания о них и возможных проблемах, выведенные из опыта.

К примеру хотелось бы узнать о таких вещах:
1. Можно ли отказаться от абсолютного позиционирования глифов в родительском глифе (т.е. иметь стандартные контейнеры — вроде вертикальной группы глифов, горизонтальной группы глифов и ещё чего-нибудь)? Как? В каких задачах? Можно ли совмещать абсолютное и относительное позиционирование? Какие при этом могут возникать проблемы? Где посмотреть примеры?
2. Как лучше реализовать коннекторы — стрелки, которые прилипают к глифам (как в Visio)? Какие алгоритмы есть для вычисления формы ломаных коннекторов?
Re[5]: Проектирование графического редактора
От: Кирилл Лебедев Россия http://askofen.blogspot.com/
Дата: 19.04.06 16:52
Оценка:
Здравствуйте, Andruh, Вы писали:

A> Я уверен, что существуют ... какие-то законченные знания о них и возможных проблемах, выведенные из опыта.


Существуют. Некоторые проблемы перечисляются в приведенных обсуждениях.

A>2. Как лучше реализовать коннекторы — стрелки, которые прилипают к глифам (как в Visio)? Какие алгоритмы есть для вычисления формы ломаных коннекторов?


Это не задачи, а слишком неконкретные и умозрительные вопросы. При таких формулировках трудно подсказать какое-то решение, потому что не ясно, а в чем заключается трудность.

Обычно задача формулируется по такой формуле: известное или простейшее решение + проблемы, к которым оно приводит.

Например:

1) Если позиционирование дочерних глифов в родительском глифе будет абсолютной, то можно будет извлечь такую-то выгоду, но при этом будет и такой-то минус.
2) Если в качестве коннекторов будут использоваться прямые линии, то будет такой-то плюс и такой-то минус.
3) Если в качестве коннекторов будут использоваться кривые Безье, то такой-то минус исчезнет, но зато добавится другой минус.
4) И т.д.

Боюсь, что без конкретных формулировок проблем будет трудно Вам помочь. А вероятность того, что Вы отыщите качественно спроектированный графический редактор в открытом доступе, прямо скажем, невелика.
С уважением,
Кирилл Лебедев
Software Design blog — http://askofen.blogspot.ru/
Re[6]: Проектирование графического редактора
От: Andruh Россия  
Дата: 20.04.06 09:39
Оценка:
Здравствуйте, Кирилл Лебедев, Вы писали:

КЛ>Боюсь, что без конкретных формулировок проблем будет трудно Вам помочь. А вероятность того, что Вы отыщите качественно спроектированный графический редактор в открытом доступе, прямо скажем, невелика.


А я и не просил конкретной помощи. Я просил общей — почитать теорию и посмотреть качественные библиотеки. И вопросы достаточно общие я привёл только для примера.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.