На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Страницы: (16) 1 [2] 3 4 ...  15 16 все  ( Перейти к последнему сообщению )  
> эмуляция BGI графики
    Если ddraw - то отлига! Он позволяет всё!
    И пасквилянтов не забудьте! А то можно и засмесить - а-ля буилдер и сделать bgi32.dll. Главное - чтоб ellipse был! :)
      Нет, не DirectDraw. Win32API. И вывод осуществляется средствами GDI.

      Один вопрос: сколько цветов надо? 16 или 256? Просто надо не отойти от синтаксиса прототипа, а там вроде 16 цветов определено. :unsure:
        Цитата Der Meister @
        Win32API

        А чем не устраивает DirectDraw + GDI Plus ? ;)

        Цитата Der Meister @
        Один вопрос: сколько цветов надо? 16 или 256? Просто надо не отойти от синтаксиса прототипа, а там вроде 16 цветов определено

        Скока запросит ;)
          Der Meister, а можешь кинуть сюда список поддерживаемых и нет функций ?
          ToDo?
            Цитата Neko @
            А чем не устраивает DirectDraw + GDI Plus ?

            Слишком уж наворочено. Я не ставлю цели сделать вывод графики супербыстрым. Тут уж мелькала мысль, чтоб сделать вывод в окне. Может так и будет...
            Romtek
            ExpandedWrap disabled
              #define closegraph DGML::closegraph
              #define line DGML::line
              #define linerel DGML::linerel
              #define lineto DGML::lineto
              #define cleardevice DGML::cleardevice
              #define getmaxx DGML::getmaxx
              #define getmaxy DGML::getmaxy
              #define setcolor DGML::setcolor
              #define getcolor DGML::getcolor
              #define putpixel DGML::putpixel
              #define outtextxy DGML::outtextxy

            Надо просто решить некоторые вопросы. А остальные функции (bar, ellipse, etc...) написать - как два пальца об асфальт. Работы много, но все это легко. Позже сообщу о результатах.

            TODO:
            Write all other functions from Borland's graphics.h. :)
              Цитата Der Meister @
              Romtek

              #define closegraph DGML::closegraph
              #define line DGML::line
              #define linerel DGML::linerel
              #define lineto DGML::lineto
              #define cleardevice DGML::cleardevice
              #define getmaxx DGML::getmaxx
              #define getmaxy DGML::getmaxy
              #define setcolor DGML::setcolor
              #define getcolor DGML::getcolor
              #define putpixel DGML::putpixel
              #define outtextxy DGML::outtextxy


              Надо просто решить некоторые вопросы. А остальные функции (bar, ellipse, etc...) написать - как два пальца об асфальт. Работы много, но все это легко. Позже сообщу о результатах.
              Это, по большей части, я попросил за других пользователей. В файл DGML_init.h я и сам догадался посмотреть. 8-)

              А что насчёт исходников либы?
              У меня нет Студии и я не могу прилинковать .lib в GCC.
                Цитата Romtek @
                А что насчёт исходников либы?


                Держи:
                Прикреплённый файлПрикреплённый файлDGML_src_0_0_75.rar (5.82 Кбайт, скачиваний: 360)
                  Уф. После нескльких попыток скомпилировать получилось (на знал как подключать gdi32 к линкеру).
                  Надо было добавить -lgdi32 .
                  Теперь надо узнать как создавать библиотеку в GCC.

                  Добавлено
                  Der Meister, а какие файлы находятся в либе?
                  Я скомпоновал DGML.o,DGML_Error.o,graphics.o,input.o,system.o в DGML.a.
                    Цитата Romtek @
                    Я скомпоновал DGML.o,DGML_Error.o,graphics.o,input.o,system.o в DGML.a.

                    Все правильно.

                    Я сейчас занимаюсь реализацией остальных функций, некоторые пока закрыл заглушками.
                      Один вопрос: можно ли как-нибудь выдрать help из bc? Или справочник по bgi? А то пришлось ему приоритет на "низкий" установить - сколько ресурсов дашь, столько и съест.

                      А сейчас я разбираюсь с параметрами вот так: :'(
                      Прикреплённый файлПрикреплённый файлbc.jpg (69.45 Кбайт, скачиваний: 893)
                        Цитата Der Meister @
                        #define

                        Лучше так:

                        ExpandedWrap disabled
                          using DGML::closegraph;


                        В аттаче: краткая справка по BGI на русском ;)
                        Прикреплённый файлПрикреплённый файлbgi.zip (17.67 Кбайт, скачиваний: 437)
                          Цитата Neko @
                          using DGML::closegraph;

                          Учтем.
                          Цитата Neko @
                          В аттаче: краткая справка по BGI на русском

                          Спасибо!
                            Цитата Neko @
                            using DGML::closegraph;

                            :no: Не работает так.

                            Как тогда сделать. Может вместо класса сделать namespace и туда засунуть все интерфейсные функции, а служебные ф-ции оставить в классе... Так и сделаю. :)
                              Слава Аллаху! Я это сделал.

                              Теперь получилась максимально прозрачная интерфейсная часть и максимально уродливая реализация системы. :(

                              Пространство имен DGML будет полностью по сигнатуре идентично содержимому graphics.h. Вот текущая версия:
                              ExpandedWrap disabled
                                namespace DGML
                                {
                                    // инициализирует графическую систему
                                     void initgraph(int *graphdriver, int *graphmode, const char *pathtodriver);
                                    // ждет, пока не будет нажата клавиша и возвращает ее код
                                     int getch(void);
                                    // чертит линию между заданными точками
                                     void line(int x1, int y1, int x2, int y2);
                                    // закрывает графическую систему
                                     void closegraph(void);
                                    // чертит линию относительно текущей позиции (ТП)
                                     void linerel(int dx, int dy);
                                    // чертит линию от текущей позиции (ТП) до (x,y)
                                     void lineto(int x, int y);
                                    // очищает графический экран
                                     void cleardevice(void);
                                 
                                    // возвращает максимальную x координату
                                     int getmaxx(void);
                                    // возвращает максимальную y координату
                                     int getmaxy(void);
                                 
                                    // устанавливает цвет пера
                                     void setcolor(int color);
                                    // возвращает текущий цвет пера
                                     int getcolor(void);
                                    // выводит пиксел в заданной точке
                                     void putpixel(int x, int y, int color);
                                    // выводит текст в заданной позиции
                                     void outtextxy(int x, int y, char* textstring);
                                     void arc(int x, int y, int stangle, int endangle, int radius);
                                     // Выводит окружность с центром в точке (x,y) и радиусом radius.
                                    void circle(int x, int y, int radius);
                                    // Выводит сектор круга от stangle до endangle с центром в точке (x,y) , радиусом radius.
                                    void pieslice(int x, int y, int stangle, int endangle, int radius);
                                    // Выводит закрашенный прямоугольник без контура.
                                    void bar(int left, int top, int right, int bottom);
                                    // Выводит прямоугольный параллелепипед.
                                    void bar3d(int left, int top, int right, int bottom, int topflag);
                                    // Выводит многоугольник из numpoints точек, переданных массивом polypoints.
                                    void drawpoly(int numpoints, int* polypoints);
                                    // Выводит закрашенный многоугольник, состоящий из numpoints точек, переданных в массиве polypoints.
                                    void fillpoly(int numpoints, int* polypoints);
                                    // Выводит эллиптическую дугу с центром в (x,y), радиусами xradius и yradius и сектором (stangle;endangle)
                                    void ellipse(int x, int y, int stangle, int endangle, int xradius, int yradius);
                                    // Выводит закрашенный эллипс с центром в (x,y) и радиусами xradius и yradius.
                                    void fillellipse(int x, int y, int xradius, int yradius);
                                    // Выводит закрашенный эллиптический сектор с центром в (x,y), радиусами xradius и yradius и сектором (stangle;endangle)
                                    void sector(int x, int y, int stangle, int endangle, int xradius, int yradius);
                                 
                                }



                              Проект перешел из разряда идей. Но не в "тестирование программ" же его засовывать?!
                                Цитата Der Meister @
                                Проект перешел из разряда идей. Но не в "тестирование программ" же его засовывать?!
                                Самое время в "Коллективных Проектах" страничку создавать. ;)

                                Добавлено
                                Я уже предлагал, по-моему самое то.
                                Можешь написать описание программы, привести пару примеров программ, добавить список поддерживаемых функций, скриншоты и т.д.
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (16) 1 [2] 3 4 ...  15 16 все


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0610 ]   [ 15 queries used ]   [ Generated: 27.04.24, 10:57 GMT ]