Привет всем!
У меня стоит задача написать что-то вроде своего графического редактора. Мысли и набросок проекта, решающий нынешние проблемы есть, но я решил обратиться к накопленному опыту коллег — чтобы не наступать на уже давно известные грабли. Всё что удалось найти — это, в основном, библиотеки поддержки графического интерфейса, лучшая из которых, как я понял — Qt, изучением которой сейчас и занимаюсь.
Хотелось бы почитать что-нибудь на тему теории проектирования графических редакторов. К книге GOF прошу не отсылать, я с ней хорошо знаком.
Посоветуйте, пожалуйста, с какими статьями/книгами или готовыми библиотеками будет полезно ознакомиться? Язык программирования значения, как понимаете, не имеет.
Здравствуйте, Andruh, Вы писали:
A>Посоветуйте, пожалуйста, с какими статьями/книгами или готовыми библиотеками будет полезно ознакомиться? Язык программирования значения, как понимаете, не имеет.
Здравствуйте, Andruh, Вы писали:
A>Привет всем! A>У меня стоит задача написать что-то вроде своего графического редактора. Мысли и набросок проекта, решающий нынешние проблемы есть, но я решил обратиться к накопленному опыту коллег — чтобы не наступать на уже давно известные грабли. Всё что удалось найти — это, в основном, библиотеки поддержки графического интерфейса, лучшая из которых, как я понял — Qt, изучением которой сейчас и занимаюсь. A>Хотелось бы почитать что-нибудь на тему теории проектирования графических редакторов. К книге GOF прошу не отсылать, я с ней хорошо знаком. A>Посоветуйте, пожалуйста, с какими статьями/книгами или готовыми библиотеками будет полезно ознакомиться? Язык программирования значения, как понимаете, не имеет.
Я раньше уже читал эти ветки. По-моему, обсуждения в них сводятся к корректному применению паттернов Bridge и Visitor в том или ином контексте. С этим я, думаю, справлюсь, спасибо. Но пробежаться по веткам ещё раз было интересно.
КЛ>2) Прочитайте статьи: КЛ>http://www.triz-ri.ru/themes/method/creative/creative50.asp КЛ>http://www.triz-ri.ru/themes/method/creative/creative57.asp
Ой, ходил я как-то на этот сайт. Сначала (первые абзацы) кажется интересным, но в результате получаем вывод извесных паттернов, только многословный и непоследовательный, преподнесённый в лучших традициях втюхивания. Неужели метод рационального мышления ТРИЗ не учит лаконичности, последовательности, безэмоциональности? Книга GOF — как бриллиант: маленький, а стоит гораздо больше.
Здравствуйте, Andruh, Вы писали:
A>Ой, ходил я как-то на этот сайт. Сначала (первые абзацы) кажется интересным, но в результате получаем вывод извесных паттернов, только многословный и непоследовательный, преподнесённый в лучших традициях втюхивания. Неужели метод рационального мышления ТРИЗ не учит лаконичности, последовательности, безэмоциональности? Книга GOF — как бриллиант: маленький, а стоит гораздо больше.
Зная паттерны, Вы, тем не менее, испытываете трудности при проектировании. Не говорит ли Вам этот факт о том, что одних паттернов недостаточно для того, чтобы спроектировать программу? Это как в языке: знание отдельных слов не поможет Вам научиться складывать фразы.
А с какими трудностями Вы сталкиваетесь? Почему Вам трудно взять и спроектировать графический редактор "с нуля"?
Здравствуйте, Кирилл Лебедев, Вы писали:
КЛ>Зная паттерны, Вы, тем не менее, испытываете трудности при проектировании. Не говорит ли Вам этот факт о том, что одних паттернов недостаточно для того, чтобы спроектировать программу? Это как в языке: знание отдельных слов не поможет Вам научиться складывать фразы. :)
КЛ>А с какими трудностями Вы сталкиваетесь? Почему Вам трудно взять и спроектировать графический редактор "с нуля"?
Я же написал, что свои текущие проблемы я решил, но наша программа постоянно развивается, поэтому хотелось бы ознакомиться с опытом коллег, чтобы увидеть верные обобщения и спроектировать редактор сразу хорошо, чтобы потом по возможности развиваться быстро без мучительных глобальных рефакторингов. Я уверен, что существуют какие-то известные общие подходы, паттерны или их комбинации для графических редакторов (типа виджетов == глифов) и какие-то законченные знания о них и возможных проблемах, выведенные из опыта.
К примеру хотелось бы узнать о таких вещах:
1. Можно ли отказаться от абсолютного позиционирования глифов в родительском глифе (т.е. иметь стандартные контейнеры — вроде вертикальной группы глифов, горизонтальной группы глифов и ещё чего-нибудь)? Как? В каких задачах? Можно ли совмещать абсолютное и относительное позиционирование? Какие при этом могут возникать проблемы? Где посмотреть примеры?
2. Как лучше реализовать коннекторы — стрелки, которые прилипают к глифам (как в Visio)? Какие алгоритмы есть для вычисления формы ломаных коннекторов?
Здравствуйте, Andruh, Вы писали:
A> Я уверен, что существуют ... какие-то законченные знания о них и возможных проблемах, выведенные из опыта.
Существуют. Некоторые проблемы перечисляются в приведенных обсуждениях.
A>2. Как лучше реализовать коннекторы — стрелки, которые прилипают к глифам (как в Visio)? Какие алгоритмы есть для вычисления формы ломаных коннекторов?
Это не задачи, а слишком неконкретные и умозрительные вопросы. При таких формулировках трудно подсказать какое-то решение, потому что не ясно, а в чем заключается трудность.
Обычно задача формулируется по такой формуле: известное или простейшее решение + проблемы, к которым оно приводит.
Например:
1) Если позиционирование дочерних глифов в родительском глифе будет абсолютной, то можно будет извлечь такую-то выгоду, но при этом будет и такой-то минус.
2) Если в качестве коннекторов будут использоваться прямые линии, то будет такой-то плюс и такой-то минус.
3) Если в качестве коннекторов будут использоваться кривые Безье, то такой-то минус исчезнет, но зато добавится другой минус.
4) И т.д.
Боюсь, что без конкретных формулировок проблем будет трудно Вам помочь. А вероятность того, что Вы отыщите качественно спроектированный графический редактор в открытом доступе, прямо скажем, невелика.
Здравствуйте, Кирилл Лебедев, Вы писали:
КЛ>Боюсь, что без конкретных формулировок проблем будет трудно Вам помочь. А вероятность того, что Вы отыщите качественно спроектированный графический редактор в открытом доступе, прямо скажем, невелика.
А я и не просил конкретной помощи. Я просил общей — почитать теорию и посмотреть качественные библиотеки. И вопросы достаточно общие я привёл только для примера.