Слово за използването на графичния модул в Linux

Тези, които изучават Pascal от книги, описващи TurboPascal, стигнали до примери за работа с графики и опити да ги пренесат в Linux, обикновено се сблъскват с проблем, когато тези програми отказват да се компилират, като издават някои глупави съобщения като това:

Веднага ще кажа - това е линкер (т.е. програма, която сглобява всички модули в едно цяло след компилация и прикрепя правилния заглавие на стартера в самото начало) се оплаква от липсата на графична библиотека. "Не мога да намеря" - "Не мога да намеря", по-нататък "-l" - това е опцията за свързване на външна библиотека, последвана от името на самата библиотека. И същите програми, когато се компилират в Windows, се компилират без проблеми. Защо? Тук не можете без историческа екскурзия.

Пътуване в далечното минало

Когато беше създадена операционната система Unix, чийто потомък работим сега, компютрите бяха изключително мудни и припаднаха от най-малкото претоварване. На първия компютър се казваше "Eniak", нямаше дори клавиатура за въвеждане на данни и монитор за преглед на резултатите от изчисленията. Данните бяха въведени в него с помощта на превключватели (или 0, или 1) и резултатите бяха отчетени от ред лампи (ако лампата е включена, тя е 1, ако е изключена, е 0). Беше тъжно и трудно да се работи с такъв компютър. Знам това от себе си, т.к. в детството си имах компютър, като "Eniak" - той се казваше DVM-2 и беше програмиран с телени джъмпери, а отговорът се показваше на четири разноцветни крушки.

Когато няма много данни, такива лоши I/O средства все още могат да бъдат оцелени, но какво ще стане, ако има много данни? Тогава е удобно да въвеждате данни с онези знаци, на които човек е свикнал, тъй като вече е имало проба - пишеща машина. По нейния модел и подобие е направена клавиатура.

Но как да се оттегля? Отново, гледайки пишеща машина, цялата продукция първо беше отпечатана на хартия. Но програмите не винаги бяха прави едновременно, така че тонове хартия отидоха в кошчето. Умните глави бързо обърнаха внимание на телевизора - ами ако всички боклуци бяха първо отпечатани на телевизионния екран и на хартия бяха дадени само верните отговори? Веднага след като каза, свърши телевизора към компютъра. Всички са доволни, че успяхме да спасим горите от неправилни изчисления.

Разбира се, те веднага започнаха да мислят, но как да покажат снимки на компютър? И тогава разбрахме как компютърът се различава от телевизионното студио. Телевизионното студио излъчва готова картина и компютърът първо трябва да я конструира в себе си и едва след това да я покаже. И нито паметта, нито производителността са достатъчни за това. Ако компютърът се е справил повече или по-малко успешно с генерирането на букви и цифри, тогава със снимките, които трябва да бъдат нарисувани с точки, той вече не съществува. Следователно за много дълго време компютрите показват само текст или псевдографики, използвайки подходящи символи за това.

Формирането и развитието на Unix се случи точно през този период, така че основният акцент в него беше поставен върху показването и предаването на текст. Но всичко се променя, включително мощността на процесорите и количеството RAM. И сега стана възможно да се генерират повече или по-малко нормални графики. Много компютърни учени започнаха да мислят как да направят това във вече завършена ОС. Разбира се, че го направиха. И се оказа, че всеки отбор предлага нещо различно. Следователно в Unix, за разлика от Windows, няма една стандартна графична библиотека. Много от тях. Както се казва - избирайте за всеки вкус.

Започваме да графитираме.

И тогава един ден се зачудих - как можете да рисувате в Linux? Установих, че модулът Графика присъства. Това ме насърчи и веднага се опитах да съставя най-простите приложения, чертаещи линии, кръгове и т.н. И получих съобщението, което дадох в началото. Разровен из източника FreePascal и видях, че има много графични модули, очевидно по броя на графичните библиотеки. Имаше цели четири модула (говорим само за съвместими с TurboPascal'евски Графика):

  • Графика,
  • ggiGraph,
  • ptcGraph,
  • sdlGraph.

След като разгледах източниците на тези модули, разбрах, че всички те са проектирани да комбинират стандартни графични процедури и функции, които са били в TurboPascal'evsky модул Графика, с тези функции, които присъстват директно в графичните библиотеки. Уви, самият модул Графика за книжни примери с графики в съвременните операционни системи абсолютно не е подходящ. Има няколко причини за това:

  • Графична библиотека svgalib, което е необходимо за работа на модула Графика, отдавна е остарял и не е разработен повече от десет години, така че тази библиотека не е инсталирана по подразбиране.
  • Най-големият проблем (ако сте инсталирали тази библиотека ръчно) е, че тази библиотека изисква правата за работа. корен", но и от обикновен потребител, при когото обикновено работят всички Linux, няма да работи.
    Чудя се защо? Оказва се, че за работа е необходима специална конзола. Естествено, обикновеният потребител не може да направи това.