Ім'я файлу: Документ.docx
Розширення: docx
Розмір: 13кб.
Дата: 01.11.2021
скачати
Пов'язані файли:
мікропроцесори.pptx
Назва культури.docx

Курсова робота

Дисципліна: Системне програмне забезпечення

Тема:

++: Стандартные библиотечные функции работы с графикой» «C + +: Стандартні бібліотечні функції роботи з графікою»

Тольятті 200г.

Зміст

Введення

1. Аналіз графічного модуля "graphics.h"

1.1 Аналіз функції модуля

1.2 Аналіз констант, типів і глобальних змінних модуля

2. Реалізація користувача бібліотеки "mouse.h"

Висновок

Додаток 1

Список використаної літератури

Введення

++. Тема даної курсової роботи стандартні бібліотечні функції роботи з графікою в C + +. ++, который можно подключить к любому проекту написанном на языке Си, с помощью заголовочного файла graphics . h . У даному роботі я постараюся розкрити основні моменти роботи функцій стандартного модуля C + +, який можна підключити до будь-якого проекту написаному на мові Сі, за допомогою заголовного файлу graphics. H. 32. lib и glaux . lib , подключаемые к проектам с помощью заголовочных файлов gl . h , glu . h , glaux . h . Звичайно, окрім даного модуля в сучасних середовищах розробки програмних додатків на даній мові є і такі не менш цікаві модулі як glu 32. Lib і glaux. Lib, що підключаються до проектів з допомогою заголовних файлів gl. H, glu. H, glaux. H. 32. dll . Вони дозволяють програмісту показати всю красу програми, а також можуть використовуватися для спецефектів, але дані модулі призначені для роботи з бібліотекою opengl 32. Dll. 9 x /2 k / XP , Linux Mandrake / Red Hat / Slackware и тому подобных. Використання даної бібліотеки, по суті справи, є робота з "комп'ютерною графікою", але під графічні оболонки таких операційних систем як Windows 9 x / 2 k / XP, Linux Mandrake / Red Hat / Slackware і тому подібних. . h предназначен, в основном, для работы под операционную систему MS - DOS , в которой просто невозможно использование самого opengl 'а. Ця тема куди більш велика і цікава, але, як ми знаємо, модуль graphics. H призначений, в основному, для роботи під операційну систему MS - DOS, в якій просто неможливе використання самого opengl 'а. А з цього приводу, я вважаю за потрібне, перейти безпосередньо до основного розділу даної роботи. Тобто приступити до розгляду стандартних функцій.

1. . h ” Аналіз графічного модуля "graphics. H"

- DOS . Як було вже сказано, даний модуль використовується для роботи з графікою під ОС MS - DOS. Функції, що використовуються в ньому, для роботи з графікою, та й як і сама графіка, досить примітивні. Отже, почнемо.

