«Паскалевская графика на HTML5» или «Что Opera сделала с Rainbow Dash»

    Увидел на тематическом сайте, посвящённом сериалу My Little Pony код на Turbo Pascal, использующий старинный модуль Graph и рисующий нескольких персонажей.

    Код содержал только вызовы функций и комментарии, javascript отлично его парсил. Осталось только дописать свои графические функции.

    Финальная версия

    var colors = ["#000000", "#0000AA", "#00AA00", "#00AAAA", "#AA0000", "#AA00AA", "#AA5500", "#AAAAAA", 
    "#555555", "#5555FF", "#55FF55", "#55FFFF", "#FF5555", "#FF55FF", "#FFFF55", "#FFFFFF"];
    function setcolor(colorIndex)
    {
    	ctx.strokeStyle = colors[colorIndex];
    }
    function line(x1, y1, x2, y2)
    {
    	ctx.beginPath();
    	ctx.moveTo(x1, y1);
    	ctx.lineTo(x2, y2);
    	ctx.stroke();
    	ctx.closePath();
    }
    function setlinestyle(p, t, width)
    {
    	ctx.lineWidth = width;
    }
    
    function setfillstyle(t, colorIndex)
    {
    	ctx.fillStyle = colors[colorIndex];
    }
    
    function ellipse(x, y, st, end, xrad, yrad)
    {
    	ctx.save();
    	ctx.translate(x, y);
    	ctx.scale(xrad, -yrad);
    	ctx.beginPath();
    	ctx.arc(0, 0, 1, st * Math.PI / 180.0, end * Math.PI / 180.0, false);	
    	ctx.restore();
    	ctx.stroke();
    }
    
    function fillellipse(x, y, xrad, yrad)
    {
    	ctx.save();
    	ctx.translate(x, y);
    	ctx.scale(xrad, yrad);
    	ctx.beginPath();
    	ctx.arc(0, 0, 1, 0, Math.PI * 2, true);
    	ctx.fill();
    	ctx.closePath();
    	ctx.restore();
    }
    


    Вот что вышло
    На мою реализацию функции ellipse() плохо среагировала Opera:


    Баг зарепортили.

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



    В данный момент думаю, как ещё всё это можно ускорить. Идеи?
    Поделиться публикацией
    Реклама помогает поддерживать и развивать наши сервисы

    Подробнее
    Реклама
    Комментарии 114
    • 0
      Я конечно всё понимаю, мисье там…
      • +27
        Пони!
        • +40
          К сожалению, идей нет, но…

          Не удержался:
          image
          :)
        • +17


          И да, цвета не по канону. Принцесса Селестия не одобряет.
          • +4
            Так перепиши, исправим код! :)
            Но вообще да, рисунок не мой.
            • +4
              Думаю, достаточно взять пипетку в графическом редакторе. :)
              Во, нашел: docs.google.com/viewer?url=http://fc07.deviantart.net/fs70/f/2011/258/e/6/rainbow_dash_color_guide_by_kefkafloyd-d3aseal.pdf&chrome=true&pli=1
              • +3
                Эх, хабрапарсер. goo.gl/GIPVN
                • +3
                  Нет, в паскале надо :)

                  Я конечно могу потом сделать продвинутый онлайн-редактор с эффектами, сохраняющий вектор в js-код…
                  • +3
                    Мммм, я так понимаю нужно изменить
                    var colors = ["#000000", "#0000AA", "#00AA00", "#00AAAA", "#AA0000", "#AA00AA", "#AA5500", "#AAAAAA", "#555555", "#5555FF", "#55FF55", "#55FFFF", "#FF5555", "#FF55FF", "#FFFF55", "#FFFFFF"]; в соответствии с картой.
                    • +3
                      Сейчас там несколько другой код.
                      Прямо в окошке с кодом пишешь:

                      rgb[4][0] = 0x1 //R
                      rgb[4][1] = 0xA //G
                      rgb[4][2] = 0xBB //B
                      

                      так меняется 4-ый цвет.
            • +8
              Перепись пониебов ITT ^_^
              • +18
                Лол, заминосовали первого же пониеба :D Я как раз вчера первый сезон закончил. И жену втянул. ^_^
              • НЛО прилетело и опубликовало эту надпись здесь
                • +6
                  Это должно быть на 20% круче :)
                • +37
                  UFO IS ASLEEP, POST PONIES!
                  • +6
                    Как будто на двач зашёл, на доску /mlp/
                    • +1
                      Осторожнее, здесь минусуют за слово «двач»
                      • НЛО прилетело и опубликовало эту надпись здесь
                        • +1
                          Кто он?
                          • +5
                            Двач, очевидно же. Некоторое время после смерти его функции выполнял тиреч, теперь — сомалич
                            • +14
                              Называйте сосач сосачем, чего уж там.
                          • +2
                            Извините, не удержался, тем более, раз уж пошла такая пьянка…
                            image
                    • +17
                      «На мою реализацию функции ellipse() плохо среагировала Opera:»

                      а как по мне, так очень даже! =))
                      • +11
                        «На мою реализацию функции ellipse() плохо среагировала Opera»

                        I just don't know what went wrong!
                        • +1
                          В 12й опере вроде как всё путём.
                        • +37
                          Понитред на хабре. Тематический. Заплюсованный. В лучшем.
                          Все, я счастлив.
                        • +10
                          Ахаха, интервенция пони на хабре началась! xD
                          • 0
                            А разве интервенция это не когда кого-то за что-то осуждают?
                            • +13
                              Я может быть сейчас чрезвычайно банален, но интервенция.
                              • +1
                                Заинтригован, с чем же Вы перепутали… Может, с инвективой? Или с инсинуацией? Или с репробацией? Или с проскрипциями?
                                • +3
                                  Сразу видно, что Тед Мосби для вас пустой звук!
                                    • +1
                                      Я чувствовал что это не про страны, но про людей у нас интервенции в википедии нет.
                              • +11
                                Вот интересно, сколько народу зашло посмотреть на «паскалевскую графику на html5» и сколько вникало в код :)
                                • +7
                                  А там, между прочим, интересно, комментарии на транслите в стиле {perednie nogi} ^_^
                                  • +4
                                    Я смотрел) Ничего особого, но забавно)
                                    • +7
                                      Блин, пристыдили, тоже посмотрю…
                                      • +7
                                        Ну я в смысле в код смотрел)
                                        • +6
                                          Ну так и я в том же смысле!
                                          • +8

                                            Зрите в код, товарищи!
                                            • +1
                                              Мне кажется, или в треде действительно замечена Молестия? :))
                                    • +3
                                      Графика? Код? Комментарии!
                                    • +13
                                      >Что Opera сделала с Rainbow Dash
                                      >Rainbow Dash
                                      Не поверил своим глазам. Перечитывал раза три, всё равно не верил. Пока не посмотрел что под катом.
                                      • +9
                                        image
                                        • +10
                                          И тебе +1 в карму. Всем +1 в карму! Объявляю этот топик топиком добра и дружбомагии :)
                                          • +10
                                            Да че тут обьявлять, он естественным образом таковым стал :)
                                            • +5
                                              Добра тебе.
                                              • +1
                                                А когда я такое как-то раз сказал, меня заминусовали)

                                                Алсо… Уay, второй человек на хабре с RD на аватарке!

                                                Всем добра, посоны.
                                                • +1
                                                  На хабре нельзя говорить это слово.
                                                  • +2
                                                    Да я в курсе. Но, так как этот тред можно считать анклавом дружбомагии, то все окей.
                                              • +5
                                                Всем лучиков добра!
                                              • +18
                                                image
                                                • +7
                                                  Я сегодня провинился в топике про нокию, поплюсую тут народ чтоли.
                                                  • +5
                                                    Ага, добро побеждает зло! ^_^
                                                  • +9
                                                    пони на хабре, отлично, просто отлично
                                                    • +8
                                                      Классно! =)

                                                      А остальные персонажи будут?

                                                      image
                                                      • +3
                                                        Надеюсь, автор кода наделает ещё картинок. А я уж приведу цвета к каноничным и поработаю над эффектами :)
                                                      • +6
                                                        >На мою реализацию функции ellipse() плохо среагировала Opera
                                                        Она почему-то все дуги в другую сторону выворачивает… Хотя в этом топике, видимо, всем на реализацию пофиг… ну и ладно :)
                                                        • +3
                                                          Как раз в этой функции ellipse() Опера плохо реагирует на вот эту строку:
                                                          ctx.scale(xrad, -yrad);
                                                          А точнее на минус у yrad. Если его убрать, то картинка будет неправильной, но зато во всех браузерах одинаковая. Опера этот «минус» отрабатывает как-то зеркально…
                                                          • +1
                                                            А потом удивляются, почему современные разработчики не любят оперу)
                                                            • +2
                                                              Да ошибки есть у всех, главное, чтобы их вовремя устраняли… А тут ещё и эта функция ellipse() мутная какая-то. Возможно нужно уйти от translate() & scale() и использовать просто arc() с абсолютными координатами… конечно, если это возможно.
                                                              • +1
                                                                Сейчас там вообще линиями рисуется
                                                        • +6
                                                          прочитала заголовок. не поверила. зашла под кат. пришлось поверить)
                                                          с нетерпением жду остальных пони))
                                                          • +5

                                                            Я всё проспал, ничего умного в голову нейдёт, но не засветиться в понитреде на хабре было бы большой ошибкой.
                                                            Запишите-ка и меня в перепись :)
                                                            • +8
                                                              Мм, чесслово, первый раз услышал, что такое mlp.

                                                              Интересненько! Похоже, я знаю, что я теперь буду смотреть))
                                                              • +7
                                                                На всякий случай подскажу: лучше смотреть без дубляжа.
                                                                • +5
                                                                  Как и все стоящие вещи.
                                                                • +5
                                                                  А потом:
                                                                  — Познакомлюсь с девочкой для совместного похода в макдональдс. Пони мне.
                                                                  • +4
                                                                    Та ладно, я сам с покерфейсом их покупал, и без всякой псевдо-еды :)
                                                                    Пришел, сказал «мне пони. Всех. Без хеппи-милла», забрал, ушел с улыбкой шире плеч :)
                                                                    • НЛО прилетело и опубликовало эту надпись здесь
                                                                      • +3
                                                                        Ну мне как бы 34 уже (зимой, когда совершал набег на макдачные, было еще 33). Это суровее. А я еще и бритоголовый-усатый-бородатый к тому же :)

                                                                        И кстати да, что-то не так — нечего маленьким девочкам возиться с богомерзкими покемонами! :)
                                                                        • НЛО прилетело и опубликовало эту надпись здесь
                                                                        • +4
                                                                          пффф 17-летний.
                                                                          Вот когда 40-летний со счастливым видом возиться с пони, тут уже есть над чем задуматься
                                                                        • +1
                                                                          Я что-то стормозил. А где это ещё можно успеть забрать всю серию? О_о
                                                                          • +1
                                                                            Уже нигде :(
                                                                            • +2
                                                                              Надеюсь увеличение продаж хеппимилов подстегнут руководство к повторении акции.
                                                                          • +2
                                                                            я тоже
                                                                      • +2
                                                                        Пользуясь случаем хочу прояснить непонятку у пони-специалистов.
                                                                        Это из этого мультика популярная на блогах фраза про то, что пони кушают радугу и какают бабочками? Просто судя по первой картинке все наоборот :)
                                                                        • НЛО прилетело и опубликовало эту надпись здесь
                                                                          • +1
                                                                            Спасибо. Вижу что не из этой оперы ария. Просто первая картинка вызывает ассоциации, а общения с племянницей у меня ограничилось паровозиками и ретро «Мишками Гамми».
                                                                            • +2
                                                                              Пинкамена кушает кексики.
                                                                            • +6
                                                                              Эта фраза маленького жёлтого существа из мультфильма «Хортон»)
                                                                              • +1
                                                                                «Пони кушают радугу и какают бабочками» из мультика Хортон
                                                                                Вот как раз тот отрывок, с которого долго народ сходил с ума :)
                                                                                www.youtube.com/watch?v=xJkaKAIl_Fc
                                                                                • +5
                                                                                  Там пони — это все-таки пони. Едят они сено в кафешках. Хотя Пинки Пай уплетает за обе щеки сладости. Да и пунш все пьют. И только дракончик Спайк ведет себя как дракон — ест самоцветы :)
                                                                                  Конкретно Rainbow Dash — пегас. Она может оставлять за собой радугу. Спойлер: дважды делала Радужный удар!
                                                                                  Экспресс-курс можно пройти здесь: www.youtube.com/watch?feature=player_embedded&v=qVCFV7jT9ho
                                                                              • +8
                                                                                image
                                                                                • +3
                                                                                  Хороший топик, и паскаль, и программинг и пони :)
                                                                                  • +7
                                                                                    Уговорили, пойду качать
                                                                                  • +6
                                                                                    Этот топик подобен зубной щетке:
                                                                                    image
                                                                                    • +4
                                                                                      Благодаря этому топику узнал, откуда взялось слово «няша».

                                                                                      Забавно :)
                                                                                      • +3
                                                                                        Забавно, но слово «няша» я знал задолго до того, как пони (нынешнего 4-го поколения) появились на свет.
                                                                                        Всё-таки, мне кажется, что оно из анимешной тусовки пришло как производное от слова «НЯ».
                                                                                      • +4
                                                                                        Bronies! Всем — Frendship!
                                                                                      • +2
                                                                                        Опера такая жестокая.

                                                                                        image
                                                                                        • +4
                                                                                          www.youtube.com/watch?v=ntIFhbtmwCc

                                                                                          www.youtube.com/watch?v=qVCFV7jT9ho

                                                                                          Извините, не мог удержаться.
                                                                                          • +1
                                                                                            image
                                                                                            Что только не придумают…
                                                                                            • +4
                                                                                              Добрые пони! Такие добрые…
                                                                                              • +2
                                                                                                В альфа версии Opera 12 все отлично, а следовательно бага не актуальна
                                                                                                image
                                                                                              • +3
                                                                                                После просмотра картинки выше воспринимаются иначе :)
                                                                                                • +2
                                                                                                  После просмотра всё воспринимается иначе)

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