JavaScript

индекс
246,38

Esboza — векторный редактор online & фреймворк (Часть первая)

Наигравшись с предыдущей поделкой http://babarun.ru/content/canvas/, {шиза+навязчивая идея} не дали мне остановиться на достигнутом.

image

Сразу смотрим демо http://esboza.ru/demo/, все пояснения потом.



Рисовать на канвасе, используя стандартные функции, наверно не очень интересно. Нужно какое-то промежуточное звено, для перехода на следующий уровень абстракции, что бы рисовать оперируя не примитивами, а объектами, на которые можно навешивать события, анимацию, управлять их свойствами и так далее… Сначала я хотел написать векторный редактор для коллективной работы, но в процессе работы, идея фреймворка для канваса захватила меня и до сих пор будоражит моё сознание.

Немножко кода из демки:

function draw(){
 
            var canvas = document.getElementById('canvas_dom'); //canvas в котором будет происходить процесс рендеринга
 
            if (canvas.getContext)
            {
 
                        var all_objects = new esboza( canvas ); //создаём контейнер 
                        var Bezier_real = new Bezier;        //создаём - кривую Безье
 
                        //Добавляем точки
                        Bezier_real.add_point(348,342);
                        Bezier_real.add_point(328.5,331);
                        Bezier_real.add_point(307.5,323);
                        Bezier_real.add_point(294,308);
                        Bezier_real.add_point(280.5,293);
                        Bezier_real.add_point(243,243.5);
                        Bezier_real.add_point(293,175.5);
                        /* и так далее... */
 
 
                        //устанавливаем свойства
                        Bezier_real.set_fillStyle('RGB(191,213,221)');
                        Bezier_real.set_fill();
 
                        //добавляем кривую безье в контейнер и начинаем процесс рендеринга
                        all_objects.add(Bezier_real).render();
            }
}

и вешаем вызов этой функции на onload:
<body onload="draw" >


Не думал, что вымолвлю когда нибудь эту фразу — «быстрее всего работает в Интернет Эксплорере» — но выхода нет..., придётся..., это так! На протяжении многих лет был уверен что слова «быстрее», «работает» и «Интернет Эксплорер» не могут стоять в одном предложении и уж тем более рядом, наверно в королевстве что-то изменилось.

На этом пока всё, это только начало, во второй части покажу, как можно анимировать объекты и как устроена модель событий.

P.S.1. В открытом доступе фрейворк будет доступен, сразу после небольшого закрытого тестирования и подготовки документации.
P.S.2. О баге при отрицательном масштабировании в курсе.
P.S.3. На http://esboza.ru не обращайте внимание, там пока стоит заглушка. Она мутирует в крутой сайт, как только дизайнер освободится от своих забот и забацает зашибенный дизайн.
+58
29 июля 2010, 21:59
47

комментарии (28)

0
spanasik #
А что насчёт векторного редактора?
+6
babarun #
пока на паузе… но как только отращу судьмую руку и третий глаз и им займусь!
+1
sanch3z #
Демка клевая
0
xpostman #
excanvas?
0
babarun #
ie9 platform preview (1.9.7874.6000)
+1
xpostman #
о. не прошло и десяти лет. я полагал, они на canvas так и не обратят внимания.
0
Hotblack #
Надо отучаться читать быстро… странное название для векторного редактора :)
+2
babarun #
0
Hotblack #
Спасибо, буду знать!
Испанский всегда нравился оригинальностью… английский как-то приелся :(
0
babarun #
следуя английской традиции называть корабли женскими именами, пменял последнюю буковку
+2
lany #
Интересно, что ресайз ширины окна браузера не приводит к ресайзу канваса, хотя в коде вроде 100%. Приходится страничку перезагружать.

Вообще такая задача прямо-таки вопиет «делайте меня на SVG» =)
0
arkady #
Чето кроме кнопки «Попробовать» — ни один линк у меня не работает. Думал просто бета, но ссылка на ЖЖ по идее от уровня готовности не зависит :) Так задумано или я что-то не так делаю? Та же история с линками на вашем личном сайте: ни одна не нажимается.

Браузер — ФФ 3.6.4
0
babarun #
ну ведь заранее же написал — P.S.3. На esboza.ru не обращайте внимание, там пока стоит заглушка. Она мутирует в крутой сайт, как только дизайнер освободится от своих забот и забацает зашибенный дизайн.
0
cmd #
Клевая штука!
0
404 #
Очень нужна возможность создания не только гладких, но и острых опорных точек.
0
babarun #
она есть, если поискать в демке, то можно найти опорные точки и «гладкие», и «острые», просто там «гладкие» доминируют
–2
hazg #
Странно, выглядит замечательно, но не вставляет. Вот как вставлял layer-div перемещающийся под мышкой под ie и ns не вставляет. (особо вставлял сайт билайна, кто помнит)

Кстати, при наличии инструментария и 3-4 художников получится офигенный wiget редактор для персонажей во всяких step-by-step играх. Там не хватает толики spore на свой лад. (про монетизацию конечна )))).
+1
Agent_Smith #
Online Photoshop есть, даешь Online Illustrator!!!
+4
fatal #
А не логичнее ли делать кекторный редактор на SVG?
+1
Kigorw #
Здорово. Я тоже создавал почти векторный редактор, только я каждый обьект (прямоугольник, эллипс, линия, полигон) делал отдельным канвасом (незнаю насколько это оправданно).
А так впечатляет — довольно-таки времязатратная задача.
0
Alexsas #
мне очень нравиться как вы организовали работу с Безье, но сразу все узлы показывать не надо.
Хватит только выделенного.
0
smashercosmo #
Клёвая штука. А есть возможность сохранения оригинального кода рисунка?
0
santa #
Баг #1:
При увеличении масштаба страницы рисунок обрезается по краям. Видно на скриншоте


Баг #2:
При тех же условиях «напрочь» загружено ядро процессора.

p.s. работаю в QA. Не выдержал, извините. :)
+1
antirek #
круто, но только может проще было сделать на базе svg? На основе jquery.svg.js или svgweb?
0
habraname #
полный отвал башки о_О

зы: в ие8 ничего не показывает, ни в каком из режимов
+1
TheShock #
Если захватить один конец отрезка и развернуть его так, чтобы другой конец стал на место первого, то неправильно срабатывает mouseover:

жду исходников)
0
babarun #
Спасибо, такого раньше не замечал, поправлю!
+1
TheShock #
! На протяжении многих лет был уверен что слова «быстрее», «работает» и «Интернет Эксплорер» не могут стоять в одном предложении и уж тем более рядом, наверно в королевстве что-то изменилось.

Там апаратное ускорение, так что чит. Скоро подтянутся остальные браузеры с аппаратным ускорением, и там можно будет сравнивать. Только непонятно, чему там быть быстрее, если все и так быстро пахает

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.