< graphics . h >). Для ініціалізації модуля потрібно підключити, так званий, заголовки (# include ). У цьому файлі описані всі функції, які потрібні для написання програми працює з "графікою".

1.1 Аналіз функції модуля

( & grdriver , & grmode , “ path ”); – функция инициализации графического режима, где & grdriver , & grmode , “ path ” – параметры загружаемого режима; initgraph (& grdriver, & grmode, "path"); - функція ініціалізації графічного режиму, де & grdriver, & grmode, "path" - параметри завантаження режиму;

и grmode – переменные типа integer ; grdriver і grmode - змінні типу integer;

” – путь к загружаемому драйверу графического режима. "Path" - шлях до завантажуваного драйверу графічного режиму.

(); – данная функция без каких либо параметров и закрывает текущий графический режим. Функція закриття графічного режиму: closegraph (); - дана функція без будь-яких параметрів і закриває поточний графічний режим.

( & grdriver , & grmode ); Функція визначення графічного драйвера і відео режиму: detectgraph (& grdriver, & grmode);

(); – возвращает указатель на заданную по умолчанию структуру палитры для текущего драйвера инициализированного по initgraph . Функція, що повертає структуру визначення палітри: getdefaultpalette (); - повертає покажчик на задану за замовчуванням структуру палітри для поточного драйвера ініціалізованої по initgraph.

(); – функция возвращает имя текущего графического драйвера. getdrivername (); - функція повертає ім'я поточного графічного драйвера.

etgraphmode (); – функция возвращает текущий графический режим. g etgraphmode (); - функція повертає поточний графічний режим.

( grdriver , & low , & high ); – функция возвращает диапазон режимов для данного графического драйвера, где grdriver , low , high – переменные типа integer . getmoderange (grdriver, & low, & high); - функція повертає діапазон режимів для даного графічного драйвера, де grdriver, low, high - змінні типу integer.

(); – сбрасывает текущие настройки в настройки по умолчанию. graphdefaults (); - скидає поточні налаштування в налаштування за замовчуванням.

(); – функция выделения памяти. _ Graphgetmem (); - функція виділення пам'яті. Цю функцію викликають підпрограми в графічній бібліотеці, щоб розподілити пам'ять. Цю функцію можна використовувати незалежно від графічної бібліотеки, викликавши її з вказанням потрібного обсягу пам'яті в байтах.

(); – функция освобождения памяти. _ Graphfreemem (); - функція звільнення пам'яті. (). Використовується в поєднанні з _ graphgetmem ().

(); – функция изменяет внутренний размер графического буфера. setgraphbufsize (); - функція змінює внутрішній розмір графічного буфера. (). Викликається до initgraph ().

(); – возвращает код ошибки для последней неудачно выполненной операции. graphresult (); - повертає код помилки для останньої невдало виконану операцію.

( int *name, int huge ( * detect )); – функция устанавливает драйвер определённый программистом. installuserdriver (int * name, int huge (* detect)); - функція встановлює драйвер певний програмістом. – название нового драйвера, * detect – указатель на дополнительную функцию авто определения, которая может сопровождать новый драйвер. * Name - назва нового драйвера, * detect - покажчик на додаткову функцію авто визначення, яка може супроводжувати новий драйвер. Ця функція (авто визначення) не бере ні яких параметрів і повертає цілочисельне значення.

( * grdriver ) – Функция сообщает графической системе, что драйвер устройства, на который указывает * grdriver был включён во время “линковки”. registerbgidriver (* grdriver) - Функція повідомляє графічній системі, що драйвер пристрою, на який вказує * grdriver був включений під час "компонування".

( * font ) – Функция информирует графическую систему, что шрифт, на который указывает * font был включен во время “линковки”. registerbgifont (* font) - Функція інформує графічну систему, що шрифт, на який вказує * font був включений під час "компонування".

() – Функция восстанавливает режим, существовавший до активизации графического режима функцией initgraph (). restorecrtmode () - Функція відновлює режим, що існував до активізації графічного режиму функцією initgraph ().

( int x , int y , int stangle , int endangle , int radius ); – Функция рисует дугу, по заданным координатам x , y , начальным и конечным углом stangle , endangle и заданным радиусом radius . arc (int x, int y, int stangle, int endangle, int radius); - Функція малює дугу, за заданими координатами x, y, початковим і кінцевим кутом stangle, endangle і заданим радіусом radius.

( int left , int top , int right , int bottom ); – Функция рисует прямоугольник начиная от левого верхнего угла с координатами left , top до правого нижнего угла с координатами right , bottom . bar (int left, int top, int right, int bottom); - Функція малює прямокутник починаючи від лівого верхнього кута з координатами left, top до правого нижнього кута з координатами right, bottom.

3 d ( int left , int top , int right , int bottom , int depth ); – Функция рисует “трёхмерный прямоугольник” или, так сказать, подобие параллелепипеда, начиная от верхнего левого угла, до правого нижнего угла и с указанием глубины depth . bar 3 d (int left, int top, int right, int bottom, int depth); - Функція малює "тривимірний прямокутник" або, так би мовити, подобу паралелепіпеда, починаючи від верхнього лівого кута, до правого нижнього кута і з зазначенням глибини depth .

( int x , int y , int radius ); – Функция рисует окружность с центром в точке с координатами ( x , y ) и радиусом radius . circle (int x, int y, int radius); - Функція малює коло з центром в точці з координатами (x, y) і радіусом radius.

(); – Функция очищает экран в графическом режиме и возвращает текущую позицию указателя в точку с координатами ( 0, 0). cleardevice (); - Функція очищає екран в графічному режимі і повертає поточну позицію покажчика в точку з координатами (0, 0).

(); – Функция стирает область просмотра и перемещает текущую позицию в точку с координатами ( 0, 0), относительно области просмотра. clearviewport (); - Функція стирає область перегляду і переміщує поточну позицію в точку з координатами (0, 0), щодо області перегляду.

( int numpoints , int * polypoints ); – Функция рисует полигон с количеством вершин numpoints и координатами вершин * polypoints . drawpoly (int numpoints, int * polypoints); - Функція малює полігон з кількістю вершин numpoints і координатами вершин * polypoints. является одномерным массивом. * Polypoints одномірно масивом.

( int x , int y , int stangle , int endangle , int xradius , int yradius ); – Функция рисует эллипс с координатами в точке ( x , y ), начальным и конечным углами stangle , endangle , и радиусами xradius , yradius по осям x и y . ellipse (int x, int y, int stangle, int endangle, int xradius, int yradius); - Функція малює еліпс з координатами в точці (x, y), початковим і кінцевим кутами stangle, endangle, і радіусами xradius, yradius по осях x і y.

( int numpoints , int * polypoints ); – Функция рисует и закрашивает заданным цветом полигон. fillpoly (int numpoints, int * polypoints); - Функція малює і зафарбовує заданим кольором полігон.

( int x , int y , int xradius , int yradius ); – Функция рисует закрашенный эллипс. fillelipse (int x, int y, int xradius, int yradius); - Функція малює зафарбований еліпс.

( int x , int y , int border ); – Область, ограниченная цветной границей закрашивается установленным образцом и цветом. floodfill (int x, int y, int border); - Область, обмежена кольоровий кордоном зафарбовується встановленим зразком і кольором.

( & arcinfo ); – Функция возвращает координаты последней точки, на которую был переведён указатель, где параметр & arcinfo объявлен как struct arccoordstype arcinfo . getarccoords (& arcinfo); - Функція повертає координати останньої точки, на яку був переведений покажчик, де параметр & arcinfo оголошений як struct arccoordstype arcinfo.

( & xasp , & yasp ); – Получает значения коэффициента сжатия в & xasp , & yasp , где xasp , yasp являются переменными типа integer . getaspectratio (& xasp, & yasp); - Отримує значення коефіцієнта стиску в & xasp, & yasp, де xasp, yasp є змінними типу integer.

() – Возвращает значение типа integer текущего цвета фона. getbkcolor () - Повертає значення типу integer поточного кольору фону.

() – Возвращает значение типа integer установленного на данный момент цвета. getcolor () - Повертає значення типу integer встановленого на даний момент кольору.

() – ( дополнение) Возвращает структуру определения палитры в переменную объявленную как struct palettetype far *<имя_переменной>=( void *) 0;. getdefaultpalette () - (доповнення) Повертає структуру визначення палітри в змінну оголошену як struct palettetype far * <ім'я_змінної> = (void *) 0;.

( char far * pattern ); – Копирует определённый пользователем заполненный образец в память. getfillpattern (char far * pattern); - Копіює визначений користувачем заповнений зразок у пам'ять.

( & fillinfo ); – Получает информацию о текущих настройках стиля и цвета, где параметр & fillinfo объявлен как struct fillsettingstype fillinfo . getfillsetting (& fillinfo); - Отримує інформацію про поточні настройки стилю і кольору, де параметр & fillinfo оголошений як struct fillsettingstype fillinfo.

( int left , int top , int right , int bottom , void far * bitmap ); – Сохраняет картинку в специально отведённой области памяти, где left , top , right , bottom координаты картинки, а * bitmap указатель на область памяти. getimage (int left, int top, int right, int bottom, void far * bitmap); - Зберігає зображення в спеціально відведеній області пам'яті, де left, top, right, bottom координати картинки, а * bitmap покажчик на область пам'яті.

( & lineinfo ); – Получает текущий тип линии, образец и толщину, где параметр & lineinfo объявлен как struct linesettingstype lineinfo . getlinesettings (& lineinfo); - Отримує поточний тип лінії, зразок і товщину, де параметр & lineinfo оголошений як struct linesettingstype lineinfo.

(); – Возвращает значение типа integer , которое соответствует номеру цвета. getmaxcolor (); - Повертає значення типу integer, яке відповідає номеру кольору.

(); – Возвращает значение типа integer , которое соответствует максимальному номеру графического режима, для текущего драйвера. getmaxmode (); - Повертає значення типу integer, яке відповідає максимальному номером графічного режиму, для поточного драйвера.

(); – Возвращает значение типа integer , которое соответствует максимальному количеству точек по оси x для текущего графического режима. getmaxx (); - Повертає значення типу integer, яке відповідає максимальній кількості точок по осі x для поточного графічного режиму.

(); – Возвращает значение типа integer , которое соответствует максимальному количеству точек по оси y для текущего графического режима. getmaxy (); - Повертає значення типу integer, яке відповідає максимальній кількості точок по осі y для поточного графічного режиму.

( int mode _ number ); – Возвращает значение типа integer , которое соответствует указанному графическому режиму. getmodename (int mode _ number); - Повертає значення типу integer, яке відповідає зазначеному графічному режиму.

( & palette ); – Получает информацию о текущей палитре, где параметр & palette объявлен как struct palettetype palette . getpalette (& palette); - Отримує інформацію про поточну палітрі, де параметр & palette оголошений як struct palettetype palette.

(); – Функция возвращает значение типа integer , соответствующее количеству цветов палитры для текущего графического режима. getpalettesize (); - Функція повертає значення типу integer, що відповідає кількості квітів палітри для поточного графічного режиму.

( int x , int y ); – Функция возвращает номер цвета точки, находящейся по координатам ( x , y ). getpixel (int x, int y); - Функція повертає номер кольору точки, що знаходиться за координатами (x, y).

( & textinfo ); – Функция возвращает текущие настройки фонта для текущего графического режима, где параметр & textinfo определён как struct textsettingstype textinfo . gettextsettings (& textinfo); - Функція повертає поточні налаштування фонта для поточного графічного режиму, де параметр & textinfo визначений як struct textsettingstype textinfo.

( & viewinfo ); – Получает информацию о текущей области просмотра, где параметр & viewinfo определяется как struct viewporttype viewinfo . getviewsettings (& viewinfo); - Отримує інформацію про поточну області перегляду, де параметр & viewinfo визначається як struct viewporttype viewinfo.

(); – Функция типа integer возвращает текущую позицию указателя по оси x . getx (); - Функція типу integer повертає поточну позицію покажчика по осі x.

(); – Функция типа integer возвращает текущую позицию указателя по оси y . gety (); - Функція типу integer повертає поточну позицію покажчика по осі y.

( int errorcode ); – Возвращает код ошибки в виде переменной errorcode типа intger . grapherrormsg (int errorcode); - Повертає код помилки у вигляді змінної errorcode типу intger.

( int left , int top , int right , int bottom ); – Определяет размер области памяти, необходимый для сохранения двоичного образа. imagesize (int left, int top, int right, int bottom); - Визначає розмір області пам'яті, необхідний для збереження двійкового образу.

( char far * name ); – Функция типа intger возвращает номер идентификатора шрифта, который можно передать функции settextstyle для выбора данного шрифта. installuserfont (char far * name); - Функція типу intger повертає номер ідентифікатора шрифту, який можна передати функції settextstyle для вибору даного шрифту. это путь к файлу шрифта. Параметр * name це шлях до файлу шрифту. Одночасно цією функцією можна підключити до двадцяти шрифтів.

( int x 0, int y 0, int x 1, int y 1); – Функция рисует линию от точки с координатами x 0, y 0 до точки с координатами x 1, y 1. line (int x 0, int y 0, int x 1, int y 1); - Функція малює лінію від точки з координатами x 0, y 0 до точки з координатами x 1, y 1. Не оновлює поточну позицію.

( int dx , int dy ); – Функция рисует линию от текущей позиции до точки, находящейся на относительном расстоянии от текущей позиции, затем передвигает текущую позицию. linerel (int dx, int dy); - Функція малює лінію від поточної позиції до точки, що знаходиться на відносному відстані від поточної позиції, потім пересуває поточну позицію.

( int x , int y ); – Рисует линию от текущей позиции до точки с координатами ( x , y ), затем переносит текущую позицию в ( x , y ). lineto (int x, int y); - Малює лінію від поточної позиції до точки з координатами (x, y), потім переносить поточну позицію в (x, y).

( int dx , int dy ); – Перемещает текущую позицию на относительное растояние. moverel (int dx, int dy); - Переміщає поточну позицію на відносне відстань.

( int x , int y ); – Перемещает текущую позицию в точку с координатами ( x , y ). moveto (int x, int y); - Переміщає поточну позицію в точку з координатами (x, y).

( char far * textstring ); – Выводит строку в графическом режиме. outtext (char far * textstring); - Виводить рядок у графічному режимі. Рядок повинен полягати в "".

( int x , int y , char far * textstring ); – Выводит строку в графическом режиме предварительно перейдя в точку с координатами ( x , y ). outtextxy (int x, int y, char far * textstring); - Виводить рядок у графічному режимі попередньо перейшовши в точку з координатами (x, y).

Рисует pieslice (int x, int y, int stangle, int endangle, int radius); - Малює і зафарбовує замкнутий сектор кола.

Выводит putimage (int left, int top, void far * bitmap, int op); - Виводить бітовий образ на екран.

Рисует putpixel (int x, int y, int color); - Малює точку з координатами (X, y) і кольором color.

Рисует rectangle (int left, int top, int right, int bottom); - Малює прямокутник від точки з координатами (Left, top) до точки з координатами (Right, bottom).

( void far * driver ); – Данная функция используется для регистрации удалённых графических драйверов. Registerfarbgidriver (void far * driver); - Дана функція використовується для реєстрації віддалених графічних драйверів.

( void far * font ); – Данная функция используется для регистрации удалённых шрифтов. Registerfarbgifont (void far * font); - Дана функція використовується для реєстрації віддалених шрифтів.

( int x , int y , int stangle , int endangle , int xradius , int yradius ); – Функция рисует сектор круга установленным цветом, затем заполняет его используя образец и цвет, установленные функциями setfillstyle или setfillpattern . sector (int x, int y, int stangle, int endangle, int xradius, int yradius); - Функція малює сектор кола встановленим кольором, потім заповнює його використовуючи зразок і колір, встановлені функціями setfillstyle або setfillpattern.

( int page ); – Устанавливает активную страницу для графического вывода. setactivepage (int page); - Встановлює активну сторінку для графічного виведення.

( & palette ); – Устанавливает полную палитру цветов для данного режима, где переменная & palette определена как struct palettetype palette . setallpalette (& palette); - Встановлює повну палітру кольорів для даного режиму, де змінна & palette визначена як struct palettetype palette.

( int xasp , int yasp ); – Заменяет заданный по умолчанию аспект сжатия графической системы. setaspectratio (int xasp, int yasp); - Заміняє заданий за замовчуванням аспект стиснення графічної системи.

( int color ); – Устанавливает цвет фона по его номеру заданному переменной color . setbkcolor (int color); - Встановлює колір фону за його номером заданому змінної color.

( int color ); – Устанавливает цвет по его номеру заданному переменной color . setcolor (int color); - Встановлює колір за його номером заданому змінної color.

( char far * upattern , int color ); – Выбирает определённый пользователем образец заливки. setfillpattern (char far * upattern, int color); - Вибирає визначений користувачем зразок заливки.

( int pattern , int color ); – Функция устанавливает образец и цвет заливки. setfillstyle (int pattern, int color); - Функція встановлює зразок і колір заливки.

( int mode ); – Устанавливает систему в графический режим, определённый параметром mode . setgraphmode (int mode); - встановлює систему в графічний режим, визначений параметром mode. Скидає всі налаштування в положення "за замовчуванням". Очищує екран.

( int linestyle , unsigned upattern , int thickness ); – Устанавливает стиль рисуемых линий для функций рисования line , lineto , rectangle , drawpoly , etc . setlinestyle (int linestyle, unsigned upattern, int thickness); - Встановлює стиль змальованих ліній для функцій малювання line, lineto, rectangle, drawpoly, etc.

( int colornum , int color ); – Устанавливает палитру от цвета colornum до цвета color . setpalette (int colornum, int color); - встановлює палітру від кольору colornum до кольору color.

( int colornum , int red , int green , int blue ); – Данная функция может использоваться с IBM 8514 и VGA драйверами. setrgbpalette (int colornum, int red, int green, int blue); - Дана функція може використовуватися з IBM 8514 і VGA драйверами.

( int horiz , int vert ); – Устанавливает выравнивание текста для графического режима. settextjustify (int horiz, int vert); - Задає вирівнювання тексту для графічного режиму. За умовчанням коштує вирівнювання по верхньому лівому кутку.

( int font , int direction , int charsize ); – Устанавливает характеристики текста: стиль, положение( горизонтальное или вертикальное), размер шрифта. settextstyle (int font, int direction, int charsize); - встановлює характеристики тексту: стиль, положення (горизонтальне або вертикальне), розмір шрифту.

( int multx , int divx , int multy , int divy ); – Устанавливает определённый пользователем “коэффициент сжатия” шрифта. setusercharsize (int multx, int divx, int multy, int divy); - встановлює певний користувачем "коефіцієнт стиснення" шрифту. : divx , высота как multy : divy . За замовчуванням ширина шрифту визначена як multx: divx, висота як multy: divy.

( int left , int top , int right , int bottom , int clip ); – Устанавливает новую область просмотра для графического вывода. setviewport (int left, int top, int right, int bottom, int clip); - встановлює нову область перегляду для графічного виведення. определяет отсечены или нет все рисунки текущей области просмотра. Параметр clip визначає відсічені чи ні всі малюнки поточної області перегляду.

( int page ); – Устанавливает страницу с номером page визуальной графической страницей. setvisualpage (int page); - Встановлює сторінку з номером page візуальної графічної сторінкою.

( int mode ); – Устанавливает режим вывода объектов в графическом режиме. setwritemode (int mode); - встановлює режим виведення об'єктів в графічному режимі. может принимать значения 0, которое соответствует режиму copy _ put или 1, соответствующее режиму xor _ put . Параметр mode може приймати значення 0, яке відповідає режиму copy _ put або 1, яке відповідає режиму xor _ put. _ put использует ассемблерную команду MOV , рисуя поверх всех объектов новый объект. Параметр copy _ put використовує ассемблерних команду MOV, малюючи поверх всіх об'єктів новий об'єкт. _ put использует команду XOR (команду неэквивалентности), замещая предыдущий объект таким же новым. Параметр xor _ put використовує команду XOR (команду нееквівалентності), заміщаючи попередній об'єкт таким же новим. _ put , вы получите первоначальный результат. Використовуючи двічі параметр xor _ put, ви отримаєте початковий результат.

( char far * textstring ); – Функция возвращает высоту строки в количестве точек. textheight (char far * textstring); - Функція повертає висоту рядка в кількості точок.

( char far * textstring ); – Функция возвращает ширину строки в количестве точек. textwidth (char far * textstring); - Функція повертає ширину рядка в кількості точок.

1.2 Аналіз констант, типів і глобальних змінних модуля

– Используется функцией getarccoords для получения параметров текущей области просмотра. arccoordstype - Використовується функцією getarccoords для отримання параметрів поточної області перегляду.

struct arccoordstype

{

int x, y; / * center points of arc * /

int xstart, ystart; / * start position * /

int xend, yend; / * end position * /

}

_ COLORS – Данная константа определяет цветовую схему, доступную для функция BGI , выполняющихся на CGA мониторах. CGA _ COLORS - Дана константа визначає кольорову схему, доступну для функція BGI, що виконуються на CGA моніторах. . H . Визначено в модулі GRAPHICS. H. , setbkcolor , setcolor , setpalette . Використовується функціями setallpalette, setbkcolor, setcolor, setpalette.

– Данная символьная константа устанавливает атрибут цвета символов на EGA и CGA мониторах. COLORS - Дана символьна константа встановлює атрибут кольору символів на EGA і CGA моніторах. . H . Визначено в модулі CONIO. H. . H ) textattr , textbackground , textcolor . Використовується функціями (функції описані в модулі CONIO. H) textattr, textbackground, textcolor.

_ COLORS – Данная константа определяет цветовую схему, доступную для функция BGI , выполняющихся на EGA мониторах. EGA _ COLORS - Дана константа визначає кольорову схему, доступну для функція BGI, що виконуються на EGA моніторах. . H . Визначено в модулі GRAPHICS. H. , setbkcolor , setcolor , setpalette . Використовується функціями setallpalette, setbkcolor, setcolor, setpalette.

_ patterns – Образцы заливки применяемые функциями getfillsettings и setfillstyle ( см. таблицу 1). fill _ patterns - Зразки заливки застосовувані функціями getfillsettings і setfillstyle (див. таблицю 1).
скачати

© Усі права захищені
написати до нас