На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> эмуляция BGI графики
    В то время, когда космические корабли бороздят просторы вселенной и все крутые поцики перешли на Microsoft Visual Studio, в университетах, тем временем, требуют решения на Borland C 3. Графика там выводится с помощью bgi-драйверов (пресловутых egavga.bgi). Соответственно, когда человек обращается на форум за помощью, не у каждого найдется досовский компилятор, чтобы посмотреть, а что там выводится.

    Следовательно я решил написать библиотечку, которая подключается одним #includ'ом и вместо команд, направленных BGI, будет выводить графику средствами Windows GDI.

    Собственно, инициализация и вывод реализованы. Но там очень много рутины по написанию мелких функций (f.e. lineto, rectangle etc.). Основная концепция - чтоб скомпилировать исходник для доса в современном компиляторе, достаточно добавить лишь одну строчку. Можно написать исходник в любимой VS2005, стереть эту строчку и отдать преподу... :rolleyes:

    Собственно, к чему этот сабж: Я хотел спросить, а нужна ли кому-нибудь эта библиотека? Не хотелось кому-нибудь иметь под рукой нечто подобное? Не хочу я зря кодить... Нужен конечный потребитель. :)
      Цитата Der Meister @
      Соответственно, когда человек обращается на форум за помощью, не у каждого найдется досовский компилятор, чтобы посмотреть, а что там выводится.

      у меня где-то завалялся ВС++3.1, если нада :)
        Черный_Ворон
        У меня он есть. Только кому охота, чтоб скомпилировать какой-нибудь бред запускать это убожество? Он так грузит проц, что аж плеер заикаться начинает...

        Вся фишка-то в том, чтоб писать курсовые в нормальной IDE!
          Цитата Der Meister @
          Вся фишка-то в том, чтоб писать курсовые в нормальной IDE

          А я и писал в нормальной IDE 8-) Потом только собирал EXE'шник в Борланде. Правда, графику я не пользовал, без надобности было.
          Цитата Der Meister @
          Только кому охота, чтоб скомпилировать какой-нибудь бред запускать это убожество?

          Ну не надо так... Старость надо уважать.
          Насчёт сабжа, я думаю, что спросу будет мало.
            Цитата Nich @
            Правда, графику я не пользовал

            В том то и дело, что без графики хоть в чем компилиться будет.
            Цитата Nich @
            Старость надо уважать.

            Я уважаю. Только этот компилер не отвечает официальным стандартам языка С++.

            Цитата Nich @
            Насчёт сабжа, я думаю, что спросу будет мало.

            Ладно. Подождем еще.

            На всякий случай кидаю и примерчик:
            ExpandedWrap disabled
              #include "DGML_init.h"//подцепляем нашу либу :wub: ...
               
              //а ниже код не меняется ;)
               
              void main()
              {
               int dr=0,m;
               initgraph(&dr,&m,"");
               
               for (int i=0;i<1000;i++)
               {
                  setcolor(rand()%16);
                  line(rand()%640,rand()%480,rand()%640,rand()%480);
               }
               
               DGML::getch();
               cleardevice();
               
               closegraph();
              }
              Кстати, инклуд можно обозвать "graphics.h", и тогда вообще ничего менять не придется, все равно в MSVC такого файла нет ;).
              ExpandedWrap disabled
                #include <graphics.h>


              Выкладываю проект вместе с библиотекой. У кого мой не запустится - достаточно создать чистый проект Win32 Console Application и добавить туда test.cpp.
              Прикреплённый файлПрикреплённый файлDGML_Test.rar (61.09 Кбайт, скачиваний: 1071)
                Цитата Der Meister @
                Только этот компилер не отвечает официальным стандартам языка С++.

                Когда его сделали не было ещё никакого стандарта... :)

                P.S. Скачал, посмотрел, прикольно. Что-то в этом есть... однозначно. :)
                Сообщение отредактировано: Nich -
                  Цитата Nich @
                  Когда его сделали не было ещё никакого стандарта...

                  Но теперь-то он уже устарел. Зато в учебных заведениях почему-то этого не понимают... И Microsoft же бесплатные компиляторы ВУЗам раздает...
                    Der Meister, интересное начинание ;)

                    Здесь можешь посмотреть, что вытворял я с BGI машиной: Окна под DOS'ом: стоит или нет? ;)
                    А писать лучше под SVGA - у меня учебничек соотв. есть ;)
                      Писал SVGA-графику под DOS. Посмотрите, может какие функции понравятся :)
                      Сообщение отредактировано: The-Boss -

                      Прикреплённый файлПрикреплённый файлgraph.rar (3.27 Кбайт, скачиваний: 685)
                        Neko
                        The-Boss
                        Спасибо, посмотрю. Только писать это буду на высоком уровне: инициализируется режим 640х480х8, берется его hDC, а дальше шаманства. Прямой доступ к видеопамяти - не то... ;)

                        Добавлено
                        The-Boss
                        У тебя можно урвать геометрию. :) Вывод текста меня просто убил.
                        Neko
                        Кстати, библиотеку напишу (теперь уж стопудово решился) - попробую твои окна скомпилировать, авось получится! :lol: А там у тебя всего 16 цветов использовалось?
                          Цитата Der Meister @
                          инициализируется режим 640х480х8, берется его hDC

                          DirectDraw? Может тогда типа игрового интерфейса сделать ;)
                            Цитата Der Meister @
                            Только писать это буду на высоком уровне: инициализируется режим 640х480х8, берется его hDC,

                            А зачем инициализировать какие-то режимы?! Удобнее просто по initgraph создавать новое окно - и рисовать на нем в truecolor.
                            Режим - не более чем способ преобразования цветов и координат.
                              Правильной дорогой идете, товарисчи... Недавно на заказ на ассемблере меню писал... Такие долбанутые преподы тоже есть еще...
                                Вот еще несколько функций + еще более ужасающий вывод текста (специально для Der Meister :lol: )
                                Прикреплённый файлПрикреплённый файлgraphic_func.rar (1.98 Кбайт, скачиваний: 540)
                                  Если 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 @
                                                              Проект перешел из разряда идей. Но не в "тестирование программ" же его засовывать?!
                                                              Самое время в "Коллективных Проектах" страничку создавать. ;)

                                                              Добавлено
                                                              Я уже предлагал, по-моему самое то.
                                                              Можешь написать описание программы, привести пару примеров программ, добавить список поддерживаемых функций, скриншоты и т.д.
                                                                Цитата Der Meister @
                                                                Но не в "тестирование программ" же его засовывать?!

                                                                Точно не ко мне...
                                                                  Romtek
                                                                  Хорошо. На днях создам страничку. Можешь записывать в девелоперы. ;) Я уж зарегился как "Der Meister".
                                                                    А проект свой (Вики-страничку) развивать надо! Само под камень лежачий не потечёт!
                                                                      Romtek
                                                                      Это понятно. Приложу все усилия. ;)
                                                                        Библиотека продолжает обрастать подробностями. Пока не могу написать документацию и выложить список поддерживаемых функций - слишком много TODO и HACK'ов.

                                                                        По сравнению с предыдущей версией добавлены следующие функции:
                                                                        ExpandedWrap disabled
                                                                              // Возвращает код ошибки для последней неудачной графической операции
                                                                              int graphresult(void);
                                                                              // Возвращает указатель на строку с сообщением об ошибке
                                                                              char *grapherrormsg(int errorcode);
                                                                              // Возвращает максимальное значение цвета
                                                                              int getmaxcolor(void);
                                                                              // Устанавливает стиль и цвет заливки
                                                                              void setfillstyle(int pattern, int color);


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

                                                                        Последняя функция демонстрируется в подшитом примере. Он выводит функцией bar прямоугольник и меняет стиль заливки.
                                                                          DGML version 0.01.51
                                                                          Library sources
                                                                          Bar output example sources
                                                                          Bar output example app
                                                                          Прикреплённый файлПрикреплённый файлDGML_0_1_51.rar (47.46 Кбайт, скачиваний: 347)
                                                                            Слабо сделать поддержку для Unix-систем?
                                                                              Romtek
                                                                              Слабо. ;)

                                                                              В принципе, цепляем SDL - и вперед, только мне лениво. Уже код движется в определенном направлении.
                                                                                Список поддерживаемых графических функций (служебные не указаны):
                                                                                ExpandedWrap disabled
                                                                                  bar
                                                                                  bar3d
                                                                                  circle
                                                                                  fillellipse
                                                                                  line
                                                                                  linerel
                                                                                  lineto
                                                                                  setfillstyle //поддерживается только 7 стилей из 13
                                                                                  Der Meister А меня заинтересовала твоя работа! Я тоже писал что-то подобное, но только для Delphi!
                                                                                    Адрес страницы на Коллективных Проектах: DGML (Dos Graphics Migration Library)
                                                                                    Сообщение отредактировано: Romtek -
                                                                                      Вот я вернулся из командировки и буду продолжать писать...
                                                                                        Создана официальная страница: http://heavysoft.org/dgml/index.php.
                                                                                        Обновлена страница в wiki: http://sources.ru/wiki/doku.php?id=projects:dgml.

                                                                                        Приглашаю всех помочь в написании библиотеки. Осталось около 50 нереализованных функций.
                                                                                          В версии 0.01.97 реализованы все заглушки. Осталось только написать код.;) Если вы заинтересованы, можно легко реализовать любую функцию:

                                                                                          Цитата
                                                                                          Краткий SDK для разработчиков

                                                                                          Прототипы всех функций написаны и полностью совпадают по сигнатуре с аналогами Borland. Заглушки находятся в файле graphics.cpp. Чтобы реализовать функцию нужно просто написать вместо заглушки код и выложить его на форуме. Если необходимы дополнительные переменные, объявляйте их как puplic static в классе DGML_Stuff.


                                                                                          скачать все можно с wiki-страницы.

                                                                                          Добавлено
                                                                                          ExpandedWrap disabled
                                                                                            Список поддерживаемых функций:
                                                                                             
                                                                                            + готово
                                                                                            * частично реализовано
                                                                                            - только заглушка
                                                                                            * arc
                                                                                            + bar
                                                                                            + bar3d
                                                                                            + circle
                                                                                            + cleardevice
                                                                                            - clearviewport
                                                                                            + closegraph
                                                                                            - detectgraph
                                                                                            + drawpoly
                                                                                            * ellipse
                                                                                            + fillellipse
                                                                                            + fillpoly
                                                                                            + floodfill
                                                                                            - getarccoords
                                                                                            - getaspectratio
                                                                                            - getbkcolor
                                                                                            + getcolor
                                                                                            - getdefaultpalette
                                                                                            - getdrivername
                                                                                            - getfillpattern
                                                                                            - getfillsettings
                                                                                            - getgraphmode
                                                                                            - getimage
                                                                                            - getlinesettings
                                                                                            + getmaxcolor
                                                                                            - getmaxmode
                                                                                            + getmaxx
                                                                                            + getmaxy
                                                                                            - getmoderange
                                                                                            + getpixel
                                                                                            - getpalette
                                                                                            - getpalettesize
                                                                                            - gettextsettings
                                                                                            - getviewsettings
                                                                                            + getx
                                                                                            + gety
                                                                                            - graphdefaults
                                                                                            * grapherrormsg
                                                                                            - _graphfreemem
                                                                                            - _graphgetmem
                                                                                            * graphresult
                                                                                            - imagesize
                                                                                            + initgraph
                                                                                            - installuserdriver
                                                                                            - installuserfont
                                                                                            + line
                                                                                            + linerel
                                                                                            + lineto
                                                                                            - moverel
                                                                                            - moveto
                                                                                            - outtext
                                                                                            + outtextxy
                                                                                            - pieslice
                                                                                            - putimage
                                                                                            + putpixel
                                                                                            + rectangle
                                                                                            - restorecrtmode
                                                                                            - sector
                                                                                            - setactivepage
                                                                                            - setallpalette
                                                                                            - setaspectratio
                                                                                            - setbkcolor
                                                                                            + setcolor
                                                                                            - setfillpattern
                                                                                            * setfillstyle
                                                                                            - setgraphbufsize
                                                                                            - setgraphmode
                                                                                            - setlinestyle
                                                                                            - setpalette
                                                                                            - setrgbpalette
                                                                                            - settextjustify
                                                                                            - settextstyle
                                                                                            - setuser
                                                                                            - setviewport
                                                                                            - setvisualpage
                                                                                            - setwritemode
                                                                                            - textheight
                                                                                            - textwidth
                                                                                            > 3 месяцев на западном фронте без перемен. Все умерло?
                                                                                              Почему же сразу "умерло"? Просто у меня экзамены...
                                                                                                Вот экзамены и закончились... ;)

                                                                                                Настало время возобновить работу над библой... :rolleyes:
                                                                                                  http://www.codedread.com/code.php#BOSS
                                                                                                    trainer
                                                                                                    Где ж ты раньше был?! Ну все, что ж мне теперь делать... :'(

                                                                                                    Добавлено
                                                                                                    Цитата
                                                                                                    Not_Implemented namespace. More...


                                                                                                    Functions
                                                                                                    BOSS_API void bar3d (int left, int top, int right, int bottom, int depth, int topflag)
                                                                                                    BOSS_API void detectgraph (int *graphdriver, int *graphmode)
                                                                                                    BOSS_API void floodfill (int x, int y, int border)
                                                                                                    BOSS_API void getarccoords (struct arccoordstype *arccoords)
                                                                                                    BOSS_API void getaspectratio (int *xasp, int *yasp)
                                                                                                    BOSS_API struct palettetype * getdefaultpalette (void)
                                                                                                    BOSS_API char * getdrivername (void)
                                                                                                    BOSS_API void getfillpattern (char *pattern)
                                                                                                    BOSS_API void getfillsettings (struct fillsettingstype *fillinfo)
                                                                                                    BOSS_API int getgraphmode (void)
                                                                                                    BOSS_API void getlinesettings (struct linesettingstype *lineinfo)
                                                                                                    BOSS_API int getmaxcolor (void)
                                                                                                    BOSS_API int getmaxmode (void)
                                                                                                    BOSS_API char * getmodename (int mode_number)
                                                                                                    BOSS_API void getmoderange (int graphdriver, int *lomode, int *himode)
                                                                                                    BOSS_API void getpalette (struct palettetype *palette)
                                                                                                    BOSS_API int getpalettesize (void)
                                                                                                    BOSS_API void getviewsettings (struct viewporttype *viewport)
                                                                                                    BOSS_API void graphdefaults (void)
                                                                                                    BOSS_API char * grapherrormsg (int errorcode)
                                                                                                    BOSS_API int installuserdriver (char *name, int(*detect)(void))
                                                                                                    BOSS_API int installuserfont (char *name)
                                                                                                    BOSS_API void pieslice (int x, int y, int stangle, int endangle, int radius)
                                                                                                    BOSS_API int registerbgidriver (void(*driver)(void))
                                                                                                    BOSS_API int registerbgifont (void(*font)(void))
                                                                                                    BOSS_API void restorecrtmode (void)
                                                                                                    BOSS_API void sector (int x, int y, int stangle, int endangle, int xradius, int yradius)
                                                                                                    BOSS_API void setactivepage (int page)
                                                                                                    BOSS_API void setallpalette (struct palettetype *palette)
                                                                                                    BOSS_API void setaspectratio (int xasp, int yasp)
                                                                                                    BOSS_API unsigned setgraphbufsize (unsigned bufsize)
                                                                                                    BOSS_API void setgraphmode (int mode)
                                                                                                    BOSS_API void setlinestyle (int linestyle, unsigned upattern, int thickness)
                                                                                                    BOSS_API void setpalette (int colornum, int color)
                                                                                                    BOSS_API void setrgbpalette (int colornum, int red, int green, int blue)
                                                                                                    BOSS_API void setusercharsize (int multx, int divx, int multy, int divy)
                                                                                                    BOSS_API void setviewport (int left, int top, int right, int bottom, int clip)
                                                                                                    BOSS_API void setvisualpage (int page)
                                                                                                    BOSS_API void setwritemode (int mode)
                                                                                                    BOSS_API void getlinesettings (linesettingstype *lineinfo)
                                                                                                    BOSS_API void getpalette (palettetype *palette)
                                                                                                    BOSS_API void getviewsettings (viewporttype *viewport)


                                                                                                    Ха-ха-ха! У меня bar3d и то реализован! И еще несколько функций :tong: . Так что буду писать до конца, и басурманские либы нам не помеха...
                                                                                                      Цитата Der Meister @
                                                                                                      Где ж ты раньше был?!
                                                                                                      Дык сам только недавно увидел :)
                                                                                                      Цитата Der Meister @
                                                                                                      Так что буду писать до конца, и басурманские либы нам не помеха...
                                                                                                      Так это я в качестве информации к размышлению. Может что у них подсмотришь :)
                                                                                                        Цитата Der Meister @
                                                                                                        Так что буду писать до конца, и басурманские либы нам не помеха...

                                                                                                        Давай, давай, я вот сессию щас досдам, может тоже чем-нить подсоблю, если надо :yes:
                                                                                                          Пишите наздоровье такие библиотеки. Сгодяться и их порты под Линукс.
                                                                                                            Собран дистрибутив версии 0.02.01. В новой версии код избавлен от специфичных директив компилятора Microsoft. В дистрибутив включены исходники, краткая структура каталогов и бинарники для Microsoft Visual Studio 2003 и Borland C++ Builder 6.


                                                                                                            Бинарники для BCB6 собраны Nich'ем, за что ему огромный респект. ;)

                                                                                                            wiki: http://www.sources.ru/wiki/doku.php?id=projects:dgml
                                                                                                            site: http://heavysoft.org/dgml/index.php
                                                                                                              0.02.04

                                                                                                              Реализована функция arc. Написана с нуля в 4 строчки за несколько минут. Это меня обрадавало, так что дальше пойдет быстрее. :)
                                                                                                                Der Meister, я вот тут в небольшом сомненьи... Поправь меня, если ошибаюсь... Кажется, в BGI можно рисовать разные толстые линии (прерывистые, точками и т.д.), а добрая Винда толстыми дает рисовать только сплошные [по крайней мере 9х]. Значит, для реализации придется рисовать поточечно?
                                                                                                                  Ты, вообще-то, на #pragma once не рассчитывай. Borland C++, например, такой не знает.
                                                                                                                    trainer
                                                                                                                    Уже исправлено. ;)


                                                                                                                    barazuk
                                                                                                                    Пока до конкретной реализации стиля перьев не дошел, однако в функции присутствуют все параметры:
                                                                                                                    ExpandedWrap disabled
                                                                                                                      HPEN CreatePen(
                                                                                                                        int fnPenStyle,    // pen style
                                                                                                                        int nWidth,        // pen width
                                                                                                                        COLORREF crColor   // pen color
                                                                                                                      );

                                                                                                                    По идее должно работать.


                                                                                                                    Однако с проблемами с заливкой я уже столкнулся. Либо придется представить borland'овские заливки как битовые образы, либо писать с нуля...

                                                                                                                    Добавлено
                                                                                                                    Цитата
                                                                                                                    This style is valid only when the pen width is one or less in device units.



                                                                                                                    barazuk
                                                                                                                    Да, ты прав. Придется попотеть... :(
                                                                                                                      Вроде получилось выдрать паттерны заливки из борланда:

                                                                                                                      ExpandedWrap disabled
                                                                                                                        00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
                                                                                                                        11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
                                                                                                                        11111111 11111111 00000000 00000000 11111111 11111111 00000000 00000000
                                                                                                                        10101010 00000000 00000000 00000000 01010101 00000000 00000000 00000000
                                                                                                                        00000000 10101010 10101010 10101010 00000000 01010101 01010101 01010101
                                                                                                                        01010101 01010101 01010101 01010101 10101010 10101010 10101010 10101010
                                                                                                                        10101010 01010101 10101010 01010101 01010101 10101010 01010101 10101010
                                                                                                                        11111111 00000000 00000000 00000000 11111111 00000000 00000000 00000000
                                                                                                                        10101010 00000000 00000000 01010101 01010101 00000000 00000000 10101010
                                                                                                                        00000000 11111111 00000000 11111111 00000000 11111111 00000000 11111111
                                                                                                                        00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000


                                                                                                                      :D
                                                                                                                        Оказалось чуток неправильно, пришлось переделать... :lol:

                                                                                                                        ExpandedWrap disabled
                                                                                                                          11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
                                                                                                                          11111111 11111111 00000000 00000000 11111111 11111111 00000000 00000000
                                                                                                                          00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000
                                                                                                                          11100000 11000001 10000011 00000111 00001110 00011100 00111000 01110000
                                                                                                                          11110000 01111000 00111100 00011110 00001111 10000111 11000011 11100001
                                                                                                                          10100101 11010010 01101001 10110100 01011010 00101101 10010110 01001011
                                                                                                                          11111111 10001000 10001000 10001000 11111111 10001000 10001000 10001000
                                                                                                                          10000001 01000010 00100100 00011000 00011000 00100100 01000010 10000001
                                                                                                                          11001100 00110011 11001100 00110011 11001100 00110011 11001100 00110011
                                                                                                                          10000000 00000000 00001000 00000000 10000000 00000000 00001000 00000000
                                                                                                                          10001000 00000000 00100010 00000000 10001000 00000000 00100010 00000000
                                                                                                                          Сборка 0.02.47

                                                                                                                          Полностью поддерживаются встроенные заливки. Пользовательские заливки будут дописаны завтра, а то охота есть и спать. :)


                                                                                                                          Прикрепляю демку с заливками.
                                                                                                                          Прикреплённый файлПрикреплённый файлfill.rar (26.23 Кбайт, скачиваний: 266)
                                                                                                                            Цитата Der Meister @
                                                                                                                            Полностью поддерживаются встроенные заливки.
                                                                                                                            Работает :yes:
                                                                                                                              Цитата Der Meister @
                                                                                                                              По идее должно работать.


                                                                                                                              По идее - да. Но, помню, надо было - не работало... Пришлось откуда-то выдирать, и малевать через полигоны.
                                                                                                                                Тока шо проверил.

                                                                                                                                Делаем пустой MFC SDI прожект (к примеру, TestGDI).

                                                                                                                                ExpandedWrap disabled
                                                                                                                                  void CTestGDIView::OnDraw(CDC* pDC)
                                                                                                                                  {
                                                                                                                                    CTestGDIDoc* pDoc = GetDocument();
                                                                                                                                    ASSERT_VALID(pDoc);
                                                                                                                                      
                                                                                                                                    CPen* pOldPen = pDC->GetCurrentPen();
                                                                                                                                   
                                                                                                                                    CPen red_dot_pen(PS_DOT, 10, RGB(255, 0, 0));
                                                                                                                                    CPen green_dot_pen(PS_DOT, 1, RGB(0, 255, 0));
                                                                                                                                   
                                                                                                                                    CRect rc;
                                                                                                                                    GetClientRect(rc);
                                                                                                                                   
                                                                                                                                    pDC->SelectObject(&red_dot_pen);
                                                                                                                                    pDC->MoveTo(rc.left, rc.top);
                                                                                                                                    pDC->LineTo(rc.right, rc.bottom);
                                                                                                                                   
                                                                                                                                    pDC->SelectObject(&green_dot_pen);
                                                                                                                                    pDC->MoveTo(rc.left, rc.bottom);
                                                                                                                                    pDC->LineTo(rc.right, rc.top);
                                                                                                                                   
                                                                                                                                   
                                                                                                                                    pDC->SelectObject(pOldPen);
                                                                                                                                  }


                                                                                                                                Получаем, как я гениально предсказывал, пургу: ;)
                                                                                                                                user posted image
                                                                                                                                  Взялся я за компиляцию этой библы в Dev-C++ (компилятор GCC) и проверке примера.

                                                                                                                                  В целях совместимости добавил следующие строки в файл dgmltest.cpp (переименован от test.cpp) :
                                                                                                                                  ExpandedWrap disabled
                                                                                                                                    #ifdef __WIN32
                                                                                                                                      #include "DGML_Init.h"
                                                                                                                                    #else
                                                                                                                                      #include <graphics.h>
                                                                                                                                      #include <conio.h>
                                                                                                                                    #endif


                                                                                                                                  На этом коде проверял, компилируется в Dev-C++ без проблем, но есть баги с выводом текста.
                                                                                                                                  ExpandedWrap disabled
                                                                                                                                    #ifdef __WIN32
                                                                                                                                      #include "DGML_Init.h"
                                                                                                                                    #else
                                                                                                                                      #include <graphics.h>
                                                                                                                                      #include <conio.h>
                                                                                                                                    #endif
                                                                                                                                     
                                                                                                                                      #include <stdlib.h>
                                                                                                                                      #include <stdio.h>
                                                                                                                                     
                                                                                                                                      int main(void)
                                                                                                                                      {
                                                                                                                                         /* request auto detection */
                                                                                                                                         int gdriver = DETECT, gmode, errorcode;
                                                                                                                                         int midx, midy;
                                                                                                                                     
                                                                                                                                         /* initialize graphics and local variables */
                                                                                                                                         initgraph(&gdriver, &gmode, "");
                                                                                                                                     
                                                                                                                                         /* read result of initialization */
                                                                                                                                         errorcode = graphresult();
                                                                                                                                         if (errorcode != grOk)  /* an error occurred */
                                                                                                                                         {
                                                                                                                                            printf("Graphics error: %s\n", grapherrormsg(errorcode));
                                                                                                                                            printf("Press any key to halt:");
                                                                                                                                            getch();
                                                                                                                                            exit(1); /* terminate with an error code */
                                                                                                                                         }
                                                                                                                                     
                                                                                                                                         midx = getmaxx() / 2;
                                                                                                                                         midy = getmaxy() / 2;
                                                                                                                                         setcolor(getmaxcolor());
                                                                                                                                         line (0, 0, getmaxx(), getmaxy());
                                                                                                                                     
                                                                                                                                         /* for centering screen messages */
                                                                                                                                         settextjustify(CENTER_TEXT, CENTER_TEXT);
                                                                                                                                     
                                                                                                                                         /* output a message to the screen */
                                                                                                                                         outtextxy(midx, midy, "press any key to clear the screen:");
                                                                                                                                     
                                                                                                                                         /* wait for a key */
                                                                                                                                         getch();
                                                                                                                                         setbkcolor(5);
                                                                                                                                         /* clear the screen */
                                                                                                                                         cleardevice();
                                                                                                                                     
                                                                                                                                         /* output another message */
                                                                                                                                         outtextxy(midx, midy, "press any key to quit:");
                                                                                                                                     
                                                                                                                                         /* clean up */
                                                                                                                                         getch();
                                                                                                                                         closegraph();
                                                                                                                                         return 0;
                                                                                                                                      }

                                                                                                                                  Текста "press any key to clear the screen:" на экране не видно при использовании DGML (что-то с цветами?). В BC 3.1 же всё выводится.
                                                                                                                                    Romtek

                                                                                                                                    Текст пока еще не реализован. Функция outtextxy пока выводит текст только для отладки. А в списке функций она отмечена знаком +, потому что сама ф-ция реализована, нет кода по управлению цветом и шрифтами...


                                                                                                                                    P.S. В дальнейшем знаком + будут отмечаться функции, полностью показавшие идентичный тест.

                                                                                                                                    Добавлено
                                                                                                                                    Перечитал и понял, какой бред написал. :D

                                                                                                                                    В общем, Romtek, спасибо за поддержку в отлавливании багов. ;)
                                                                                                                                      Для компиляции libdgml в Dev-Cpp нужно указать линкеру ключ
                                                                                                                                      -lgdi32

                                                                                                                                      Для компиляции dgmltest нужно указать линкеру ключи
                                                                                                                                      -lgdi32 -ldgml

                                                                                                                                      2Der_Meister
                                                                                                                                      Я внёс маленькие поправки в имена файлов:
                                                                                                                                      system.cpp -> dgmlcore.cpp
                                                                                                                                      test.cpp -> dgmltest.cpp

                                                                                                                                      , добавил заголовок с __Win32, остального не касался.

                                                                                                                                      Прилагаю архив с исходниками для компиляции в Dev-C++ (тестировал в 4.9.9.2). Там всё готово для компиляции. Нужно только запустить сначала libdgml.dev и скомпилировать, потом тоже самое с dgmltest.dev.
                                                                                                                                      Прикреплённый файлПрикреплённый файлdgml.rar (19.27 Кбайт, скачиваний: 265)
                                                                                                                                        Romtek
                                                                                                                                        Ок, скоро обновлю дистрибутив и wiki.

                                                                                                                                        Поскольку многие хотят пощупать либу прямо сейчас, выкладываю примеры, которые она уже реально обрабатывает на 100%. ;)

                                                                                                                                        Скачать здесь (550кб)

                                                                                                                                        Если какой-нибудь пример работает некорректно, сообищите.
                                                                                                                                          Ты только разложи бинарники и исходники отдельно, чтобы не мешать всё до кучи.
                                                                                                                                          Проверю твои примеры в Dev-C++.

                                                                                                                                          Добавлено
                                                                                                                                          Пример getbkcolor_d.exe (DGML) выводит надпись на центрированную относительно экрана, а начинается вместо этого с центра экрана. Непорядок. ;)
                                                                                                                                          Аналогично и getcolor_d.exe
                                                                                                                                            Цитата Romtek @
                                                                                                                                            Пример getbkcolor_d.exe (DGML) выводит надпись на центрированную относительно экрана, а начинается вместо этого с центра экрана. Непорядок.
                                                                                                                                            Аналогично и getcolor_d.exe

                                                                                                                                            :yes: Надо надписи пока хоть как-то универсально реализовать, а потом уже со шрифтами париться...
                                                                                                                                              Компилирую исходники в Dev-C++.
                                                                                                                                              arc.cpp - некорректная работа MoveTo? (прикреплённая картинка)
                                                                                                                                              getbkcolor.cpp - пустой экран и надписей не видать.
                                                                                                                                              getcolor.cpp - аналогично

                                                                                                                                              getfillpattern.cpp - не скомпилировался, выдаёт ошибку на строке
                                                                                                                                              ExpandedWrap disabled
                                                                                                                                                getfillpattern(pattern);

                                                                                                                                              ExpandedWrap disabled
                                                                                                                                                error: invalid conversion from `char*' to `char'


                                                                                                                                              Простой пример с выводом текста на экран тоже не работает - ничего не видно.

                                                                                                                                              Баги...
                                                                                                                                              Сообщение отредактировано: Romtek -

                                                                                                                                              Прикреплённый файлПрикреплённый файлarc.PNG (0.54 Кбайт, скачиваний: 601)
                                                                                                                                                Romtek
                                                                                                                                                А... Я ведь последн.. версию так и не выложил... Там arc работает.
                                                                                                                                                  Прикрепляю исходники 2.47
                                                                                                                                                  Прикреплённый файлПрикреплённый файлdgml.rar (14.17 Кбайт, скачиваний: 233)
                                                                                                                                                    Такой пример не работает:
                                                                                                                                                    ExpandedWrap disabled
                                                                                                                                                      #ifdef __WIN32
                                                                                                                                                        #include "DGML_Init.h"
                                                                                                                                                      #else
                                                                                                                                                        #include <stdlib.h>
                                                                                                                                                        #include <graphics.h>
                                                                                                                                                        #include <conio.h>
                                                                                                                                                        #include <stdio.h>
                                                                                                                                                      #endif
                                                                                                                                                      #include <string.h>
                                                                                                                                                       
                                                                                                                                                      int main(void)
                                                                                                                                                      {
                                                                                                                                                      /* request auto detection */
                                                                                                                                                         int gdriver = DETECT, gmode, errorcode;
                                                                                                                                                         int color, maxcolor, x, y;
                                                                                                                                                         char colname[35];
                                                                                                                                                         char msg[80];
                                                                                                                                                       
                                                                                                                                                       
                                                                                                                                                         printf ("Color: %i", getcolor());
                                                                                                                                                         setcolor(1200);
                                                                                                                                                        
                                                                                                                                                      /* initialize graphics and local variables */
                                                                                                                                                         initgraph(&gdriver, &gmode, "");
                                                                                                                                                       
                                                                                                                                                      /* read result of initialization */
                                                                                                                                                         errorcode = graphresult();
                                                                                                                                                      /* an error occurred */
                                                                                                                                                         if (errorcode != grOk)
                                                                                                                                                         {
                                                                                                                                                            printf("Graphics error: %s\n", grapherrormsg(errorcode));
                                                                                                                                                            printf("Press any key to halt:");
                                                                                                                                                            getch();
                                                                                                                                                      /* terminate with an error code */
                                                                                                                                                            exit(1);
                                                                                                                                                         }
                                                                                                                                                       
                                                                                                                                                         /* maximum color index supported */
                                                                                                                                                         maxcolor = getmaxcolor();
                                                                                                                                                       
                                                                                                                                                         /* for centering text messages */
                                                                                                                                                         settextjustify(CENTER_TEXT, CENTER_TEXT);
                                                                                                                                                         x = getmaxx() / 2;
                                                                                                                                                         y = getmaxy() / 2;
                                                                                                                                                       
                                                                                                                                                         /* loop through the available colors */
                                                                                                                                                         for (color=1; color<=maxcolor; color++)
                                                                                                                                                         {
                                                                                                                                                            /* clear the screen */
                                                                                                                                                            cleardevice();
                                                                                                                                                       
                                                                                                                                                            /* select a new background color */
                                                                                                                                                            setcolor(color);
                                                                                                                                                       
                                                                                                                                                            /* output a messsage */
                                                                                                                                                            sprintf(msg, "Color: %d", color);
                                                                                                                                                            outtextxy(x, y, msg);
                                                                                                                                                            getch();
                                                                                                                                                         }
                                                                                                                                                       
                                                                                                                                                      /* clean up */
                                                                                                                                                         closegraph();
                                                                                                                                                         return 0;
                                                                                                                                                      }


                                                                                                                                                    Добавлено
                                                                                                                                                    Цитата Der_Meister @
                                                                                                                                                    А... Я ведь последн.. версию так и не выложил...
                                                                                                                                                    Вот редиска! Я то проверял по версии 2.01!
                                                                                                                                                      А почему не сделать эту либу кросс-платформенной, с помощью других известны либ?
                                                                                                                                                      SDL - http://www.libsdl.org
                                                                                                                                                      Pixel Toaster - http://www.pixeltoaster.com/
                                                                                                                                                      ...

                                                                                                                                                      Имхо, в таком случае, популярность DGML значительно возрастёт.

                                                                                                                                                      ;)
                                                                                                                                                        Romtek
                                                                                                                                                        Насколько я помню в SDL простейший вывод пиксела выливается в манипуляцию с памятью... Ну это конечно решаемо, если более высокоуровневую обретку еще не выпустили... А более сепрьезная проблема - шрифты и заливки.

                                                                                                                                                        Так что пока,я думаю, просто избавлюсь от большинства GDI-функций. (В частности заменить все ellipse, polygone, moveto одним setpixel)

                                                                                                                                                        И в дальнейшем надо будем заменить лишь процедуру инициализации и несколько абстрактных функций. :rolleyes:
                                                                                                                                                          Цитата Der_Meister @
                                                                                                                                                          Так что пока,я думаю, просто избавлюсь от большинства GDI-функций.
                                                                                                                                                          :no:
                                                                                                                                                          Мне кажется, что вызов GDI-функций более приемлем в данном случае, а твоя реализация с помощью setpixel только затруднит понимание и ухудшит общую производительность dgml.

                                                                                                                                                          Верни лучше обратно, к вызову GDI.
                                                                                                                                                            Der_Meister, если есть желание все делать через SetPixel, могу дать линк на сырцы LIBGRX. Там именно так, из-за чего ограничено использование. Там, кстати, был модуль симуляции Багландовского БЖИ.

                                                                                                                                                            Цитата Romtek @
                                                                                                                                                            ухудшит общую производительность dgml.


                                                                                                                                                            А кого производительность интересует? В любом случае, по функционированию под Виндами "симулятора" БЖИ нельзя сложить впечатление о производительности на тех 486-х компах, на которых преподы будут проверять ДОСовскую версию... Имхо, эмуляция все равно будет быстрее. Особенно, если делать вывод через BackBuffer (если такое есть в DGML).
                                                                                                                                                              barazuk
                                                                                                                                                              В написании библиотек нужно как можно больше придерживаться вызовов стандартных фунций, имхо. Чем больше будешь отклоняться, тем больше проблем будет в дальнейшем с совместимостью, читабельностью, отловом ошибок и так далее.

                                                                                                                                                              В обшем, тему лучше подробнее обсудить с профессионалами в разделе Software Design
                                                                                                                                                                Цитата Romtek @
                                                                                                                                                                больше придерживаться вызовов стандартных фунций


                                                                                                                                                                Проблема в том, что они не всегда далают то же самое, что мы хотим проэмулировать...

                                                                                                                                                                Цитата Romtek @
                                                                                                                                                                тем больше проблем будет в дальнейшем с совместимостью


                                                                                                                                                                Наоборот. Если максимально делать через SetPixel (а вывод примитивов типа линий, кругов и т.д. через SetPixel уже давно реализован, многократно проверен тысячами пользователей и отлажен в GRX), то можно портировать под практически любой компилятор/ось. Достаточно изменить функцию окна и этот самый SetPixel. А производительность для эмуляции столь древней библиотеки, ИМХО, в списке приоритетов на последнем месте...
                                                                                                                                                                  Цитата barazuk @
                                                                                                                                                                  Проблема в том, что они не всегда далают то же самое, что мы хотим проэмулировать...
                                                                                                                                                                  Документацию просто надо читать...

                                                                                                                                                                  Цитата barazuk @
                                                                                                                                                                  Наоборот.
                                                                                                                                                                  Я предупредил, а вы - как хотите.
                                                                                                                                                                    Цитата Romtek @
                                                                                                                                                                    Документацию просто надо читать...


                                                                                                                                                                    См. выше. Почитали документацию. Винда не умеет паттерновые линии толще одного пиксела рисовать. BGI - может. Дальше что? Рисуем через полигоны, или реализуем через SetPixel. Если достаточно большой процент функций придется рисовать так - так не проще сразу все? По крайней мере будем на 100% уверены, какая функция что делает. Вне зависимости от реализации ее системой.
                                                                                                                                                                      Цитата Romtek @
                                                                                                                                                                      Документацию просто надо читать...

                                                                                                                                                                      А что толкуто?! Взять ту же функцию arc. Аналог из GDI зачем-то еще соединяет арку с местом, где находится перо (в этом ты недавно убедился). Так что arc реализован вручную.

                                                                                                                                                                      И гнаться за производительностью здесь как-то...
                                                                                                                                                                        Цитата Romtek @
                                                                                                                                                                        Пример getbkcolor_d.exe (DGML) выводит надпись на центрированную относительно экрана, а начинается вместо этого с центра экрана. Непорядок.
                                                                                                                                                                        Аналогично и getcolor_d.exe

                                                                                                                                                                        fixed.

                                                                                                                                                                        Добавлено
                                                                                                                                                                        Реализованы

                                                                                                                                                                        getfillpattern
                                                                                                                                                                        setfillpattern
                                                                                                                                                                          Der_Meister, заставь работать пример из эмуляция BGI графики (сообщение #1149448) (работа с цветом).
                                                                                                                                                                            тестовый пример:
                                                                                                                                                                            Прикреплённый файлПрикреплённый файлgetfillpattern.rar (45.33 Кбайт, скачиваний: 196)
                                                                                                                                                                              Цитата Romtek @
                                                                                                                                                                              заставь работать пример из эмуляция BGI графики (сообщение #1149448)

                                                                                                                                                                              Заставил. Щас еще реализую ф-цию settextjustify. И 8-й цвет (dark gray) че-то соысем не видно..
                                                                                                                                                                              Прикреплённый файлПрикреплённый файлcolor.rar (26.12 Кбайт, скачиваний: 189)
                                                                                                                                                                                settextjustify частично реализован.

                                                                                                                                                                                По вертикали надо выровнять по центру, а GDI выравнивает по базовой линии...

                                                                                                                                                                                Добавлено
                                                                                                                                                                                Выложен дистрибутив версии 0.02.62

                                                                                                                                                                                Исправлено несколько багов.
                                                                                                                                                                                Реализовано несколько функций.
                                                                                                                                                                                Добавлены проекты для Dev-C++.


                                                                                                                                                                                Добавлено
                                                                                                                                                                                Так же обновлена wiki. (собственно ссылка на архив там ;))
                                                                                                                                                                                Прикреплённый файлПрикреплённый файлsettextjustify.rar (45.17 Кбайт, скачиваний: 215)
                                                                                                                                                                                  Реализовать ("!" - в срочном порядке, "?" - заглушку?) :

                                                                                                                                                                                  ExpandedWrap disabled
                                                                                                                                                                                    ! delay (sleep ?)
                                                                                                                                                                                    ! randomize
                                                                                                                                                                                    ? sound
                                                                                                                                                                                    ? nosound
                                                                                                                                                                                     
                                                                                                                                                                                    ! getimage/putimage
                                                                                                                                                                                    ! settextstyle
                                                                                                                                                                                    getmodename



                                                                                                                                                                                  ExpandedWrap disabled
                                                                                                                                                                                    #include           <float.h>
                                                                                                                                                                                    #include           <graphics.h>
                                                                                                                                                                                    #include           <math.h>
                                                                                                                                                                                    #include           <dos.h>
                                                                                                                                                                                     
                                                                                                                                                                                    int main(void)
                                                                                                                                                                                    {
                                                                                                                                                                                      int errorcode, mode, maxcolor,maxx, maxy, ballsize;
                                                                                                                                                                                      void *ball;
                                                                                                                                                                                      int i, j;
                                                                                                                                                                                      int gdriver = VGA;
                                                                                                                                                                                      int gmode = 2;
                                                                                                                                                                                      char msg[80];
                                                                                                                                                                                     
                                                                                                                                                                                    /* initialize graphics mode */
                                                                                                                                                                                     
                                                                                                                                                                                       initgraph(&gdriver, &gmode, "");
                                                                                                                                                                                     
                                                                                                                                                                                    /* read result of initialization */
                                                                                                                                                                                     
                                                                                                                                                                                       errorcode = graphresult();
                                                                                                                                                                                     
                                                                                                                                                                                    /* an error occurred */
                                                                                                                                                                                       if (errorcode != grOk)
                                                                                                                                                                                       {
                                                                                                                                                                                          printf("Graphics error: %s\n", grapherrormsg(errorcode));
                                                                                                                                                                                          printf("Press any key to halt:");
                                                                                                                                                                                          getch();
                                                                                                                                                                                    /* *terminate with an error code */
                                                                                                                                                                                          exit(1);
                                                                                                                                                                                       }
                                                                                                                                                                                     
                                                                                                                                                                                       mode = getgraphmode();
                                                                                                                                                                                       printf(" %d is the current mode number.\n", mode);
                                                                                                                                                                                       printf("%15s is the current graphics mode\n", getmodename(mode));
                                                                                                                                                                                       maxx=getmaxx();
                                                                                                                                                                                       printf("X max = %d\n", maxx);
                                                                                                                                                                                       maxy=getmaxy();
                                                                                                                                                                                       printf("Y max = %d\n", maxy);
                                                                                                                                                                                       maxcolor=getmaxcolor();
                                                                                                                                                                                       printf("This mode supports colors %d\n", maxcolor);
                                                                                                                                                                                       printf("This driver supports modes 0..%d\n", getmaxmode());
                                                                                                                                                                                       printf("Press any key to continue");
                                                                                                                                                                                       getch();
                                                                                                                                                                                     
                                                                                                                                                                                       /* loop through the available colors */
                                                                                                                                                                                     
                                                                                                                                                                                       cleardevice();
                                                                                                                                                                                       j=0;
                                                                                                                                                                                       for (i=0; i<=maxcolor; i++)
                                                                                                                                                                                           {
                                                                                                                                                                                        setfillstyle(SOLID_FILL,i);
                                                                                                                                                                                        j=j+8;
                                                                                                                                                                                        if (i==0)
                                                                                                                                                                                           setcolor(15);
                                                                                                                                                                                        else
                                                                                                                                                                                           setcolor(i);
                                                                                                                                                                                        sprintf(msg, "<---- Color number %d", i);
                                                                                                                                                                                        bar (0,j,20,j+8);
                                                                                                                                                                                        outtextxy(30,j, msg);
                                                                                                                                                                                           }
                                                                                                                                                                                     
                                                                                                                                                                                       printf("\n\nPress any key to continue");
                                                                                                                                                                                       getch();
                                                                                                                                                                                       cleardevice();
                                                                                                                                                                                       ballsize = imagesize(0,0,10,10);
                                                                                                                                                                                     
                                                                                                                                                                                       /* get byte size of image */
                                                                                                                                                                                     
                                                                                                                                                                                       if ((ball = malloc(ballsize)) == NULL)
                                                                                                                                                                                          {
                                                                                                                                                                                         closegraph();
                                                                                                                                                                                         printf("Error: not enough heap space. Aborting\n");
                                                                                                                                                                                         exit(1);
                                                                                                                                                                                          }
                                                                                                                                                                                     
                                                                                                                                                                                       i=0;
                                                                                                                                                                                       for (i=1; i<=maxcolor; i++)    /*make 15 non-black balls */
                                                                                                                                                                                        {
                                                                                                                                                                                         cleardevice();
                                                                                                                                                                                         setcolor(15);
                                                                                                                                                                                         circle(5,5,5);               /* draw a white circle */
                                                                                                                                                                                         setfillstyle(SOLID_FILL,i);
                                                                                                                                                                                         floodfill(5,5,15);           /*fill with color      */
                                                                                                                                                                                         getimage(0,0,10,10, ball);
                                                                                                                                                                                         cleardevice();
                                                                                                                                                                                         for (j=0;j<=(maxx-10);j=j+2)   /*throw it across the screen  */
                                                                                                                                                                                            {
                                                                                                                                                                                             putimage(j, 50, ball, XOR_PUT);
                                                                                                                                                                                             delay(2);
                                                                                                                                                                                             putimage(j, 50, ball, XOR_PUT);
                                                                                                                                                                                            }
                                                                                                                                                                                      }
                                                                                                                                                                                      cleardevice();
                                                                                                                                                                                      printf("\nThe graphics demo is done. Press any key to quit completely.");
                                                                                                                                                                                      getch();
                                                                                                                                                                                      closegraph();
                                                                                                                                                                                      return 0;
                                                                                                                                                                                    }


                                                                                                                                                                                  Добавлено
                                                                                                                                                                                  В файле graphics.cpp:
                                                                                                                                                                                  заменить
                                                                                                                                                                                  ExpandedWrap disabled
                                                                                                                                                                                    void lineto(int x, int y)

                                                                                                                                                                                  на
                                                                                                                                                                                  ExpandedWrap disabled
                                                                                                                                                                                    void DGML::lineto(int x, int y)

                                                                                                                                                                                  ;)
                                                                                                                                                                                    Выкладывай сюда новые исходники!!!
                                                                                                                                                                                      delay+
                                                                                                                                                                                      sleep+
                                                                                                                                                                                      lineto+


                                                                                                                                                                                      arcsupport
                                                                                                                                                                                      А они лежат здесь: http://www.sources.ru/wiki/doku.php?id=projects:dgml

                                                                                                                                                                                      Добавлено
                                                                                                                                                                                      sound
                                                                                                                                                                                      nosound

                                                                                                                                                                                      ^ заглушки

                                                                                                                                                                                      Кстати, кто-нибудь знает, как юзать pc-спикер под виндой?

                                                                                                                                                                                      Добавлено
                                                                                                                                                                                      randomize+
                                                                                                                                                                                        Цитата Der_Meister @
                                                                                                                                                                                        Кстати, кто-нибудь знает, как юзать pc-спикер под виндой?
                                                                                                                                                                                        Beep вроде.
                                                                                                                                                                                          Цитата trainer @
                                                                                                                                                                                          Beep вроде


                                                                                                                                                                                          Фига. Эта функция работает только под линейкой NT. Под 9х - выдает через звуковуху дефолтовый звук.

                                                                                                                                                                                          Хотя люди как-то делают - см. ХамелеонКлок. Одно из двух - либо прямо драйвер зовут, либо сами через порты. Или какой-то другой недокументированный хитропопый трюк мелкософтов.
                                                                                                                                                                                            Сейчас эмуляция BGI-графики реализована?
                                                                                                                                                                                              Цитата helli @
                                                                                                                                                                                              Сейчас эмуляция BGI-графики реализована?
                                                                                                                                                                                              да, но не полностью. Смотри на странмчке в Wiki.
                                                                                                                                                                                                Пока машины у меня нет, появится через недельку. Планирую заняться DGML вплотную.
                                                                                                                                                                                                  Вот и я. Пойду разгребать исходники...
                                                                                                                                                                                                    Функции slepp, sound и т.п. выносить в отдельный хидер? То есть чтоб так и было, как в оригинале:
                                                                                                                                                                                                    ExpandedWrap disabled
                                                                                                                                                                                                      #include <graphics.h>
                                                                                                                                                                                                      #include <dos.h>


                                                                                                                                                                                                    или все в graphics.h спихнуть?

                                                                                                                                                                                                    Добавлено
                                                                                                                                                                                                    Такой вопрос возник в связи с заголовком stdlib.h, который заменятьб нельзя

                                                                                                                                                                                                    ExpandedWrap disabled
                                                                                                                                                                                                          //======================================================================================
                                                                                                                                                                                                          // ИЗ DOS.H
                                                                                                                                                                                                          //======================================================================================
                                                                                                                                                                                                       
                                                                                                                                                                                                          // приостанавливает выполнение программы на заданное количество миллисекунд
                                                                                                                                                                                                          void delay(unsigned milliseconds);
                                                                                                                                                                                                       
                                                                                                                                                                                                          // приостанавливает выполнение программы на заданное количество секунд
                                                                                                                                                                                                          void sleep(unsigned seconds);
                                                                                                                                                                                                       
                                                                                                                                                                                                          // включает PC-спикер на заданную частоту
                                                                                                                                                                                                          void sound(unsigned frequency);
                                                                                                                                                                                                       
                                                                                                                                                                                                          // выключает PC-спикер
                                                                                                                                                                                                          void nosound(void);
                                                                                                                                                                                                       
                                                                                                                                                                                                          //======================================================================================
                                                                                                                                                                                                          // ИЗ STDLIB.H
                                                                                                                                                                                                          //======================================================================================
                                                                                                                                                                                                       
                                                                                                                                                                                                          // инициализирует генератор случайных чисел
                                                                                                                                                                                                          void randomize(void);
                                                                                                                                                                                                      Реализую функцию sound через таймер, который с интервалом воспроизводит короткие звуковые сигналы. Однако появились траблы с тем, что графику-то юзер может не инициализировать, поэтому функция обработки сообщений недоступна.

                                                                                                                                                                                                      Если посылать сообщения другой функции, надо в прогу втыкать цикл обработки сообщений:
                                                                                                                                                                                                      Цитата MSDN
                                                                                                                                                                                                      If your application creates a timer without specifying a window handle, your application must monitor the message queue for WM_TIMER messages and dispatch them to the appropriate window.


                                                                                                                                                                                                      Замкнутый круг... :wall:

                                                                                                                                                                                                      Добавлено
                                                                                                                                                                                                      ExpandedWrap disabled
                                                                                                                                                                                                        // включает PC-спикер на заданную частоту
                                                                                                                                                                                                        void DGML::sound(unsigned frequency)
                                                                                                                                                                                                        {
                                                                                                                                                                                                            //звук не воспроизводится
                                                                                                                                                                                                            if (!DGML_Stuff::timer_id)
                                                                                                                                                                                                            {
                                                                                                                                                                                                                //создаем таймер, который будет петь
                                                                                                                                                                                                                DGML_Stuff::timer_id=SetTimer(NULL, 10,100, (TIMERPROC)DGML_Stuff::sound_handler);
                                                                                                                                                                                                         
                                                                                                                                                                                                            }
                                                                                                                                                                                                         
                                                                                                                                                                                                        }
                                                                                                                                                                                                         
                                                                                                                                                                                                        // выключает PC-спикер
                                                                                                                                                                                                        void DGML::nosound(void)
                                                                                                                                                                                                        {
                                                                                                                                                                                                            KillTimer(NULL,DGML_Stuff::timer_id);
                                                                                                                                                                                                            DGML_Stuff::timer_id=0;
                                                                                                                                                                                                        }
                                                                                                                                                                                                         
                                                                                                                                                                                                        //обработчик звука
                                                                                                                                                                                                        void CALLBACK DGML_Stuff::sound_handler(HWND hwnd, UINT msg, UINT idTimer, DWORD dwTime)
                                                                                                                                                                                                        {
                                                                                                                                                                                                            Beep(440, 1000);
                                                                                                                                                                                                        }


                                                                                                                                                                                                      Добавлено
                                                                                                                                                                                                      Реализовал через timeSetEvent. Получилось убого. Требует Winmm.lib, хрипит и ресурсы жрет понапрасну. Надо искать другое решение...

                                                                                                                                                                                                      Да и вообще что-то кроссплатформенное.
                                                                                                                                                                                                        Пожалуйста, напиши kbhit()
                                                                                                                                                                                                        Я уверен, это несложно
                                                                                                                                                                                                          Цитата Der_Meister @
                                                                                                                                                                                                          Да и вообще что-то кроссплатформенное.


                                                                                                                                                                                                          Это вряд ли. Разве что использовать сторонние библиотеки - напр. http://www.fmod.org - моя любимая, есть практически под все. А так - очевидно нужно мспользовать DirectSound - но я тут не гуру - не было времени разбираться, в итоге заюзал ФМОД как обертку.
                                                                                                                                                                                                            barazuk
                                                                                                                                                                                                            fmod не держит pc speaker имхо. А может ну его, pc speaker, выводить через колонки?


                                                                                                                                                                                                            angrylion
                                                                                                                                                                                                            ок

                                                                                                                                                                                                            Добавлено
                                                                                                                                                                                                            А насчет хидеров что?
                                                                                                                                                                                                              Цитата Der_Meister @
                                                                                                                                                                                                              fmod не держит pc speaker имхо


                                                                                                                                                                                                              Ну конечно, кому оно надо?

                                                                                                                                                                                                              Цитата Der_Meister @
                                                                                                                                                                                                              А может ну его, pc speaker, выводить через колонки?


                                                                                                                                                                                                              :blink: А я по-другому и не мыслил. Все равно через спикер под 9х не получится и вообще не портабельно...
                                                                                                                                                                                                                Ладно, оставим пока этот вопрос... Щас пляски с бубмном в расшифровке хранения картинок в BGI.

                                                                                                                                                                                                                Ведь на уровне памяти тоже картинки должны совпадать, не так ли? А то было бы совсем легко...
                                                                                                                                                                                                                  Цитата Der_Meister @
                                                                                                                                                                                                                  Ладно, оставим пока этот вопрос... Щас пляски с бубмном в расшифровке хранения картинок в BGI.


                                                                                                                                                                                                                  Когда-то расковыривал. Ничего особо сложного - но аппаратно-зависимое там все. Так что для VGA 0х13, для а-ля EGA 16 цветов и CGA-шных - все разные...


                                                                                                                                                                                                                  Кстати, а нужно ли вообще этим заниматься (реализацией 1:1)? Главное, чтобы сохраняло/восстанавливало...
                                                                                                                                                                                                                    Цитата barazuk @
                                                                                                                                                                                                                    Кстати, а нужно ли вообще этим заниматься (реализацией 1:1)? Главное, чтобы сохраняло/восстанавливало...

                                                                                                                                                                                                                    Я тоже над этим думаю, вдруг кому-нибудь, вроде меня, понадобится вывести битовый образ в файл.

                                                                                                                                                                                                                    Там интересно так... 1 пиксел весит 10 байт. 4 пиксела весят 10 байт. 5 пикселов - уже 18 вроде. Самое главное, BGI "портит" всю предоставленную ему память. То есть обнуляешь массив, а он вместо 1 пиксела еще 3 левых пишет и т.д.
                                                                                                                                                                                                                      Цитата Der_Meister @
                                                                                                                                                                                                                      Там интересно так... 1 пиксел весит 10 байт. 4 пиксела весят 10 байт. 5 пикселов - уже 18 вроде. Самое главное, BGI "портит" всю предоставленную ему память. То есть обнуляешь массив, а он вместо 1 пиксела еще 3 левых пишет и т.д.


                                                                                                                                                                                                                      Да ничего интересного. Первые два слова - ширина/высота. Вид "кодирования" не указан нигде.

                                                                                                                                                                                                                      Потом - данные для 4-х битовых плоскостей. См. руководство по программированию EGA.
                                                                                                                                                                                                                      (это что касается 16-тицветных режимов). Для 8-битных и выше - проще.
                                                                                                                                                                                                                      Сообщение отредактировано: barazuk -
                                                                                                                                                                                                                        Да все я понимаю. Просто ты поробуй. На самом деле не все так просто.
                                                                                                                                                                                                                          Цитата Der_Meister @
                                                                                                                                                                                                                          Просто ты поробуй. На самом деле не все так просто.


                                                                                                                                                                                                                          Дык пробовал. У меня даже редактор когда-то давно под это дело был. Вернее, конвертор из БМП.

                                                                                                                                                                                                                          Кстати, а как ты вообще себе это представляешь? Большая часть задачек великомудрыми преподами задается в 16 цветах. Установка такого режима под виндой... Гм... Проблематична. Если без извратов. Так смысл вообще с этим разбираться?
                                                                                                                                                                                                                            Цитата barazuk @
                                                                                                                                                                                                                            Кстати, а как ты вообще себе это представляешь? Большая часть задачек великомудрыми преподами задается в 16 цветах. Установка такого режима под виндой... Гм... Проблематична. Если без извратов. Так смысл вообще с этим разбираться?

                                                                                                                                                                                                                            Так я и не устанавливаю режим. Просто в массив по указателю должен писать то же самое, что и BGI
                                                                                                                                                                                                                              Т.е. ты хочешь из 256- или более цветного режима брать картинку, уменьшать в ней количество цветов до 16, отслеживать изменения палитры?...
                                                                                                                                                                                                                                Да я вообще-то битовые образы не гружу. :wacko:

                                                                                                                                                                                                                                Добавлено
                                                                                                                                                                                                                                Понял, про что ты.... Зачем уменьшать кол-во цветов? Я ведь и так знаю каждый цвет.
                                                                                                                                                                                                                                  angrylion
                                                                                                                                                                                                                                  Так kbhit имеется в conio.h :wacko:

                                                                                                                                                                                                                                  По крайней мере в MSVS2003. Работает без проблем.
                                                                                                                                                                                                                                    Цитата Der_Meister @
                                                                                                                                                                                                                                    Так kbhit имеется в conio.h

                                                                                                                                                                                                                                    По крайней мере в MSVS2003. Работает без проблем.


                                                                                                                                                                                                                                    :blink: Так то ж в консольных приблудах. Или?
                                                                                                                                                                                                                                      А для неконсольных есть getch, которая уже реализована, или опять переопределять... :blink:


                                                                                                                                                                                                                                      Структура картинок BGI:
                                                                                                                                                                                                                                      ExpandedWrap disabled
                                                                                                                                                                                                                                        [w][w][h][h][x][x][1-2][3-4][5-6][7-8]

                                                                                                                                                                                                                                      w-ширина
                                                                                                                                                                                                                                      h-высота
                                                                                                                                                                                                                                      x-хз че, походу пустота.

                                                                                                                                                                                                                                      На начальном этапе выделяется 10 байт. Если картинка не влазит, память увеличивается с шагом в 4 байта.


                                                                                                                                                                                                                                      Короче, ща ф-цию imagesize напишу...

                                                                                                                                                                                                                                      Добавлено
                                                                                                                                                                                                                                      +imagesize

                                                                                                                                                                                                                                      Целых 11 строк :o

                                                                                                                                                                                                                                      Добавлено
                                                                                                                                                                                                                                      Я почти разобрался. :) BGI еще и строки выравнивает зачем-то. То есть какую-то дрянь после каждой строки приписывает.

                                                                                                                                                                                                                                      ExpandedWrap disabled
                                                                                                                                                                                                                                        size=imagesize(0,0,1,0);
                                                                                                                                                                                                                                        size=10
                                                                                                                                                                                                                                         
                                                                                                                                                                                                                                        size=imagesize(0,0,0,1);
                                                                                                                                                                                                                                        size=14
                                                                                                                                                                                                                                         
                                                                                                                                                                                                                                        size=imagesize(0,0,0,2);
                                                                                                                                                                                                                                        size=18
                                                                                                                                                                                                                                         
                                                                                                                                                                                                                                        size=imagesize(0,0,9,9);
                                                                                                                                                                                                                                        size=86
                                                                                                                                                                                                                                         
                                                                                                                                                                                                                                        //Однако 6+10*10/2=56, плюс выравнивание, итого 58
                                                                                                                                                                                                                                         
                                                                                                                                                                                                                                        size=imagesize(0,0,99,58);
                                                                                                                                                                                                                                        size=58


                                                                                                                                                                                                                                      Получается 86-58=28 "лишних" байт. То есть по всем видам по 3 байта на строку + выравнивание до 16 бит.




                                                                                                                                                                                                                                      P.S. Я чувствую себя мастером, выполняющим подделку...
                                                                                                                                                                                                                                        Моя гипотеза [дожил, в проганье гипотезы... :lool:, все-таки как-то шатко это все...] оказалась верна: выравнивание 3 байта. Если строка одна, то выравнивание 2 байта.

                                                                                                                                                                                                                                        ExpandedWrap disabled
                                                                                                                                                                                                                                          [w][w][h][h][bit line][alignment]
                                                                                                                                                                                                                                                      [bit line][alignment]
                                                                                                                                                                                                                                                      [bit line][alignment]
                                                                                                                                                                                                                                                      [bit line][alignment]
                                                                                                                                                                                                                                          .................................
                                                                                                                                                                                                                                                      [bit line][alignment]


                                                                                                                                                                                                                                        Где-то ведь в мануале видел, что 10+4+4+4.... Не помню где. :unsure:

                                                                                                                                                                                                                                        Добавлено
                                                                                                                                                                                                                                        Функцию совершенно переделал, а все равно 11 строк... :lol:
                                                                                                                                                                                                                                          Hi!
                                                                                                                                                                                                                                          kbhit() из conio.h работает только в консольных Win32 прогах афаик. Так что в либе Der Meister'a нельзя пока написать чё-нить вроде:

                                                                                                                                                                                                                                          while(!kbhit()) //с getch так нифига не выйдет, она возвращает символ, и пока чё-нить на клавиатуре не нажмёшь, цикл не начнёт выполняться
                                                                                                                                                                                                                                          {
                                                                                                                                                                                                                                          SleepEx(100,FALSE); //для задержки на 100 мс в windows.h.
                                                                                                                                                                                                                                          cleardevice();
                                                                                                                                                                                                                                          setcolor(rand()%15);
                                                                                                                                                                                                                                          outtextxy(rand()%640,rand()%480,"\052"); //рисуем на случайн.месте звёздочку
                                                                                                                                                                                                                                          }

                                                                                                                                                                                                                                          Это типа скринсейвер такой:)
                                                                                                                                                                                                                                          kbhit() есть в ещё одной реализации BGI на винде - WinBGI. Я просто посмотрел её исходник - вроде там всё просто. Исходник WinBGI - см. http://www.garret.ru/~knizhnik/winbgi.zip
                                                                                                                                                                                                                                          Ридми к WinBGI - см. http://www.garret.ru/~knizhnik/readme.txt
                                                                                                                                                                                                                                          P.S. Я вообще только начинаю кодить, так что если чё глупое сказал, извиняюсь.
                                                                                                                                                                                                                                          Сообщение отредактировано: angrylion -
                                                                                                                                                                                                                                            kbhit реализуемо через GetKeyboardState
                                                                                                                                                                                                                                              Цитата trainer @
                                                                                                                                                                                                                                              kbhit реализуемо через GetKeyboardState


                                                                                                                                                                                                                                              Само собой. Просто ДМ почему-то уверен, что kbhit работает в GUI-приложениях. Или имеет более приоритетные фичи для реализации.
                                                                                                                                                                                                                                                :wacko: На мой вопрос так никто и не ответил.... :wacko:

                                                                                                                                                                                                                                                Похоже файл придется назвать DGML.h, а в исходнике писать так:

                                                                                                                                                                                                                                                ExpandedWrap disabled
                                                                                                                                                                                                                                                  #ifdef _WINDOWS_
                                                                                                                                                                                                                                                  #include <dgml.h>
                                                                                                                                                                                                                                                  #else
                                                                                                                                                                                                                                                  #include <graphics.h>
                                                                                                                                                                                                                                                  #include <dos.h>
                                                                                                                                                                                                                                                  //etc.
                                                                                                                                                                                                                                                  #endif
                                                                                                                                                                                                                                                  Цитата Der_Meister @
                                                                                                                                                                                                                                                  А для неконсольных есть getch, которая уже реализована, или опять переопределять...


                                                                                                                                                                                                                                                  Нет, знамо дело... В смысле, нету ее.

                                                                                                                                                                                                                                                  Цитата Der_Meister @
                                                                                                                                                                                                                                                  На мой вопрос так никто и не ответил....


                                                                                                                                                                                                                                                  Народу, видать, по-барабану... Ты писАтель тут главный - тебе и решать... ;)
                                                                                                                                                                                                                                                  Сообщение отредактировано: barazuk -
                                                                                                                                                                                                                                                    Инициализация самой библиотеки осуществляется, если она подключена, независимо от того, вызывались ее функции...


                                                                                                                                                                                                                                                    *kbhit реализована


                                                                                                                                                                                                                                                    getch работает только в инициализированном графическом режиме из-за цикла обработки сообщений. Можно это обойти, создавая при инициализации окно 1х1 пиксел...


                                                                                                                                                                                                                                                    Включение заголовков теперь выглядит так:

                                                                                                                                                                                                                                                    ExpandedWrap disabled
                                                                                                                                                                                                                                                      #ifndef _BORLANDC_
                                                                                                                                                                                                                                                      #include "../dgml/dgml_init.h"
                                                                                                                                                                                                                                                      #else
                                                                                                                                                                                                                                                      #include <graphics.h>
                                                                                                                                                                                                                                                      #include <conio.h>
                                                                                                                                                                                                                                                      #include <dos.h>
                                                                                                                                                                                                                                                      #endif


                                                                                                                                                                                                                                                    Добавлено
                                                                                                                                                                                                                                                    Цитата barazuk @
                                                                                                                                                                                                                                                    Народу, видать, по-барабану... Ты писАтель тут главный - тебе и решать...

                                                                                                                                                                                                                                                    Решил. Стереть 3 строки никто не обломается, написать тоже... И вообще, лабу можно сдавать вместе с DGML-дефайнами. Кому какое дело до них? А на вопрос, зачем они нужно, отвечать "для отладки в нормальной среде разработки"...


                                                                                                                                                                                                                                                    Кстати, я тут с удивлением обнаружил, что в bc3.1 не определен тип bool. :blink:

                                                                                                                                                                                                                                                    Добавлено
                                                                                                                                                                                                                                                    Цитата angrylion @
                                                                                                                                                                                                                                                    Так что в либе Der Meister'a нельзя пока написать чё-нить вроде:

                                                                                                                                                                                                                                                    while(!kbhit()) //с getch так нифига не выйдет, она возвращает символ, и пока чё-нить на клавиатуре не нажмёшь, цикл не начнёт выполняться
                                                                                                                                                                                                                                                    {
                                                                                                                                                                                                                                                    SleepEx(100,FALSE); //для задержки на 100 мс в windows.h.
                                                                                                                                                                                                                                                    cleardevice();
                                                                                                                                                                                                                                                    setcolor(rand()%15);
                                                                                                                                                                                                                                                    outtextxy(rand()%640,rand()%480,"\052"); //рисуем на случайн.месте звёздочку
                                                                                                                                                                                                                                                    }


                                                                                                                                                                                                                                                    Теперь модно. :) И еще в DGML есть delay() - ожидание в мс и sleep() - в секундах.

                                                                                                                                                                                                                                                    Сейчас залью последнюю версию...

                                                                                                                                                                                                                                                    Добавлено
                                                                                                                                                                                                                                                    Еще хорошая новость: уродский макрос #define getch DGML::_getch удален и больше никогда такого не будет. :D
                                                                                                                                                                                                                                                      http://heavysoft.org/dwn/dgml/DGML_sources330.rar

                                                                                                                                                                                                                                                      В архиве только исходнике и список реализованных функций. Версия промежуточная, нестабильная. Дистрибутива к ней не будет...
                                                                                                                                                                                                                                                        + getarccoords

                                                                                                                                                                                                                                                        Добавлено
                                                                                                                                                                                                                                                        + getfillsettings
                                                                                                                                                                                                                                                        * textheight

                                                                                                                                                                                                                                                        Добавлено
                                                                                                                                                                                                                                                        + textheight
                                                                                                                                                                                                                                                        + textwidth
                                                                                                                                                                                                                                                          В очередной раз переписана getch.
                                                                                                                                                                                                                                                          На 100% стал работать пример closegraph.
                                                                                                                                                                                                                                                          Исправлен баг в getpixel.


                                                                                                                                                                                                                                                          Прикрепляю довольно интересный примерчик к getpixel.
                                                                                                                                                                                                                                                          Прикреплённый файлПрикреплённый файлgetpixel.rar (47.67 Кбайт, скачиваний: 208)
                                                                                                                                                                                                                                                            Оказывается в bc структуры ВСЕГДА передаются по указателю :blink:.

                                                                                                                                                                                                                                                            +moveto
                                                                                                                                                                                                                                                            *outtext
                                                                                                                                                                                                                                                            +setfillstyle

                                                                                                                                                                                                                                                            Добавлено
                                                                                                                                                                                                                                                            Выложен дистрибутив версии 0.3.80
                                                                                                                                                                                                                                                            Вики обновлена (http://www.sources.ru/wiki/doku.php?id=projects:dgml)

                                                                                                                                                                                                                                                            Полный дистрибутив (107 Кб)

                                                                                                                                                                                                                                                            Сборник примеров использования DGML (1,69 Мб)



                                                                                                                                                                                                                                                            P.S. А модеров тут нынче нет? А то я хотел пост к шапке прилепить... :unsure:

                                                                                                                                                                                                                                                            Добавлено
                                                                                                                                                                                                                                                            Сборник примеров - исходник + бинарник BC3.1 + бинарник DGML.

                                                                                                                                                                                                                                                            Примерами снабжены следующие функции:
                                                                                                                                                                                                                                                            ExpandedWrap disabled
                                                                                                                                                                                                                                                              arc.cpp
                                                                                                                                                                                                                                                              bar.cpp
                                                                                                                                                                                                                                                              bar3d.cpp
                                                                                                                                                                                                                                                              circle.cpp
                                                                                                                                                                                                                                                              cleardevice.cpp
                                                                                                                                                                                                                                                              closegraph.cpp
                                                                                                                                                                                                                                                              drawpoly.cpp
                                                                                                                                                                                                                                                              ellipse.cpp
                                                                                                                                                                                                                                                              fillellipse.cpp
                                                                                                                                                                                                                                                              fillpoly.cpp
                                                                                                                                                                                                                                                              floodfill.cpp
                                                                                                                                                                                                                                                              getarccoords.cpp
                                                                                                                                                                                                                                                              getbkcolor.cpp
                                                                                                                                                                                                                                                              getcolor.cpp
                                                                                                                                                                                                                                                              getfillpattern.cpp
                                                                                                                                                                                                                                                              getfillsettings.cpp
                                                                                                                                                                                                                                                              getmaxcolors.cpp
                                                                                                                                                                                                                                                              getmaxx.cpp
                                                                                                                                                                                                                                                              getmaxy.cpp
                                                                                                                                                                                                                                                              getpixel.cpp
                                                                                                                                                                                                                                                              getx.cpp
                                                                                                                                                                                                                                                              gety.cpp
                                                                                                                                                                                                                                                              initgraph.cpp
                                                                                                                                                                                                                                                              line.cpp
                                                                                                                                                                                                                                                              linerel.cpp
                                                                                                                                                                                                                                                              lineto.cpp
                                                                                                                                                                                                                                                              moverel.cpp
                                                                                                                                                                                                                                                              moveto.cpp
                                                                                                                                                                                                                                                              putpixel.cpp
                                                                                                                                                                                                                                                              rectangle.cpp
                                                                                                                                                                                                                                                              setbkcolor.cpp
                                                                                                                                                                                                                                                              setcolor.cpp
                                                                                                                                                                                                                                                              setfillpattern.cpp
                                                                                                                                                                                                                                                              setfillstyle.cpp
                                                                                                                                                                                                                                                              settextjustify.cpp
                                                                                                                                                                                                                                                              sleep.cpp
                                                                                                                                                                                                                                                              textheight.cpp
                                                                                                                                                                                                                                                              textwidth.cpp
                                                                                                                                                                                                                                                              +sound
                                                                                                                                                                                                                                                              +nosound

                                                                                                                                                                                                                                                              DGML обзавелась звуком. Благодаря barazuk'у. Именно его перу принадлежит основная функциональность файлов dgml_speaker.cpp и dgml_speaker.h

                                                                                                                                                                                                                                                              Прикрепляю демонстрационный пример.
                                                                                                                                                                                                                                                              Прикреплённый файлПрикреплённый файлdelay.rar (24.65 Кбайт, скачиваний: 197)
                                                                                                                                                                                                                                                                исходники версии 4.03

                                                                                                                                                                                                                                                                Добавлено
                                                                                                                                                                                                                                                                Цитата
                                                                                                                                                                                                                                                                ║/* Emits a 7-Hz tone for 10 seconds. ■
                                                                                                                                                                                                                                                                ║ ▒
                                                                                                                                                                                                                                                                ║ True story: 7 Hz is the resonant ▒
                                                                                                                                                                                                                                                                ║ frequency of a chicken's skull cavity. ▒
                                                                                                                                                                                                                                                                ║ This was determined empirically in ▒
                                                                                                                                                                                                                                                                ║ Australia, where a new factory ▒
                                                                                                                                                                                                                                                                ║ generating 7-Hz tones was located too ▒
                                                                                                                                                                                                                                                                ║ close to a chicken ranch: When the ▒
                                                                                                                                                                                                                                                                ║ factory started up, all the chickens ▒
                                                                                                                                                                                                                                                                ║ died. ▒
                                                                                                                                                                                                                                                                ║ ▒
                                                                                                                                                                                                                                                                ║ Your PC may not be able to emit a 7-Hz tone. */


                                                                                                                                                                                                                                                                Борландоский пример генерации частоты 7 герц, который, по заявлению разработчиков, убивает цыплят, мой спикер воспроизвести не смог. :D
                                                                                                                                                                                                                                                                Прикреплённый файлПрикреплённый файлDGML403.rar (19.23 Кбайт, скачиваний: 201)
                                                                                                                                                                                                                                                                  Простите за ламерство, а это все дело можно как-нибуть использовать в С#(например в виде подключенной dll-ки), и если да то как?
                                                                                                                                                                                                                                                                    Цитата GazOn @


                                                                                                                                                                                                                                                                    из C# нельзя. Из MC++ можно. Из C# можно использовать либо dll на чистом C (DllImport), либо регистрировать dll на C++ как COM библиотеку.
                                                                                                                                                                                                                                                                      подскажите начинающему, почему у меня не работает DGML??? я скопировал graphics.h и DGML.lib в соответственные папки, а после того, как начинаю компилировать пример из архива "examples_380" выдается ошибка "[Linker Error] Unresolved external '_main' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\C0X32.OBJ" что мне надо сделать??? подскажите пожалуйста бедному студенту! :(
                                                                                                                                                                                                                                                                        susanin
                                                                                                                                                                                                                                                                        Попробуй скачать дистрибутив http://heavysoft.org/dwn/dgml/distr_262.rar

                                                                                                                                                                                                                                                                        Там в папке example\BCB6 лежит файл проекта для Borland Builder'a с примером, уже настроенный для работы с DGML.

                                                                                                                                                                                                                                                                        Скорее всего, в проекте не подключена DGML.lib (у меня билдера нет, точную инструкцию дать не могу...)
                                                                                                                                                                                                                                                                          Цитата De_________ @
                                                                                                                                                                                                                                                                          Попробуй скачать дистрибутив http://heavysoft.org/dwn/dgml/distr_262.rar

                                                                                                                                                                                                                                                                          Там в папке example\BCB6 лежит файл проекта для Borland Builder'a с примером, уже настроенный для работы с DGML.

                                                                                                                                                                                                                                                                          Скорее всего, в проекте не подключена DGML.lib (у меня билдера нет, точную инструкцию дать не могу...)

                                                                                                                                                                                                                                                                          я скачал, но при открытии этого файла выдается такая ошибка "the project's target could not be found in file Test.cpp. The project's target is commonly WinMain or DllEntryPoint." помогите мне пожалуйста настроить DGML!!! я уже не знаю как мне быть!!
                                                                                                                                                                                                                                                                            susanin
                                                                                                                                                                                                                                                                            Попытались мы с Nich'ем скомпилировать под билдером. Выяснилась куча нехороших вещей о БЦБ. Например, в нем объявляются функции random и randomize, которых в стандарте нет.

                                                                                                                                                                                                                                                                            Так что версия для борланда откладывается.

                                                                                                                                                                                                                                                                            Я бы посоветовал вообще перейти на нормальный компилятор :), но все-таки через пару дней, надеюсь, версия для BCB будет собрана. ;)
                                                                                                                                                                                                                                                                              Поставил билдер. Библиотека собирается. Пример тоже компилируется, собирается. Только не работает. :wall: Черный экран и все.

                                                                                                                                                                                                                                                                              А вот со старой пикселы выводятся, но delay, getch и keyhit там не определены :(
                                                                                                                                                                                                                                                                              Прикреплённый файлПрикреплённый файлDGML_403_BCB.rar (192.61 Кбайт, скачиваний: 208)
                                                                                                                                                                                                                                                                                Цитата De_________ @
                                                                                                                                                                                                                                                                                Выяснилась куча нехороших вещей о БЦБ. Например, в нем объявляются функции random и randomize, которых в стандарте нет.
                                                                                                                                                                                                                                                                                Ну наконец-то вы узнаете, что в C/C++ есть понятие "условная компиляция" :D
                                                                                                                                                                                                                                                                                  trainer
                                                                                                                                                                                                                                                                                  Об этом мы давно знаем. :rolleyes:

                                                                                                                                                                                                                                                                                  Вот только уж сильно пошло получается... :lol:
                                                                                                                                                                                                                                                                                    Рекомендую:
                                                                                                                                                                                                                                                                                    1) выкинуть отовсюду #pragma comment(lib, "DGML.lib") либо, по-крайней мере, сделать условно-компилируемой
                                                                                                                                                                                                                                                                                    2) перейти на makefile'ы. Это под именем makefile.bcb засунуть в папку src
                                                                                                                                                                                                                                                                                    ExpandedWrap disabled
                                                                                                                                                                                                                                                                                      # Makefile for DGML
                                                                                                                                                                                                                                                                                      # Borland C++ for Win32
                                                                                                                                                                                                                                                                                      #
                                                                                                                                                                                                                                                                                      # Usage:
                                                                                                                                                                                                                                                                                      #  make
                                                                                                                                                                                                                                                                                      # or
                                                                                                                                                                                                                                                                                      #  make additional_parameters
                                                                                                                                                                                                                                                                                      # where additional_parameters are pairs param=value delimited by spaces
                                                                                                                                                                                                                                                                                      # additional parameters:
                                                                                                                                                                                                                                                                                      #  DEBUG   - build debug version
                                                                                                                                                                                                                                                                                      #  ARFLAGS - archiver(TLIB) flags
                                                                                                                                                                                                                                                                                      #  CFLAGS  - C++-compiler flags
                                                                                                                                                                                                                                                                                      #  YFLAGS  - YACC flags(not used, reserved)
                                                                                                                                                                                                                                                                                      #  LFLAGS  - LEX flags(not used, reserved)
                                                                                                                                                                                                                                                                                      #  RCFLAG  - resource script compiler flags
                                                                                                                                                                                                                                                                                      #  BINDIR  - path to bin directory(where will be placed obj's, lib and exe)
                                                                                                                                                                                                                                                                                      #  BCB     - path to Borland C++ Builder root directory
                                                                                                                                                                                                                                                                                      # ------------ Borland C++ ------------
                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                      # variables
                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                      # tools
                                                                                                                                                                                                                                                                                      CC = bcc32.exe
                                                                                                                                                                                                                                                                                      AS = bcc32.exe
                                                                                                                                                                                                                                                                                      RC = brcc32.exe
                                                                                                                                                                                                                                                                                      LD = ilink32.exe
                                                                                                                                                                                                                                                                                      AR = tlib.exe
                                                                                                                                                                                                                                                                                      YACC = bison.exe
                                                                                                                                                                                                                                                                                      LEX = flex.exe
                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                      LN = copy
                                                                                                                                                                                                                                                                                      RM = -del
                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                      ASFLAGS =
                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                      !if !$d(BCB)
                                                                                                                                                                                                                                                                                      BCB = $(MAKEDIR)\..
                                                                                                                                                                                                                                                                                      !endif
                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                      !if !$d(DEBUG)
                                                                                                                                                                                                                                                                                      # missed DEBUG variable means no debug
                                                                                                                                                                                                                                                                                      DEBUG = 0
                                                                                                                                                                                                                                                                                      !endif
                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                      !if !$d(CFLAGS)
                                                                                                                                                                                                                                                                                      !if $(DEBUG)
                                                                                                                                                                                                                                                                                      CFLAGS = -a -d -k- -ff -fp -WM -D_DEBUG -Od -v
                                                                                                                                                                                                                                                                                      !else
                                                                                                                                                                                                                                                                                      CFLAGS = -a -d -k- -ff -fp -O2 -WM -w-csu
                                                                                                                                                                                                                                                                                      !endif
                                                                                                                                                                                                                                                                                      !endif
                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                      !if !$d(ARFLAGS)
                                                                                                                                                                                                                                                                                      ARFLAGS = /P128 /C /u /a
                                                                                                                                                                                                                                                                                      !endif
                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                      !if !$d(LDFLAGS)
                                                                                                                                                                                                                                                                                      !if $(DEBUG)
                                                                                                                                                                                                                                                                                      LDFLAGS = /Tpe /ap /Gn /v /x c0d32.obj sysinit.obj
                                                                                                                                                                                                                                                                                      !else
                                                                                                                                                                                                                                                                                      LDFLAGS = /Tpe /ap /Gn /x c0w32.obj sysinit.obj
                                                                                                                                                                                                                                                                                      !endif
                                                                                                                                                                                                                                                                                      !endif
                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                      !if !$d(YFLAGS)
                                                                                                                                                                                                                                                                                      YFLAGS  = -vdyl
                                                                                                                                                                                                                                                                                      !endif
                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                      !if !$d(LFLAGS)
                                                                                                                                                                                                                                                                                      LFLAGS = -ist
                                                                                                                                                                                                                                                                                      !endif
                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                      !if !$d(RCFLAGS)
                                                                                                                                                                                                                                                                                      RCFLAGS = -w32
                                                                                                                                                                                                                                                                                      !endif
                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                      !if !$d(BINDIR)
                                                                                                                                                                                                                                                                                      BINDIR = ..\lib\bcb
                                                                                                                                                                                                                                                                                      !endif
                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                      O = obj
                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                      DEFS =
                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                      LIBS = cw32mt.lib import32.lib rtl.lib
                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                      SRCDIR = src
                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                      INCDIR = ..\include
                                                                                                                                                                                                                                                                                      TESTSRCDIR = ..\example
                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                      LIBDGML = $(BINDIR)\libdgml.lib
                                                                                                                                                                                                                                                                                      TESTEXE = $(BINDIR)\dgmltest.exe
                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                      BCB_LIBPATH = $(BCB)\lib;$(BCB)\lib\PSdk
                                                                                                                                                                                                                                                                                      BCB_OBJPATH = $(BCB)\lib;$(BCB)\lib\obj
                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                      LIB_OBJS = $(BINDIR)\dgml.$(O) $(BINDIR)\dgml_error.$(O) $(BINDIR)\dgmlcore.$(O) \
                                                                                                                                                                                                                                                                                       $(BINDIR)\graphics.$(O) $(BINDIR)\input.$(O)
                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                      LIB_OBJPS = +$(BINDIR)\dgml.$(O) +$(BINDIR)\dgml_error.$(O) +$(BINDIR)\dgmlcore.$(O) \
                                                                                                                                                                                                                                                                                       +$(BINDIR)\graphics.$(O) +$(BINDIR)\input.$(O)
                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                      # targets
                                                                                                                                                                                                                                                                                      all : $(LIBDGML)
                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                      bindir_exist :
                                                                                                                                                                                                                                                                                          if not exist $(BINDIR)\NUL mkdir $(BINDIR)
                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                      {$(SRCDIR)}.cpp{$(BINDIR)}.$(O) :
                                                                                                                                                                                                                                                                                          $(CC) -c -I"$(INCDIR)" -I"$(SRCDIR)" $(DEFS) -o$@ $(CFLAGS) $<
                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                      $(LIBDGML) : bindir_exist $(LIB_OBJS)
                                                                                                                                                                                                                                                                                          $(RM) $(LIBDGML)
                                                                                                                                                                                                                                                                                          $(AR) $(LIBDGML) $(ARFLAGS) $(LIB_OBJPS)
                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                      $(TESTEXE) : $(TESTSRCDIR)\dgmltest.cpp $(LIBDGML)
                                                                                                                                                                                                                                                                                          $(CC) -I"$(INCDIR)" -I"$(SRCDIR)" -e$<  $(TESTSRCDIR)\dgmltest.cpp $(LIBS) $(LIBDGML)
                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                      clean :
                                                                                                                                                                                                                                                                                          $(RM) $(BINDIR)\*.obj
                                                                                                                                                                                                                                                                                          $(RM) $(BINDIR)\*.lib
                                                                                                                                                                                                                                                                                          $(RM) $(BINDIR)\*.tds
                                                                                                                                                                                                                                                                                          $(RM) $(BINDIR)\*.exe
                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                      test : bindir_exist $(TESTEXE)
                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                      rebuild : clean all
                                                                                                                                                                                                                                                                                    Для компиляции можно написать дополнительный bat-файл
                                                                                                                                                                                                                                                                                    ExpandedWrap disabled
                                                                                                                                                                                                                                                                                      @echo off
                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                      rem set variable BCB to path to Borland C++ Builder root directory on your PC
                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                      set BCB=c:\programmer\CBuilder6
                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                      make -f makefile.bcb rebuild >dgml_bcb.lst
                                                                                                                                                                                                                                                                                      make -f makefile.bcb test >dgml_bcb_test.lst


                                                                                                                                                                                                                                                                                    Добавлено
                                                                                                                                                                                                                                                                                    Кстати, откомпилировал я пример в BCB6(через этот makefile) - работает

                                                                                                                                                                                                                                                                                    Добавлено
                                                                                                                                                                                                                                                                                    Да, #include <graphics.h> пришлось перенести в конец списка.
                                                                                                                                                                                                                                                                                      Цитата trainer @
                                                                                                                                                                                                                                                                                      Кстати, откомпилировал я пример в BCB6(через этот makefile)

                                                                                                                                                                                                                                                                                      Хм. А а я че-то туплю...


                                                                                                                                                                                                                                                                                      Цитата trainer @
                                                                                                                                                                                                                                                                                      set BCB=c:\programmer\CBuilder6

                                                                                                                                                                                                                                                                                      Это зачем?

                                                                                                                                                                                                                                                                                      Я так понимаю, в бате надо прописать "set PATH=C:\Program Files\Borland\CBuilder6\Bin\", чтобы make находился? Тогда появляются баги...


                                                                                                                                                                                                                                                                                      Если прописать напрямую:
                                                                                                                                                                                                                                                                                      Цитата
                                                                                                                                                                                                                                                                                      C:\"Program Files"\Borland\CBuilder6\Bin\make -f makefile.bcb rebuild >dgml_bcb.lst

                                                                                                                                                                                                                                                                                      не может найти makefile

                                                                                                                                                                                                                                                                                      Цитата
                                                                                                                                                                                                                                                                                      MAKE Version 5.2 Copyright © 1987, 2000 Borland
                                                                                                                                                                                                                                                                                      Fatal: Unable to open makefile


                                                                                                                                                                                                                                                                                      :huh:

                                                                                                                                                                                                                                                                                      Добавлено
                                                                                                                                                                                                                                                                                      доперло зачем BCB в environment :lol:

                                                                                                                                                                                                                                                                                      Добавлено
                                                                                                                                                                                                                                                                                      Цитата
                                                                                                                                                                                                                                                                                      MAKE Version 5.2 Copyright © 1987, 2000 Borland
                                                                                                                                                                                                                                                                                      Fatal: Unable to open makefile
                                                                                                                                                                                                                                                                                        Запускаешь откуда и как?

                                                                                                                                                                                                                                                                                        Добавлено
                                                                                                                                                                                                                                                                                        Этот set BCB=... в принципе не нужен. Так, на всякий случай. :)
                                                                                                                                                                                                                                                                                          Из cmd. Текущая директория - та, в которой все исходники и мейкфайл.
                                                                                                                                                                                                                                                                                            У makefile'а какое имя?
                                                                                                                                                                                                                                                                                              Цитата trainer @
                                                                                                                                                                                                                                                                                              У makefile'а какое имя?

                                                                                                                                                                                                                                                                                              makefile.bcb
                                                                                                                                                                                                                                                                                                "- По колесу стучал?
                                                                                                                                                                                                                                                                                                - Да.
                                                                                                                                                                                                                                                                                                - Под капот заглядывал?
                                                                                                                                                                                                                                                                                                - Да.
                                                                                                                                                                                                                                                                                                - Ну тогда не знаю."

                                                                                                                                                                                                                                                                                                Добавлено
                                                                                                                                                                                                                                                                                                Может где в имени латинскую букву на кириллическую заменил?

                                                                                                                                                                                                                                                                                                Добавлено
                                                                                                                                                                                                                                                                                                Да, на всякий случай - этот makefile.bcb надо положить туда же, где лежит твой libdgml.bpr
                                                                                                                                                                                                                                                                                                Но к данной проблеме это отношения не имеет. У тебя make почему-то не находит этот makefile.bcb(если ты правильно указал его имя в командной строке/bat-файле)
                                                                                                                                                                                                                                                                                                  Цитата trainer @
                                                                                                                                                                                                                                                                                                  где лежит твой libdgml.bpr

                                                                                                                                                                                                                                                                                                  А проект что ли нужен?? :o

                                                                                                                                                                                                                                                                                                  Я-то думал, раз makefile - то проект вообще не нужен...
                                                                                                                                                                                                                                                                                                    Нет, .bpr не нужен. makefile доолжен лежать в определенном месте.
                                                                                                                                                                                                                                                                                                    Вечером сгруппирую и выложу откорректированные твои исходники и makefile'ы для BCB и MSVC :)
                                                                                                                                                                                                                                                                                                      Цитата trainer @
                                                                                                                                                                                                                                                                                                      Вечером сгруппирую и выложу откорректированные твои исходники и makefile'ы для BCB и MSVC

                                                                                                                                                                                                                                                                                                      thanx! ;)
                                                                                                                                                                                                                                                                                                        Забыл я на работе makefile для MSVC. :) Так что пока только для BCB. Для MSVC - в следующий раз. А там, может, и для MinGW сделаю. :)
                                                                                                                                                                                                                                                                                                        Прикреплённый файлПрикреплённый файлlibdgml_0.2_src.zip (38.62 Кбайт, скачиваний: 193)
                                                                                                                                                                                                                                                                                                          trainer
                                                                                                                                                                                                                                                                                                          Ну теперь ясно, почему у тебя пример работает. :) Версию дистрибутива древнюю взял.


                                                                                                                                                                                                                                                                                                          Вот последняя версия с измененным makefil'ом.


                                                                                                                                                                                                                                                                                                          Осталось выяснить, почему пикселы в примере под BCB не рисуются... :wall:

                                                                                                                                                                                                                                                                                                          Добавлено
                                                                                                                                                                                                                                                                                                          Прикрепить не могу, так что скачиваем здесь:

                                                                                                                                                                                                                                                                                                          http://heavysoft.org/dwn/dgml/dgml413.rar
                                                                                                                                                                                                                                                                                                          Прикреплённый файлПрикреплённый файлav_21324.gif (8.08 Кбайт, скачиваний: 543)
                                                                                                                                                                                                                                                                                                            люди! почему у меня нифига не работает??? как запускать этот DGML????? напишите подробно если можно, какое приложение создавать надо, чтоб работала графика, потому что у меня даже примеры из скаченного архива не работаеют!!! :'(
                                                                                                                                                                                                                                                                                                              susanin
                                                                                                                                                                                                                                                                                                              Скачивай рабочий проект для BCB


                                                                                                                                                                                                                                                                                                              trainer
                                                                                                                                                                                                                                                                                                              В BCB не работает инициализация библиотеки. В dgml.h есть строки:
                                                                                                                                                                                                                                                                                                              ExpandedWrap disabled
                                                                                                                                                                                                                                                                                                                #ifndef __DGML_H__
                                                                                                                                                                                                                                                                                                                class DGML_Stuff
                                                                                                                                                                                                                                                                                                                {
                                                                                                                                                                                                                                                                                                                public:
                                                                                                                                                                                                                                                                                                                    DGML_Stuff(void);
                                                                                                                                                                                                                                                                                                                    ~DGML_Stuff(void);
                                                                                                                                                                                                                                                                                                                };
                                                                                                                                                                                                                                                                                                                DGML_Stuff initializer;
                                                                                                                                                                                                                                                                                                                #endif

                                                                                                                                                                                                                                                                                                              То есть создается один объект, который нигде не используется. Констурктор выглядит так:
                                                                                                                                                                                                                                                                                                              ExpandedWrap disabled
                                                                                                                                                                                                                                                                                                                //инициализируем систему DGML при старте
                                                                                                                                                                                                                                                                                                                DGML_Stuff::DGML_Stuff(void)
                                                                                                                                                                                                                                                                                                                {
                                                                                                                                                                                                                                                                                                                    DGML_Stuff::end_point.x=DGML_WIDTH-1;
                                                                                                                                                                                                                                                                                                                    DGML_Stuff::end_point.y=DGML_HEIGHT-1;
                                                                                                                                                                                                                                                                                                                 
                                                                                                                                                                                                                                                                                                                    DGML_Stuff::init_colors();
                                                                                                                                                                                                                                                                                                                    DGML_Stuff::init_patterns();
                                                                                                                                                                                                                                                                                                                }


                                                                                                                                                                                                                                                                                                              То есть в MSVS это прекрасно работает, объект создается, библиотека инициализируется. В BCB - нет. Так что временно инициализация опять засунута в ф-цию initgraph.

                                                                                                                                                                                                                                                                                                              Еще в BCB проблемы со звуком. библиотеку он собирает даже не спрашивая winmm.lib, хотя должен. Зато при вызове ф-ции sound просто вылетает. линковка winmm.lib ничего не меняет.
                                                                                                                                                                                                                                                                                                                Цитата Der_Meister @
                                                                                                                                                                                                                                                                                                                Версию дистрибутива древнюю взял.
                                                                                                                                                                                                                                                                                                                Ну уж какая была, ту и взял.

                                                                                                                                                                                                                                                                                                                Да, ты скажи, как у тебя вообще dgmltest.cpp компилируется?

                                                                                                                                                                                                                                                                                                                Добавлено
                                                                                                                                                                                                                                                                                                                И еще, я не понял, в чем сермяжная правда такой конструкции?
                                                                                                                                                                                                                                                                                                                ExpandedWrap disabled
                                                                                                                                                                                                                                                                                                                  #ifndef __DGML_H__
                                                                                                                                                                                                                                                                                                                  #define __DGML_H__
                                                                                                                                                                                                                                                                                                                  ...
                                                                                                                                                                                                                                                                                                                  #ifndef __DGML_H__
                                                                                                                                                                                                                                                                                                                  class DGML_Stuff
                                                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                                                  public:
                                                                                                                                                                                                                                                                                                                      DGML_Stuff(void);
                                                                                                                                                                                                                                                                                                                      ~DGML_Stuff(void);
                                                                                                                                                                                                                                                                                                                  };
                                                                                                                                                                                                                                                                                                                  DGML_Stuff initializer;
                                                                                                                                                                                                                                                                                                                  #endif
                                                                                                                                                                                                                                                                                                                  ...
                                                                                                                                                                                                                                                                                                                  #endif
                                                                                                                                                                                                                                                                                                                  Кстати, у меня и под BCB6 и под MSVC7.1 dgmltest просто черное окно. Ничего не пишет.

                                                                                                                                                                                                                                                                                                                  Добавлено
                                                                                                                                                                                                                                                                                                                  Решение таково: в конец файла dgml_stuff.cpp добавить строку
                                                                                                                                                                                                                                                                                                                  ExpandedWrap disabled
                                                                                                                                                                                                                                                                                                                    DGML_Stuff initializer;


                                                                                                                                                                                                                                                                                                                  Добавлено
                                                                                                                                                                                                                                                                                                                  P.S. Обязательно оставляй в конце файла пустую строку - не всем компиляторам нравится завершение файла непустой строкой.
                                                                                                                                                                                                                                                                                                                    sound, кстати, тоже работает.
                                                                                                                                                                                                                                                                                                                      Цитата trainer @
                                                                                                                                                                                                                                                                                                                      И еще, я не понял, в чем сермяжная правда такой конструкции?

                                                                                                                                                                                                                                                                                                                      Блин, опять баг из старого хидера..

                                                                                                                                                                                                                                                                                                                      Должно быть:

                                                                                                                                                                                                                                                                                                                      ExpandedWrap disabled
                                                                                                                                                                                                                                                                                                                        #ifndef __DGML_H__
                                                                                                                                                                                                                                                                                                                        #define __DGML_H__
                                                                                                                                                                                                                                                                                                                        ...
                                                                                                                                                                                                                                                                                                                        #ifndef __DGML_STUFF_H__
                                                                                                                                                                                                                                                                                                                        class DGML_Stuff
                                                                                                                                                                                                                                                                                                                        {
                                                                                                                                                                                                                                                                                                                        public:
                                                                                                                                                                                                                                                                                                                            DGML_Stuff(void);
                                                                                                                                                                                                                                                                                                                            ~DGML_Stuff(void);
                                                                                                                                                                                                                                                                                                                        };
                                                                                                                                                                                                                                                                                                                        DGML_Stuff initializer;
                                                                                                                                                                                                                                                                                                                        #endif
                                                                                                                                                                                                                                                                                                                        ...
                                                                                                                                                                                                                                                                                                                        #endif



                                                                                                                                                                                                                                                                                                                      Цитата trainer @
                                                                                                                                                                                                                                                                                                                      Кстати, у меня и под BCB6 и под MSVC7.1 dgmltest просто черное окно. Ничего не пишет.

                                                                                                                                                                                                                                                                                                                      А после добавления
                                                                                                                                                                                                                                                                                                                      Цитата trainer @
                                                                                                                                                                                                                                                                                                                      в конец файла dgml_stuff.cpp добавить строку

                                                                                                                                                                                                                                                                                                                      заработало?
                                                                                                                                                                                                                                                                                                                        Цитата Der_Meister @
                                                                                                                                                                                                                                                                                                                        заработало?
                                                                                                                                                                                                                                                                                                                        да. А куда же оно денется? :)
                                                                                                                                                                                                                                                                                                                          Цитата trainer @
                                                                                                                                                                                                                                                                                                                          sound, кстати, тоже работает.

                                                                                                                                                                                                                                                                                                                          Без бубна? :huh:

                                                                                                                                                                                                                                                                                                                          Вот собранный мной exe, который вылетает. Может только на моей машине?
                                                                                                                                                                                                                                                                                                                          Прикреплённый файлПрикреплённый файлdgmltest.exe.jpg (72.5 Кбайт, скачиваний: 420)
                                                                                                                                                                                                                                                                                                                            Цитата Der_Meister @
                                                                                                                                                                                                                                                                                                                            Без бубна?
                                                                                                                                                                                                                                                                                                                            и без бубна и без плясок. :)
                                                                                                                                                                                                                                                                                                                            Кстати, и в MinGW собирается и работает. Только makefile для MinGW мне не нравится. Что-то я не могу его заставить искать его же библиотеки libgdi32.a и libwinmm.a. Пришлось явно указать их местоположение. :)

                                                                                                                                                                                                                                                                                                                            Цитата Der_Meister @
                                                                                                                                                                                                                                                                                                                            Вот собранный мной exe, который вылетает. Может только на моей машине?
                                                                                                                                                                                                                                                                                                                            Может
                                                                                                                                                                                                                                                                                                                            Цитата Der_Meister @
                                                                                                                                                                                                                                                                                                                            Блин, опять баг из старого хидера..
                                                                                                                                                                                                                                                                                                                            ? :D
                                                                                                                                                                                                                                                                                                                              Компилировать:
                                                                                                                                                                                                                                                                                                                              Для Borland C++ Builder: mk bcb
                                                                                                                                                                                                                                                                                                                              Для Microsoft Visual C++.NEt 2003: mk vc71
                                                                                                                                                                                                                                                                                                                              Под MSVC6 с оригинальным Platform SDK не компилируется.
                                                                                                                                                                                                                                                                                                                              Прикреплённый файлПрикреплённый файлlibdgml_src.zip (45.17 Кбайт, скачиваний: 667)
                                                                                                                                                                                                                                                                                                                                В общем дело вот в чем... скачал с сайта архивы с полным дистрибутивом... файла graphics.h там нету... я хочу на borland 6 рисовать Dos Graphics Migration Library... подскажите
                                                                                                                                                                                                                                                                                                                                  Dgedit
                                                                                                                                                                                                                                                                                                                                  http://forum.sources.ru/index.php?act=Atta...post&id=1307788

                                                                                                                                                                                                                                                                                                                                  Вот это качаешь. Там есть файл проекта - должен работать.

                                                                                                                                                                                                                                                                                                                                  Если нет - mk.bat 100% работоспособен.
                                                                                                                                                                                                                                                                                                                                    скачал... расспаковал... открываю прокт Борланд пишет The project's target could not be found in file DGML.cpp. The project's target is commonly WinMain or DllEntryPoint.... a mk.bat ругается, что любая функция какую он бы ни выполнял не является внутренней или внешней...
                                                                                                                                                                                                                                                                                                                                      Dgedit
                                                                                                                                                                                                                                                                                                                                      Тогда вот этот:
                                                                                                                                                                                                                                                                                                                                      http://heavysoft.org/dwn/dgml/421BCB.rar
                                                                                                                                                                                                                                                                                                                                        Проект запустился... в графический режим перешел, но сразу же вышел, ничего кроме мерцания экрана не было. в программе показывает на строку if (color == getpixel(x, y)) и ругается на Comparing signed and unsigned values...
                                                                                                                                                                                                                                                                                                                                          Цитата
                                                                                                                                                                                                                                                                                                                                          Чтобы использовать DGML с другим компилятором, вы должны перекомпилировать библиотеку и собрать ее в static library, которую затем будете подключать.

                                                                                                                                                                                                                                                                                                                                          А как её перекомпилировать и собрать для Dev C++? :huh:
                                                                                                                                                                                                                                                                                                                                            Цитата DFooz @
                                                                                                                                                                                                                                                                                                                                            А как её перекомпилировать и собрать для Dev C++?
                                                                                                                                                                                                                                                                                                                                            Смотри эмуляция BGI графики (сообщение #1149201), только там старая версия dgml.
                                                                                                                                                                                                                                                                                                                                              спасибо. Если чисто код DGMLTEST.CPP пробую запустить, то ничего не работает. А если запустить через проект dgmltest.dev, то всё работает. Получается, обязательно надо проект создавать?



                                                                                                                                                                                                                                                                                                                                              А если для новой, как её скомпилировать? Создать новый проект и все исходники туда кинуть? У меня 10 ошибок выдал. :unsure:
                                                                                                                                                                                                                                                                                                                                              Сообщение отредактировано: DFooz -
                                                                                                                                                                                                                                                                                                                                                Цитата DFooz @
                                                                                                                                                                                                                                                                                                                                                А если для новой, как её скомпилировать? Создать новый проект и все исходники туда кинуть? У меня 10 ошибок выдал.

                                                                                                                                                                                                                                                                                                                                                Надо библиотеки подключать.

                                                                                                                                                                                                                                                                                                                                                Цитата
                                                                                                                                                                                                                                                                                                                                                Цитата Romtek @
                                                                                                                                                                                                                                                                                                                                                Для компиляции libdgml в Dev-Cpp нужно указать линкеру ключ
                                                                                                                                                                                                                                                                                                                                                -lgdi32

                                                                                                                                                                                                                                                                                                                                                Для компиляции dgmltest нужно указать линкеру ключи
                                                                                                                                                                                                                                                                                                                                                -lgdi32 -ldgml



                                                                                                                                                                                                                                                                                                                                                То есть все из папки src - это библиотека.

                                                                                                                                                                                                                                                                                                                                                А gdmltest.cpp - это уже пример, к нему надо подключать DGML (-lgml)
                                                                                                                                                                                                                                                                                                                                                  Без скомпилированной библиотеки программа-тест работать не будет. Поэтому я всё собрал в проект .dev
                                                                                                                                                                                                                                                                                                                                                    Der_Meister

                                                                                                                                                                                                                                                                                                                                                    В новой версии у меня не компилируется пример из-за конфликта с getch() из conio.h. Придумай решение проблемы.

                                                                                                                                                                                                                                                                                                                                                    Проверял в Dev-C++.

                                                                                                                                                                                                                                                                                                                                                    Добавлено
                                                                                                                                                                                                                                                                                                                                                    Оказывается нужно было закомментировать строчку #include <conio.h.h>
                                                                                                                                                                                                                                                                                                                                                    А ещё нужно то же самое сделать и с graphics.h.

                                                                                                                                                                                                                                                                                                                                                    Отсюда следующий вопрос: об этом догадается программист или его таки предупредить лучше о возможных косяках при компиляции?

                                                                                                                                                                                                                                                                                                                                                    Нужны также imagesize, moveto, getche.

                                                                                                                                                                                                                                                                                                                                                    А что нужно подключать для sound, delay, random ?
                                                                                                                                                                                                                                                                                                                                                      Цитата Romtek @
                                                                                                                                                                                                                                                                                                                                                      Отсюда следующий вопрос: об этом догадается программист или его таки предупредить лучше о возможных косяках при компиляции?

                                                                                                                                                                                                                                                                                                                                                      Пока не могу проверить... А эти строки вообще нужны? То есть в MSVS с ними идет?


                                                                                                                                                                                                                                                                                                                                                      Цитата Romtek @
                                                                                                                                                                                                                                                                                                                                                      А что нужно подключать для sound, delay, random ?

                                                                                                                                                                                                                                                                                                                                                      Для sound нужна winmm.lib, стандартная мультимедиа подсистема винды.


                                                                                                                                                                                                                                                                                                                                                      А чтобы использовать их в преокте нужен один dgml.h
                                                                                                                                                                                                                                                                                                                                                        settextjustify, setbkcolor тоже не определены.

                                                                                                                                                                                                                                                                                                                                                        В общем, что ни программа, то ошибки из-за неподдерживаемых функций.

                                                                                                                                                                                                                                                                                                                                                        Добавлено
                                                                                                                                                                                                                                                                                                                                                        Цитата Der_Meister @
                                                                                                                                                                                                                                                                                                                                                        То есть в MSVS с ними идет?
                                                                                                                                                                                                                                                                                                                                                        У меня не уставнолена студия, есть только Dev-C++.
                                                                                                                                                                                                                                                                                                                                                          не могли бы вы пожалуйста подробнее написать, куда, ггде, что вставлять и писать :unsure:


                                                                                                                                                                                                                                                                                                                                                          Создаю новый проект в ДЕВс++, добавляю все файлы из папки src.
                                                                                                                                                                                                                                                                                                                                                          В папку DEVCpp\include копирую файлы "dgml_error.h" "dgml.h" "dgml_stuff.h"
                                                                                                                                                                                                                                                                                                                                                          В Tool\Compiler options\compiler ставлю обе галки у компилера и линкера, записал в них, что в кавычках "-lgdi32 -ldgml"

                                                                                                                                                                                                                                                                                                                                                          ЧТо ещё надо сделать?
                                                                                                                                                                                                                                                                                                                                                            Цитата DFooz @
                                                                                                                                                                                                                                                                                                                                                            не могли бы вы пожалуйста подробнее написать, куда, ггде, что вставлять и писать

                                                                                                                                                                                                                                                                                                                                                            Вариант №1: использовать статическую библиотеку (libdgml.a, 1-й проект) и потом подключать её в проект тестируемой программы (2-й проект).
                                                                                                                                                                                                                                                                                                                                                            Для статической библиотеки нужно при создании проекта включить в него все cpp, затем в опциях проекта указать в параметрах Include файлов ключ "-lgdi32" (без кавычек), скомпилировать. Должен создаться файл libdgml.a в папке исходников (если не указать другого пути).
                                                                                                                                                                                                                                                                                                                                                            Для проекта добавить всего один файл-код BGI cpp-программы, указать в окошко Include строку "-lgdi32 -ldgml" (без кавычек), скомпилировать.

                                                                                                                                                                                                                                                                                                                                                            Вариант №2: всё в одном проекте (код DGML+код BGI). Указывать только "-lgdi32" (без кавычек), скомпилировать.
                                                                                                                                                                                                                                                                                                                                                            Заодно выбрать генерацию GUI программы.

                                                                                                                                                                                                                                                                                                                                                            Надеюсь, ничего не упустил.
                                                                                                                                                                                                                                                                                                                                                              Цитата
                                                                                                                                                                                                                                                                                                                                                              Для статической библиотеки нужно при создании проекта включить в него все cpp, затем в опциях проекта указать в параметрах Include файлов ключ "-lgdi32" (без кавычек)

                                                                                                                                                                                                                                                                                                                                                              Создал проект Win32 Static Lib
                                                                                                                                                                                                                                                                                                                                                              в опциях проекта в закладке parameters\linker\ написал "-lgdi32". Т.е. всё правильно сделал, да? Но при компиляции он ошибку выдаёт в файле DGML_Error.cpp:
                                                                                                                                                                                                                                                                                                                                                              ExpandedWrap disabled
                                                                                                                                                                                                                                                                                                                                                                [Warning] no new line at the end of file
                                                                                                                                                                                                                                                                                                                                                                In constructor 'DGML_Error::DGML_Error()'
                                                                                                                                                                                                                                                                                                                                                              и еще чего-то пишет

                                                                                                                                                                                                                                                                                                                                                              Дистрибутив 0.380
                                                                                                                                                                                                                                                                                                                                                              Сообщение отредактировано: DFooz -
                                                                                                                                                                                                                                                                                                                                                                Warnings это некритичные для компиляции сообщения. Хотя trainer уже говорил об этом, изменений пока не видно.
                                                                                                                                                                                                                                                                                                                                                                Надо всего лишь добавить пустую строку в конце файла.

                                                                                                                                                                                                                                                                                                                                                                Файл создаётся?

                                                                                                                                                                                                                                                                                                                                                                Скопируй сюда сообщения компилятора.
                                                                                                                                                                                                                                                                                                                                                                  спасибо, пустые строки вставил.

                                                                                                                                                                                                                                                                                                                                                                  Теперь осталось решит это

                                                                                                                                                                                                                                                                                                                                                                  ExpandedWrap disabled
                                                                                                                                                                                                                                                                                                                                                                    dgml_error.cpp In constructor `DGML_Error::DGML_Error()':
                                                                                                                                                                                                                                                                                                                                                                     
                                                                                                                                                                                                                                                                                                                                                                    dgml_error.cpp `destroy_window' is not a member of `DGML_Stuff'
                                                                                                                                                                                                                                                                                                                                                                     
                                                                                                                                                                                                                                                                                                                                                                    dgml_error.cpp In constructor `DGML_Error::DGML_Error(const char*)':
                                                                                                                                                                                                                                                                                                                                                                     
                                                                                                                                                                                                                                                                                                                                                                    dgml_error.cpp `destroy_window' is not a member of `DGML_Stuff'
                                                                                                                                                                                                                                                                                                                                                                     
                                                                                                                                                                                                                                                                                                                                                                    dgml_error.cpp In constructor `DGML_Error::DGML_Error(const std::string&)':
                                                                                                                                                                                                                                                                                                                                                                     
                                                                                                                                                                                                                                                                                                                                                                    dgml_error.cpp In constructor `DGML_Error::DGML_Error(const std::string&)':
                                                                                                                                                                                                                                                                                                                                                                     
                                                                                                                                                                                                                                                                                                                                                                    dgml_error.cpp `destroy_window' is not a member of `DGML_Stuff'
                                                                                                                                                                                                                                                                                                                                                                     
                                                                                                                                                                                                                                                                                                                                                                    Makefile.win [Build Error]  [dgml_error.o] Error 1


                                                                                                                                                                                                                                                                                                                                                                  Нет, файл не создаётся, только dgml_core.o и Makefile.win
                                                                                                                                                                                                                                                                                                                                                                  Сообщение отредактировано: DFooz -
                                                                                                                                                                                                                                                                                                                                                                    Цитата DFooz @
                                                                                                                                                                                                                                                                                                                                                                    Дистрибутив 0.380
                                                                                                                                                                                                                                                                                                                                                                    Что за дистрибутив такой? Скачай последнюю версию DGML с сайта.
                                                                                                                                                                                                                                                                                                                                                                      это и есть последняя 0.03.80
                                                                                                                                                                                                                                                                                                                                                                        DFooz, покажи свою BGI программу, на которой тестируешь (прикрепи архив к сообщению).

                                                                                                                                                                                                                                                                                                                                                                        Вот мои настройки проекта:
                                                                                                                                                                                                                                                                                                                                                                        Прикреплённый файлПрикреплённый файлdev_screenshots.zip (33.72 Кбайт, скачиваний: 188)
                                                                                                                                                                                                                                                                                                                                                                          у меня сами библиотеки не создаются :wall:
                                                                                                                                                                                                                                                                                                                                                                          Сообщение отредактировано: DFooz -

                                                                                                                                                                                                                                                                                                                                                                          Прикреплённый файлПрикреплённый файлsrc.zip (18.85 Кбайт, скачиваний: 190)
                                                                                                                                                                                                                                                                                                                                                                            Люди, я вообще реализацию bgi пишу с начала года (для использования для обучения на первом курсе. собственно, со следующего полугодия библиотека будет использоваться в моём ВУЗе). Там уже реализованы все graphics.h функции + несколько прикольных фич
                                                                                                                                                                                                                                                                                                                                                                            1) опционально RGB - mode - не 16 цетов а полная цветовая паллитра
                                                                                                                                                                                                                                                                                                                                                                            2) опционально полноэкранный режим
                                                                                                                                                                                                                                                                                                                                                                            3) опционально показывает второе окно, в котором всегда отображается "невидимая страница". удобна при отладке программы с двойной буферизацией.
                                                                                                                                                                                                                                                                                                                                                                            4) режимы 800x600, 1024x767

                                                                                                                                                                                                                                                                                                                                                                            основная фича библиотеки - что во время отладки окошко с графикой всё равно перерисовывается правильно, не затирается. (без лишней скромности скажу, это решалось нетривиально :).

                                                                                                                                                                                                                                                                                                                                                                            реализованы по-моему, все функции из graphics.h + дополнения для работы с мышкой/клавой.

                                                                                                                                                                                                                                                                                                                                                                            сайт : http://sourceforge.net/projects/openbgi. собственно странички нет, только стандартный интерфейс sourceforge (там лежат исходники + несколько примеров).

                                                                                                                                                                                                                                                                                                                                                                            Если кто хочет - прошу присоединяться к проекту, по-хорошему нужно всё переписывать, по причине страшнного кода.
                                                                                                                                                                                                                                                                                                                                                                            Пожелания и сообщения о багах приветствуются ;)

                                                                                                                                                                                                                                                                                                                                                                            Работает под MSVC6-2005, mingw
                                                                                                                                                                                                                                                                                                                                                                              theos, сложно у тебя, да и зависит от платформы Windows.
                                                                                                                                                                                                                                                                                                                                                                              Я бы использовал какую-то другую open-source библиотеку, независимую от платформы. Как правило, такие даже реализованы проще.

                                                                                                                                                                                                                                                                                                                                                                              А страничка http://openbgi.sourceforge.net/ чего пустует? :whistle:

                                                                                                                                                                                                                                                                                                                                                                              Чёркни хоть пару строк что и как. Вообще, документация нужна хоть минимальная.
                                                                                                                                                                                                                                                                                                                                                                                1) зависит от платформы - так естественно, нужно писать принципиально разнае реализации под WinAPI(GDI) и под XWindow.
                                                                                                                                                                                                                                                                                                                                                                                а вообще я писал, что код лчше переписать. можно было бы сделать его чуточку переноимее.(SDL, между прочем, сама посебе не переносима, просто реализация есть под разные платформы.)
                                                                                                                                                                                                                                                                                                                                                                                2) сложно - а вы попробуйте реализовать проще! что бы обязательно на процессах, т.к. VS не умеет один поток отлаживать, в то время как другой будет работать.
                                                                                                                                                                                                                                                                                                                                                                                3) с документацие и страничкой - действительно беда, времени на них пока не хватает.

                                                                                                                                                                                                                                                                                                                                                                                Это библиотека не для серьёзных проектов - медленновата(по определению из-за двухпроцессности), да и архаизм этот grphics.h. просто для людей(учащихся) что бы ни счем не заморачиваться (opengl, winapi) и что б отладка нормальная была - это imho неплохой вариант.
                                                                                                                                                                                                                                                                                                                                                                                Сообщение отредактировано: theos -
                                                                                                                                                                                                                                                                                                                                                                                  Привет всем заинтересованным в этой теме! Поздравляю вас с событием - DGML не дожил до первого релиза, но вместо этого идет работа над новой версией DGML...

                                                                                                                                                                                                                                                                                                                                                                                  Библиотека написана на SDL. На выходе получается DGML.dll (под Windows) или DGML.so (под UNIX).

                                                                                                                                                                                                                                                                                                                                                                                  Текущая версия 2.0.3.64. Тестировалась на Visual C++ 2005, Delphi 6 и подключалась даже к MASM32. Под *BSD/Linux пока не тестировалась.

                                                                                                                                                                                                                                                                                                                                                                                  Реализованы следующие функции:
                                                                                                                                                                                                                                                                                                                                                                                  Цитата
                                                                                                                                                                                                                                                                                                                                                                                  + готово
                                                                                                                                                                                                                                                                                                                                                                                  * частично реализовано
                                                                                                                                                                                                                                                                                                                                                                                  - только заглушка

                                                                                                                                                                                                                                                                                                                                                                                  CONIO.H
                                                                                                                                                                                                                                                                                                                                                                                  * clrscr
                                                                                                                                                                                                                                                                                                                                                                                  * getch
                                                                                                                                                                                                                                                                                                                                                                                  * kbhit

                                                                                                                                                                                                                                                                                                                                                                                  DOS.H
                                                                                                                                                                                                                                                                                                                                                                                  + delay
                                                                                                                                                                                                                                                                                                                                                                                  + sleep
                                                                                                                                                                                                                                                                                                                                                                                  - sound
                                                                                                                                                                                                                                                                                                                                                                                  - nosound

                                                                                                                                                                                                                                                                                                                                                                                  GRAPHICS.H
                                                                                                                                                                                                                                                                                                                                                                                  + arc
                                                                                                                                                                                                                                                                                                                                                                                  + bar
                                                                                                                                                                                                                                                                                                                                                                                  + bar3d
                                                                                                                                                                                                                                                                                                                                                                                  + circle
                                                                                                                                                                                                                                                                                                                                                                                  + cleardevice
                                                                                                                                                                                                                                                                                                                                                                                  + clearviewport
                                                                                                                                                                                                                                                                                                                                                                                  + closegraph
                                                                                                                                                                                                                                                                                                                                                                                  + detectgraph
                                                                                                                                                                                                                                                                                                                                                                                  + drawpoly
                                                                                                                                                                                                                                                                                                                                                                                  + ellipse
                                                                                                                                                                                                                                                                                                                                                                                  + fillellipse
                                                                                                                                                                                                                                                                                                                                                                                  * fillpoly
                                                                                                                                                                                                                                                                                                                                                                                  + floodfill
                                                                                                                                                                                                                                                                                                                                                                                  + getarccoords
                                                                                                                                                                                                                                                                                                                                                                                  + getaspectratio
                                                                                                                                                                                                                                                                                                                                                                                  + getbkcolor
                                                                                                                                                                                                                                                                                                                                                                                  + getcolor
                                                                                                                                                                                                                                                                                                                                                                                  + getdefaultpalette
                                                                                                                                                                                                                                                                                                                                                                                  + getdrivername
                                                                                                                                                                                                                                                                                                                                                                                  + getfillpattern
                                                                                                                                                                                                                                                                                                                                                                                  + getfillsettings
                                                                                                                                                                                                                                                                                                                                                                                  + getgraphmode
                                                                                                                                                                                                                                                                                                                                                                                  + getimage
                                                                                                                                                                                                                                                                                                                                                                                  + getlinesettings
                                                                                                                                                                                                                                                                                                                                                                                  + getmaxcolor
                                                                                                                                                                                                                                                                                                                                                                                  + getmaxmode
                                                                                                                                                                                                                                                                                                                                                                                  + getmaxx
                                                                                                                                                                                                                                                                                                                                                                                  + getmaxy
                                                                                                                                                                                                                                                                                                                                                                                  + getmodename
                                                                                                                                                                                                                                                                                                                                                                                  + getmoderange
                                                                                                                                                                                                                                                                                                                                                                                  + getpixel
                                                                                                                                                                                                                                                                                                                                                                                  + getpalette
                                                                                                                                                                                                                                                                                                                                                                                  + getpalettesize
                                                                                                                                                                                                                                                                                                                                                                                  + gettextsettings
                                                                                                                                                                                                                                                                                                                                                                                  + getviewsettings
                                                                                                                                                                                                                                                                                                                                                                                  + getx
                                                                                                                                                                                                                                                                                                                                                                                  + gety
                                                                                                                                                                                                                                                                                                                                                                                  + graphdefaults
                                                                                                                                                                                                                                                                                                                                                                                  - grapherrormsg
                                                                                                                                                                                                                                                                                                                                                                                  - graphresult
                                                                                                                                                                                                                                                                                                                                                                                  + imagesize
                                                                                                                                                                                                                                                                                                                                                                                  + initgraph
                                                                                                                                                                                                                                                                                                                                                                                  + installuserdriver
                                                                                                                                                                                                                                                                                                                                                                                  + installuserfont
                                                                                                                                                                                                                                                                                                                                                                                  + line
                                                                                                                                                                                                                                                                                                                                                                                  + linerel
                                                                                                                                                                                                                                                                                                                                                                                  + lineto
                                                                                                                                                                                                                                                                                                                                                                                  + moverel
                                                                                                                                                                                                                                                                                                                                                                                  + moveto
                                                                                                                                                                                                                                                                                                                                                                                  * outtext
                                                                                                                                                                                                                                                                                                                                                                                  * outtextxy
                                                                                                                                                                                                                                                                                                                                                                                  + pieslice
                                                                                                                                                                                                                                                                                                                                                                                  + putimage
                                                                                                                                                                                                                                                                                                                                                                                  + putpixel
                                                                                                                                                                                                                                                                                                                                                                                  + rectangle
                                                                                                                                                                                                                                                                                                                                                                                  + registerbgidriver
                                                                                                                                                                                                                                                                                                                                                                                  + registerfarbgidriver
                                                                                                                                                                                                                                                                                                                                                                                  + restorecrtmode
                                                                                                                                                                                                                                                                                                                                                                                  + sector
                                                                                                                                                                                                                                                                                                                                                                                  + setactivepage
                                                                                                                                                                                                                                                                                                                                                                                  + setallpalette
                                                                                                                                                                                                                                                                                                                                                                                  + setaspectratio
                                                                                                                                                                                                                                                                                                                                                                                  + setbkcolor
                                                                                                                                                                                                                                                                                                                                                                                  + setcolor
                                                                                                                                                                                                                                                                                                                                                                                  + setfillpattern
                                                                                                                                                                                                                                                                                                                                                                                  + setfillstyle
                                                                                                                                                                                                                                                                                                                                                                                  + setgraphbufsize
                                                                                                                                                                                                                                                                                                                                                                                  + setgraphmode
                                                                                                                                                                                                                                                                                                                                                                                  + setlinestyle
                                                                                                                                                                                                                                                                                                                                                                                  + setpalette
                                                                                                                                                                                                                                                                                                                                                                                  + setrgbpalette
                                                                                                                                                                                                                                                                                                                                                                                  + settextjustify
                                                                                                                                                                                                                                                                                                                                                                                  + settextstyle
                                                                                                                                                                                                                                                                                                                                                                                  + setusercharsize
                                                                                                                                                                                                                                                                                                                                                                                  + setviewport
                                                                                                                                                                                                                                                                                                                                                                                  + setvisualpage
                                                                                                                                                                                                                                                                                                                                                                                  + setwritemode
                                                                                                                                                                                                                                                                                                                                                                                  + textheight
                                                                                                                                                                                                                                                                                                                                                                                  + textwidth

                                                                                                                                                                                                                                                                                                                                                                                  STDLIB.H
                                                                                                                                                                                                                                                                                                                                                                                  + random
                                                                                                                                                                                                                                                                                                                                                                                  + randomize


                                                                                                                                                                                                                                                                                                                                                                                  То есть работает вся графическая подсистема с некоторыми исключениями:
                                                                                                                                                                                                                                                                                                                                                                                  - floodfill некорректно обрабатывает некоторые многоугольники
                                                                                                                                                                                                                                                                                                                                                                                  - outtext выводит только однострочный тект и только по горизонтали
                                                                                                                                                                                                                                                                                                                                                                                  - поддерживается только растровый шрифт по умолчанию, векторные не поддерживаются

                                                                                                                                                                                                                                                                                                                                                                                  Все функции реализованы программно и очень медленно. Однако тестировалось на машинке с Pentium III M 600Mhz и отрисовывается терпимо по времени.

                                                                                                                                                                                                                                                                                                                                                                                  Под Borland Delphi 6 все жутко тормозит.

                                                                                                                                                                                                                                                                                                                                                                                  Ниже есть ссылка на скомпилированные примеры. Для их запуска надо в папку поместить файлы DGML.dll и SDL. SDL я использовал старенькую, 1.2.9, ссылка на длл тоже есть.

                                                                                                                                                                                                                                                                                                                                                                                  Ссылки для скачивания:
                                                                                                                                                                                                                                                                                                                                                                                  DGML 2.0.3.64 - исходники, заголовочные файлы и бинарник под Win32

                                                                                                                                                                                                                                                                                                                                                                                  Скомпилированные примеры для DGML на Си и Паскале

                                                                                                                                                                                                                                                                                                                                                                                  SDL.dll

                                                                                                                                                                                                                                                                                                                                                                                  Жду ваших комментариев...;)
                                                                                                                                                                                                                                                                                                                                                                                    Поправь первый пост, чтоб понятно было что такое "DGML", вдруг мне тоже нужно :huh: а все читать ломает :)
                                                                                                                                                                                                                                                                                                                                                                                      MeG
                                                                                                                                                                                                                                                                                                                                                                                      У меня нет прав редактировать первый пост...

                                                                                                                                                                                                                                                                                                                                                                                      DGML - Dos Graphics Migration Library. Она позволяет компилировать программы, с использованием графического интерфейса BGI современными компиляторами.

                                                                                                                                                                                                                                                                                                                                                                                      Забыл сказать, что на поддержка Delphi весьма условна и многие примеры не работают...
                                                                                                                                                                                                                                                                                                                                                                                        Der_Meister, а чего поддержку BGI-фонтов не сделал? Без них как то ни туда, ни сюда ;)
                                                                                                                                                                                                                                                                                                                                                                                          AndNot
                                                                                                                                                                                                                                                                                                                                                                                          Сейчас скачал описаниние форматов CHR-шрифтов. Возможно, скоро появится их поддержка...
                                                                                                                                                                                                                                                                                                                                                                                            Да я тебе и так могу рассказать их формат :D Могу даже примерчик кинуть, на Паскале и на Асме ;) Сам писал сто лет назад, ничего сложного там нет, формат примитивнейший.
                                                                                                                                                                                                                                                                                                                                                                                              AndNot
                                                                                                                                                                                                                                                                                                                                                                                              Спасибо, я уже реализовал загрузку и вывод штриховых шрифтов... Осталось только корректный вывод многострочного и вертикального текста сделать...
                                                                                                                                                                                                                                                                                                                                                                                                закинул lib и dll в LIB, h в INCLUDE, компилил в билдере, в vc 2005 express, в devc(ключ указывал), а вот такая гадость все равно(VC):

                                                                                                                                                                                                                                                                                                                                                                                                ExpandedWrap disabled
                                                                                                                                                                                                                                                                                                                                                                                                  ...
                                                                                                                                                                                                                                                                                                                                                                                                  main.obj : error LNK2028: unresolved token (0A00032B) "extern "C" int __stdcall random(int)" (?random@@$$J14YGHH@Z) referenced in function "void __cdecl changecolors(void)" (?changecolors@@$$FYAXXZ)
                                                                                                                                                                                                                                                                                                                                                                                                  main.obj : error LNK2028: unresolved token (0A00032C) "extern "C" void __stdcall initgraph(int *,int *,char const *)" (?initgraph@@$$J212YGXPAH0PBD@Z) referenced in function "void __cdecl initgraphicmode(void)" (?initgraphicmode@@$$FYAXXZ)
                                                                                                                                                                                                                                                                                                                                                                                                  main.obj : error LNK2019: unresolved external symbol "extern "C" int __stdcall getch(void)" (?getch@@$$J10YGHXZ) referenced in function "void __cdecl initgraphicmode(void)" (?initgraphicmode@@$$FYAXXZ)
                                                                                                                                                                                                                                                                                                                                                                                                  main.obj : error LNK2019: unresolved external symbol "extern "C" char * __stdcall grapherrormsg(int)" (?grapherrormsg@@$$J14YGPADH@Z) referenced in function "void __cdecl initgraphicmode(void)" (?initgraphicmode@@$$FYAXXZ)
                                                                                                                                                                                                                                                                                                                                                                                                  ...


                                                                                                                                                                                                                                                                                                                                                                                                и так далее

                                                                                                                                                                                                                                                                                                                                                                                                что я делаю не так?
                                                                                                                                                                                                                                                                                                                                                                                                Сообщение отредактировано: oldsoldier -
                                                                                                                                                                                                                                                                                                                                                                                                  oldsoldier
                                                                                                                                                                                                                                                                                                                                                                                                  А просто проект из папки projects пробовал запускать?

                                                                                                                                                                                                                                                                                                                                                                                                  Похоже библиотека не подключена.

                                                                                                                                                                                                                                                                                                                                                                                                  В VC2005 в параметрах проекта (правой на проекте в solution explorer -> properties) в разделе linker -> input в поле additional dependencies надо написать 'dgml.lib'.

                                                                                                                                                                                                                                                                                                                                                                                                  Либо в начале файла main.cpp написать '#pragma comment(lib, "dgml.lib")'.
                                                                                                                                                                                                                                                                                                                                                                                                    Выкладываю новую версию - 2.0.5.31. В ней полностью реализована поддержка строковых шрифтов, а так же исправлены некоторые недочеты.

                                                                                                                                                                                                                                                                                                                                                                                                    http://schtudent.ru/file.php?fid=661

                                                                                                                                                                                                                                                                                                                                                                                                    oldsoldier

                                                                                                                                                                                                                                                                                                                                                                                                    На всякий случай выкладываю описание создания проекта в vc2005 со скриншотами.

                                                                                                                                                                                                                                                                                                                                                                                                    http://schtudent.ru/file.php?fid=662
                                                                                                                                                                                                                                                                                                                                                                                                      Под Open Watcom нет варианта?
                                                                                                                                                                                                                                                                                                                                                                                                        Оззя
                                                                                                                                                                                                                                                                                                                                                                                                        Нет. Но я думаю сложностей в компиляции под него быть не должно, достаточно иметь библиотеки импорта SDL...

                                                                                                                                                                                                                                                                                                                                                                                                        Попробую достать ватком и проверить сам...
                                                                                                                                                                                                                                                                                                                                                                                                          Цитата Der_Meister @
                                                                                                                                                                                                                                                                                                                                                                                                          Оззя
                                                                                                                                                                                                                                                                                                                                                                                                          Нет. Но я думаю сложностей в компиляции под него быть не должно, достаточно иметь библиотеки импорта SDL...

                                                                                                                                                                                                                                                                                                                                                                                                          Попробую достать ватком и проверить сам...

                                                                                                                                                                                                                                                                                                                                                                                                          Был бы очень признателен.
                                                                                                                                                                                                                                                                                                                                                                                                            я все сделал по туториалу. скомпилилось, но дальше никакой реакции не было. и почему-то не компилилось "в режиме окна" . (//#define DGML_IN_WINDOW )

                                                                                                                                                                                                                                                                                                                                                                                                            могу прислать проект
                                                                                                                                                                                                                                                                                                                                                                                                              Цитата oldsoldier @
                                                                                                                                                                                                                                                                                                                                                                                                              "в режиме окна" . (//#define DGML_IN_WINDOW )

                                                                                                                                                                                                                                                                                                                                                                                                              Этой строки в новой DGML вообще-то нет! :huh: Она была только в старой версии. В новой для того, чтобы инициализировать графику в окне нужно написать:
                                                                                                                                                                                                                                                                                                                                                                                                              ExpandedWrap disabled
                                                                                                                                                                                                                                                                                                                                                                                                                initgraph(&driver, &mode, "-w");


                                                                                                                                                                                                                                                                                                                                                                                                              Надеюсь версия DGML у тебя не ниже, чем 2.0.3.64? В 184 посте (http://forum.sources.ru/index.php?showtopic=127641&st=180#) ссылка на нее...
                                                                                                                                                                                                                                                                                                                                                                                                                да, последняя версия. после запуска проекта выходит только меню, очень медленно прорисовываясь, и все. на клавиши реакций нет

                                                                                                                                                                                                                                                                                                                                                                                                                Добавлено
                                                                                                                                                                                                                                                                                                                                                                                                                ))) проект запустился. но все очень медленно. вариант отпадает(. придется показывать на turbo c )

                                                                                                                                                                                                                                                                                                                                                                                                                Добавлено
                                                                                                                                                                                                                                                                                                                                                                                                                DGML Release 2.0.5.31:

                                                                                                                                                                                                                                                                                                                                                                                                                //заставим выводить в окно
                                                                                                                                                                                                                                                                                                                                                                                                                //раскомментируйте эту строчку, чтобы не менять графический режим
                                                                                                                                                                                                                                                                                                                                                                                                                #ifdef _DEBUG
                                                                                                                                                                                                                                                                                                                                                                                                                //#define DGML_IN_WINDOW
                                                                                                                                                                                                                                                                                                                                                                                                                #endif

                                                                                                                                                                                                                                                                                                                                                                                                                вот эти строки
                                                                                                                                                                                                                                                                                                                                                                                                                  oldsoldier
                                                                                                                                                                                                                                                                                                                                                                                                                  Ясно. А пример можно использования? (сам исходный код)

                                                                                                                                                                                                                                                                                                                                                                                                                  У меня тестова машина: Pentium III 600 MHz, 192 Mb RAM, 4Mb Video.
                                                                                                                                                                                                                                                                                                                                                                                                                    Оззя
                                                                                                                                                                                                                                                                                                                                                                                                                    Наконец-то руки дошли... Скомпилировал и саму библиотеку, и пример к ней на Open Watcom 1.7

                                                                                                                                                                                                                                                                                                                                                                                                                    DGML 2.0.5.44

                                                                                                                                                                                                                                                                                                                                                                                                                    В дистрибутиве есть проект для ваткома.

                                                                                                                                                                                                                                                                                                                                                                                                                    oldsoldier
                                                                                                                                                                                                                                                                                                                                                                                                                    Не знаю, как справиться с этими тормозами... :(
                                                                                                                                                                                                                                                                                                                                                                                                                      Der_Meister
                                                                                                                                                                                                                                                                                                                                                                                                                      Спасибо, сегодня попробую откомпилировать старый проект
                                                                                                                                                                                                                                                                                                                                                                                                                        Народ, поделитесь плиз DGML'кой. А то все ссылки мёртвые :( Тока вот эта http://sourceforge.net/projects/openbgi пашет, но я так понял нужен ещё .lib файл, что б заработало?
                                                                                                                                                                                                                                                                                                                                                                                                                          Цитата Un1oR @
                                                                                                                                                                                                                                                                                                                                                                                                                          я так понял нужен ещё .lib файл, что б заработало?

                                                                                                                                                                                                                                                                                                                                                                                                                          lib файл сам собери ;) Там вроде все исходники на месте.
                                                                                                                                                                                                                                                                                                                                                                                                                            К сожалению, проблемы с "тормозами" так и не решены...

                                                                                                                                                                                                                                                                                                                                                                                                                            Часть 1/2
                                                                                                                                                                                                                                                                                                                                                                                                                            Прикреплённый файлПрикреплённый файлDGML_Release_2.0.5.44.7z.001 (107.42 Кбайт, скачиваний: 259)
                                                                                                                                                                                                                                                                                                                                                                                                                              Часть 2/2

                                                                                                                                                                                                                                                                                                                                                                                                                              Файл называется DGML Release 2.0.5.44.7z.002, просто форум не дает загрузить файл с расширением .002
                                                                                                                                                                                                                                                                                                                                                                                                                              Прикреплённый файлПрикреплённый файлpart2.zip (107.33 Кбайт, скачиваний: 489)
                                                                                                                                                                                                                                                                                                                                                                                                                                А что с етими файлами делать ( DGML_Release_2.0.5.44.7z.001, part2.zip) ?
                                                                                                                                                                                                                                                                                                                                                                                                                                Der_Meister не могли бы вы описать все действия, которые нужно сделать, для того чтобы в программе использовать все возможности graphics.h в DevC++.
                                                                                                                                                                                                                                                                                                                                                                                                                                  Цитата NinjaDragon @
                                                                                                                                                                                                                                                                                                                                                                                                                                  А что с етими файлами делать ( DGML_Release_2.0.5.44.7z.001, part2.zip) ?
                                                                                                                                                                                                                                                                                                                                                                                                                                  Распаковать с помощью 7-zip, переименовав part2.zip в DGML Release 2.0.5.44.7z.002 .

                                                                                                                                                                                                                                                                                                                                                                                                                                  Цитата NinjaDragon @
                                                                                                                                                                                                                                                                                                                                                                                                                                  не могли бы вы описать все действия, которые нужно сделать, для того чтобы в программе использовать все возможности graphics.h в DevC++.
                                                                                                                                                                                                                                                                                                                                                                                                                                  Насколько я знаю, нет поддержки компилятора MinGW (GCC).
                                                                                                                                                                                                                                                                                                                                                                                                                                  Сообщение отредактировано: Romtek -
                                                                                                                                                                                                                                                                                                                                                                                                                                    Добавил поддержку Dev-C++ (MinGW). Думаю, не так сложно будет изменить для компиляции в GCC в Linux и других ОС.

                                                                                                                                                                                                                                                                                                                                                                                                                                    скачать DGML Release 2.0.5.45.7z - размер ~1.2MB (распаковывать в 7-zip) <<--ВНИМАНИЕ, файл находится на внешнем ресурсе и будет удалён спустя месяц после последнего скачивания. Можно перенести его куда-нибудь на постоянный хостинг.
                                                                                                                                                                                                                                                                                                                                                                                                                                    Содержит версию DGML Release 2.0.5.44, опубликованную выше и дополнительные файлы:
                                                                                                                                                                                                                                                                                                                                                                                                                                    • скомпилированную libdgml.dll для подключения к проектам на Dev-C++ (bin\libdgml.dll)
                                                                                                                                                                                                                                                                                                                                                                                                                                    • файл проекта libdgml.dev для компиляции libdgml.dll на Dev-C++ (src\Dev-cpp\libdgml.dev)
                                                                                                                                                                                                                                                                                                                                                                                                                                    • файлы тестовых проектов (projects\dev-cpp\hello.dev, setlinestyle.dev)
                                                                                                                                                                                                                                                                                                                                                                                                                                    • файлы libsdl (src\lib\libSDL.a, ...)

                                                                                                                                                                                                                                                                                                                                                                                                                                    Инструкция для компиляции проектов BGI-графики
                                                                                                                                                                                                                                                                                                                                                                                                                                    1. Я скачивал SDL-devel-1.2.9-mingw32.tar.gz (необязательно, в файле выше уже включены все необходимые файлы libsdl)
                                                                                                                                                                                                                                                                                                                                                                                                                                    2. Компиляция libdgml (библиотеки DGML)
                                                                                                                                                                                                                                                                                                                                                                                                                                      параметры проекта:
                                                                                                                                                                                                                                                                                                                                                                                                                                      ExpandedWrap disabled
                                                                                                                                                                                                                                                                                                                                                                                                                                        Includes=../include
                                                                                                                                                                                                                                                                                                                                                                                                                                        Libs=../lib
                                                                                                                                                                                                                                                                                                                                                                                                                                        Linker=-llibsdl
                                                                                                                                                                                                                                                                                                                                                                                                                                        ExeOutput=../../bin
                                                                                                                                                                                                                                                                                                                                                                                                                                    3. Компиляция hello
                                                                                                                                                                                                                                                                                                                                                                                                                                      параметры проекта:
                                                                                                                                                                                                                                                                                                                                                                                                                                      ExpandedWrap disabled
                                                                                                                                                                                                                                                                                                                                                                                                                                        Includes=../../include
                                                                                                                                                                                                                                                                                                                                                                                                                                        Libs=../../bin
                                                                                                                                                                                                                                                                                                                                                                                                                                        Linker=-ldgml

                                                                                                                                                                                                                                                                                                                                                                                                                                    Der Meister, лучше открыл бы проект в SourceForge - народ бы дальше развивал. ;)
                                                                                                                                                                                                                                                                                                                                                                                                                                    Сообщение отредактировано: Romtek -
                                                                                                                                                                                                                                                                                                                                                                                                                                      Большой Вам respect за проделаную работу :)
                                                                                                                                                                                                                                                                                                                                                                                                                                      Не могли бы Вы расписать по подробнее пункты: 2) Компиляция libdgml (библиотеки DGML)
                                                                                                                                                                                                                                                                                                                                                                                                                                      и 3) Компиляция hell.
                                                                                                                                                                                                                                                                                                                                                                                                                                        Пишу с мобилы. 2) Новый проект-dll. Добавляешь dgml*.c в проект и указываешь параметры проекта(в пред. сообщ.)
                                                                                                                                                                                                                                                                                                                                                                                                                                        3) новый проект-GUI. Добавляешь hello.c с парам-ми проекта выше. Позже-подробнее.
                                                                                                                                                                                                                                                                                                                                                                                                                                          Romtek
                                                                                                                                                                                                                                                                                                                                                                                                                                          Большое спасибо за поддержку.

                                                                                                                                                                                                                                                                                                                                                                                                                                          Проект DGML теперь доступен по лицензии BSD: http://sourceforge.net/projects/dgml/

                                                                                                                                                                                                                                                                                                                                                                                                                                          Есть идея переписать вывод графики на libcairo.
                                                                                                                                                                                                                                                                                                                                                                                                                                            Цитата Дер @
                                                                                                                                                                                                                                                                                                                                                                                                                                            Проект DGML теперь доступен по лицензии BSD

                                                                                                                                                                                                                                                                                                                                                                                                                                            Ух ты. :) Молодец.

                                                                                                                                                                                                                                                                                                                                                                                                                                            Цитата Дер @
                                                                                                                                                                                                                                                                                                                                                                                                                                            Есть идея переписать вывод графики на libcairo.
                                                                                                                                                                                                                                                                                                                                                                                                                                            Не стоит так торопиться. Лучше отточить то, что уже есть и хорошо проверить рабочесть и совместимость. Также заняться поддержкой разныхплатформ. ;)
                                                                                                                                                                                                                                                                                                                                                                                                                                            Я занимаюсь переводом на Linux.

                                                                                                                                                                                                                                                                                                                                                                                                                                            Добавлено
                                                                                                                                                                                                                                                                                                                                                                                                                                            Дер, свяжись со мной для помощи организации наполнения сайта проекта.
                                                                                                                                                                                                                                                                                                                                                                                                                                              Для билдера не могу настроить:

                                                                                                                                                                                                                                                                                                                                                                                                                                              Проект DGML теперь доступен по лицензии BSD: http://sourceforge.net/projects/dgml/

                                                                                                                                                                                                                                                                                                                                                                                                                                              Хотя для Visual Studio получается.
                                                                                                                                                                                                                                                                                                                                                                                                                                              Сообщение отредактировано: cmygeHm -
                                                                                                                                                                                                                                                                                                                                                                                                                                                С чем именно проблемы? Исходники и примеры проектов есть...

                                                                                                                                                                                                                                                                                                                                                                                                                                                Цитата Дер @
                                                                                                                                                                                                                                                                                                                                                                                                                                                Есть идея переписать вывод графики на libcairo.
                                                                                                                                                                                                                                                                                                                                                                                                                                                Спустя столько времени я тоже об этом стал подумывать. таким образом, получится отвязка от SDL за счёт Cairo. Ведь последняя для двумерной векторной графики как раз и создана.
                                                                                                                                                                                                                                                                                                                                                                                                                                                  Цитата
                                                                                                                                                                                                                                                                                                                                                                                                                                                  Для использования DGML в среде Microsoft Visual Studio или Borland C++ Builder, достаточно скопировать файлы DGML.lib и graphics.h в папки lib и include компилятора соответственно.


                                                                                                                                                                                                                                                                                                                                                                                                                                                  Файла graphics.h нет даже близко в архиве... Думаю вместо него надо юзать dgml.h. Ложу DGML.lib и dgml.h в папки lib и include компилятора соответственно. Запускаем шестой билдер и создаем консольное приложение: Multi Threaded & Console Application.

                                                                                                                                                                                                                                                                                                                                                                                                                                                  Вставляем такой код:

                                                                                                                                                                                                                                                                                                                                                                                                                                                  Цитата

                                                                                                                                                                                                                                                                                                                                                                                                                                                  #include <stdlib.h>
                                                                                                                                                                                                                                                                                                                                                                                                                                                  #include <string.h>
                                                                                                                                                                                                                                                                                                                                                                                                                                                  #include <stdio.h>
                                                                                                                                                                                                                                                                                                                                                                                                                                                  #include <conio.h>
                                                                                                                                                                                                                                                                                                                                                                                                                                                  #include "dgml.h"

                                                                                                                                                                                                                                                                                                                                                                                                                                                  /* the names of the line styles supported */
                                                                                                                                                                                                                                                                                                                                                                                                                                                  char *lname[] = {
                                                                                                                                                                                                                                                                                                                                                                                                                                                  "SOLID_LINE",
                                                                                                                                                                                                                                                                                                                                                                                                                                                  "DOTTED_LINE",
                                                                                                                                                                                                                                                                                                                                                                                                                                                  "CENTER_LINE",
                                                                                                                                                                                                                                                                                                                                                                                                                                                  "DASHED_LINE",
                                                                                                                                                                                                                                                                                                                                                                                                                                                  "USERBIT_LINE"
                                                                                                                                                                                                                                                                                                                                                                                                                                                  };

                                                                                                                                                                                                                                                                                                                                                                                                                                                  int main(void)
                                                                                                                                                                                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                                                                                                                                                                                  /* request auto detection */
                                                                                                                                                                                                                                                                                                                                                                                                                                                  int gdriver = DETECT, gmode, errorcode;

                                                                                                                                                                                                                                                                                                                                                                                                                                                  int style, midx, midy, userpat;
                                                                                                                                                                                                                                                                                                                                                                                                                                                  char stylestr[40];

                                                                                                                                                                                                                                                                                                                                                                                                                                                  /* initialize graphics and local variables */
                                                                                                                                                                                                                                                                                                                                                                                                                                                  initgraph(&gdriver, &gmode, "");

                                                                                                                                                                                                                                                                                                                                                                                                                                                  /* read result of initialization */
                                                                                                                                                                                                                                                                                                                                                                                                                                                  errorcode = graphresult();
                                                                                                                                                                                                                                                                                                                                                                                                                                                  if (errorcode != grOk) /* an error occurred */
                                                                                                                                                                                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                                                                                                                                                                                  printf("Graphics error: %s\n", grapherrormsg(errorcode));
                                                                                                                                                                                                                                                                                                                                                                                                                                                  printf("Press any key to halt:");
                                                                                                                                                                                                                                                                                                                                                                                                                                                  getch();
                                                                                                                                                                                                                                                                                                                                                                                                                                                  exit(1); /* terminate with an error code */
                                                                                                                                                                                                                                                                                                                                                                                                                                                  }

                                                                                                                                                                                                                                                                                                                                                                                                                                                  midx = getmaxx() / 2;
                                                                                                                                                                                                                                                                                                                                                                                                                                                  midy = getmaxy() / 2;

                                                                                                                                                                                                                                                                                                                                                                                                                                                  /* a user defined line pattern */
                                                                                                                                                                                                                                                                                                                                                                                                                                                  /* binary: "0000000000000001" */
                                                                                                                                                                                                                                                                                                                                                                                                                                                  userpat = 1;

                                                                                                                                                                                                                                                                                                                                                                                                                                                  for (style=SOLID_LINE; style<=USERBIT_LINE; style++)
                                                                                                                                                                                                                                                                                                                                                                                                                                                  {
                                                                                                                                                                                                                                                                                                                                                                                                                                                  /* select the line style */
                                                                                                                                                                                                                                                                                                                                                                                                                                                  setlinestyle(style, userpat, 1);

                                                                                                                                                                                                                                                                                                                                                                                                                                                  /* convert style into a string */
                                                                                                                                                                                                                                                                                                                                                                                                                                                  strcpy(stylestr, lname[style]);

                                                                                                                                                                                                                                                                                                                                                                                                                                                  /* draw a line */
                                                                                                                                                                                                                                                                                                                                                                                                                                                  line(0, 0, midx-10, midy);

                                                                                                                                                                                                                                                                                                                                                                                                                                                  /* draw a rectangle */
                                                                                                                                                                                                                                                                                                                                                                                                                                                  rectangle(0, 0, getmaxx(), getmaxy());

                                                                                                                                                                                                                                                                                                                                                                                                                                                  /* output a message */
                                                                                                                                                                                                                                                                                                                                                                                                                                                  outtextxy(midx, midy, stylestr);

                                                                                                                                                                                                                                                                                                                                                                                                                                                  /* wait for a key */
                                                                                                                                                                                                                                                                                                                                                                                                                                                  getch();
                                                                                                                                                                                                                                                                                                                                                                                                                                                  cleardevice();
                                                                                                                                                                                                                                                                                                                                                                                                                                                  }

                                                                                                                                                                                                                                                                                                                                                                                                                                                  /* clean up */
                                                                                                                                                                                                                                                                                                                                                                                                                                                  closegraph();
                                                                                                                                                                                                                                                                                                                                                                                                                                                  return 0;
                                                                                                                                                                                                                                                                                                                                                                                                                                                  }


                                                                                                                                                                                                                                                                                                                                                                                                                                                  И в хедере dgml.h ошибочка на строке: using DGML::conio::clrscr;

                                                                                                                                                                                                                                                                                                                                                                                                                                                  Only one of a set of overloaded functions can be "C"

                                                                                                                                                                                                                                                                                                                                                                                                                                                  Как быть? Второй день разбираюсь.
                                                                                                                                                                                                                                                                                                                                                                                                                                                    Насколько я понимаю, дело в том, что проект должен быть C++. Иначе - грабли.
                                                                                                                                                                                                                                                                                                                                                                                                                                                      т.е. Console Application ???

                                                                                                                                                                                                                                                                                                                                                                                                                                                      Абсолютно тоже самое :(
                                                                                                                                                                                                                                                                                                                                                                                                                                                      Сообщение отредактировано: cmygeHm -
                                                                                                                                                                                                                                                                                                                                                                                                                                                        Цитата cmygeHm @
                                                                                                                                                                                                                                                                                                                                                                                                                                                        т.е. Console Application

                                                                                                                                                                                                                                                                                                                                                                                                                                                        Консольное и обязательно С++!
                                                                                                                                                                                                                                                                                                                                                                                                                                                          все варианты перепробывал :(
                                                                                                                                                                                                                                                                                                                                                                                                                                                            Я не настолько разбираюсь в С++, чтобы помочь. В DGML используется трюк и использованием пространств имён, что позволяет игнорировать headers. Причём, я так понимаю, именно BCB не проглатываает исходник, т.к. VC++, GCC, Watcom - без проблем (согласно Der'у).
                                                                                                                                                                                                                                                                                                                                                                                                                                                              Попробуй этот заголовок:

                                                                                                                                                                                                                                                                                                                                                                                                                                                              Добавлено
                                                                                                                                                                                                                                                                                                                                                                                                                                                              По крайней мере, у меня в Dev-C++ компилируется...

                                                                                                                                                                                                                                                                                                                                                                                                                                                              В общем, Der_Meister (heavysoft /sf.net) всё писал и он сможет помочь.
                                                                                                                                                                                                                                                                                                                                                                                                                                                              Прикреплённый файлПрикреплённый файлdgml.h.zip (5.66 Кбайт, скачиваний: 278)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                Спасибо, сейчас попробую и если что ему письмо напишу :)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                Билдер знает о пространствах имен, надо как минимум указать using namespace ... ; и все пучком. А у DGML как называется пространство имен? Может явно указать?
                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Цитата cmygeHm @
                                                                                                                                                                                                                                                                                                                                                                                                                                                                  А у DGML как называется пространство имен? Может явно указать?

                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Смотри в заголовок и пробуй. У меня нет BCB.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Та ошибка вроде исчезла, новая появилась!

                                                                                                                                                                                                                                                                                                                                                                                                                                                                    [Linker Error] 'C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\DGML.LIB' contains invalid OMF record, type 0x21 (possibly COFF)

                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Может мне либку обновить? Из каких исходников она делалась? Из того же хедера?
                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Сообщение отредактировано: cmygeHm -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Цитата cmygeHm @
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Linker Error] 'C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\DGML.LIB' contains invalid OMF record, type 0x21 (possibly COFF)

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      А это не имеет отношения к DGML. Обращайся в С++. Там объяснят что делать.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        я понял что lib надо переделать в длл. Сейчас попробую

                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Добавлено
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Последняя проблема, что осталась это множество таких сообщений:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                        [Linker Error] Unresolved external 'DGML::initgraph(int *, int *, const char *)' referenced from C:\DOCUMENTS AND SETTINGS\GAFAROV_ÐÀÁÎ×ÈÉ ÑÒÎË\OK\UNIT1.OBJ


                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Начал искать в каких исходниках прописаны тела функций, ни в одной версии исходников их не нашел. Romtek, у тебя есть ???
                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Цитата cmygeHm @
                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Начал искать в каких исходниках прописаны тела функций, ни в одной версии исходников их не нашел.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Не знаю что ты скачал и откуда, но у меня из официальной версии 2.0.5.45 всё находится и в заголовках и в теле исходников.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                          А если компилятор или компоновщик не находят, надо правильно указать пути.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Сообщение отредактировано: Romtek -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Цитата cmygeHm @
                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Я все это дело бросил! Ребята! Потратили год или больше и сделали аборт перед родами! Вся Россия бы гордилась и использовала эту библиотеку! Я потратил четыре дня и все напрасно!

                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Цитата Поднимите мне веки @
                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Сообщ. #1 от 1.01.06, 18:08

                                                                                                                                                                                                                                                                                                                                                                                                                                                                            от первого января 2006 года прошло несколько больше дней, чем четыре.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                              DGML.lib можно использовать только с MSVS и другими компиляторами, использующими COFF-формат. Для Builder'а нужно конвертировать ее в OMF. Для этого воспользуемся утилитой coff2omf:
                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ExpandedWrap disabled
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .\coff2omf.exe DGML.lib libdgml.lib

                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Теперь libdgml.lib добавляем в проект, dgml.h кладем в папку с проектом. DGML.dll и SDL.dll кладем в выходную директорию. Компилируем и запускаем.

                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Прикладыю OMF-версию библиотеки импорта.

                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Проверил на Borland C++ Builder 6 и Embarcadero RAD Studio 2010.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Сообщение отредактировано: Дер -

                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Прикреплённый файлПрикреплённый файлlibdgml.7z (1.71 Кбайт, скачиваний: 291)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Проект создается так:
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Прикреплённый файлПрикреплённый файлshot05.png (6.73 Кбайт, скачиваний: 628)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Если кому интересно, недавно наткнулся на схожий проект, решающий ту же задачу. Называется libgraph. Можно скачать по адресу https://github.com/Prashant47/libgraph

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Демонстрация возможностей в файле sample.c . Насчёт полноты реализации ничего не знаю. Кто попробует - сообщите.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Цитата Romtek @
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Насчёт полноты реализации ничего не знаю.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Не пахнет никакой полнотой: только 16-цветные режимы, например. :yes-sad:
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      >только 16-цветные режимы, например.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      А в штатном bgi больше цветов и не было. Или там не хватает более простых режимов?
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Цитата MBo @
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        там не хватает более простых режимов?
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ага.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Цитата MBo @
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        А в штатном bgi больше цветов и не было.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Наткнулся на заваленке у себя на VGA256.BGI, а там написано, что
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Цитата VGA256.BGI
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        BGI Device Driver (VGA256) 2.00 - Mar 21 1988
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Copyright © 1987,1988 Borland International...
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        VGA256...
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        320x200 VGA/MCGA MODE 13H
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        а в 13H цветов 256... ;) Впрочем, это может быть и подделка (копирайта под Борланд). Не знаю, копать надо.

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Добавлено
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Собственно, вкусность была ещё и в том, что можно было собрать программу, а BGI-файл (чужой) лишь указывался строкой. И при наличие оного, подключалась и более мощная графика (и 256, и 32К, и 64К цветов)! Т.е. это была предыстория будущих DLL-ок. А в этом github.com/Prashant47/libgraph ничем таким не пахнет. :yes-sad:
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Борланд сделала довольно много BGI-драйверов
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Вот например список входящих в состав 7-го паскаля:
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          CGA.BGI - адаптеры CGA и MCGA - 4 палитры CGA-режима 320х200-4 цвета и 640х200-ЧБ, плюс специфичный для MCGA 640х480-ЧБ
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          HERC.BGI - адаптеры Hercules - эти имели только один режим 720х348-ЧБ
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ATT.BGI - адаптеры AT&T - 4 палитры CGA-режима 320х200-4 цвета и 640х200-ЧБ, плюс cпецифичный для AT&T 640х400-ЧБ
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          EGAVGA.BGI - адаптеры EGA и VGA - режимов CGA нет, 640x200-16 цв EGA, 640x350-16цв EGA, 640x480-16цв VGA, 640x350-ЧБ EGA
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          IBM8514.BGI - адаптеры IBM-8514/A - 640x480-16цв, 1024x768-16цв (хотя имелись и 256 цветные режимы)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          PC3270.BGI - PC-3270, этот, насколько я понимаю, похож на Hercules - 720x350 ЧБ
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          VESA16.BGI - для всех VESA VBE совместимых - 800x600-16цв, 1024x768-16цв, 1280x1024-16цв
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          В штатной библиотеке нет даже упоминания о 256-цветных режимах.

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          BGI-драйверы VGA256.BGI, VESA256.BGI и VESA16M.BGI (также использовался в режимах 32K и 64K) и соответствующие библиотеки для популярных компиляторов шли с набором VESA-драйверов. Поскольку структуру BGI-файла, в отличие от файлов шрифтов (я по крайней мере официальных данных, когда искал, не нашёл), Borland опубликовала, они могли быть работы сторонних авторов.

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Добавлено
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          VGA256.BGI судя по всему всё-же авторства Borland, поскольку вместе с несколькими дополнительными шрифтами входил в состав Quattro Pro той же Borland.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          0 пользователей:


                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Рейтинг@Mail.ru
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [ Script execution time: 0,4456 ]   [ 16 queries used ]   [ Generated: 16.04.24, 20:59 GMT ]