From d38577795752713b081d09ac7a921b756de187ea Mon Sep 17 00:00:00 2001 From: Ivan Mahonin Date: May 06 2021 13:24:10 +0000 Subject: update documentation --- diff --git a/doc/helianthus-doc-ru.odt b/doc/helianthus-doc-ru.odt index c199e6d..827d549 100644 Binary files a/doc/helianthus-doc-ru.odt and b/doc/helianthus-doc-ru.odt differ diff --git a/doc/ru/animation.html b/doc/ru/animation.html index 2727552..8e72527 100644 --- a/doc/ru/animation.html +++ b/doc/ru/animation.html @@ -34,7 +34,7 @@

Анимация загружается установленной на паузу — то есть по-умолчанию она не воспроизводится. Запустить воспроизведение можно функцией animationPlay, снова поставить на паузу — animationPause. Кроме того анимация по-умолчанию зациклена, то есть когда она проиграет до конца — она сразу же начинается сначала. Вы можете это изменить используя функцию animationSetLoop.

-

Ещё один важный параметр анимации это скорость её воспроизведения. По-умолчанию она равна общей частоте перерисовки кадров (см. worldSetFrameRate), но если задан диапазон частоты — переменная частота кадров (worldSetFrameRateEx), то берётся значение из этого диапазона ближайшее к 24 кадрам в секунду. Если вас это не устраивает, задайте свою частоту смены кадров функцией animationSetFps.

+

Ещё один важный параметр анимации это скорость её воспроизведения. По-умолчанию она равна общей частоте перерисовки кадров (см. windowSetFrameRate), но если задан диапазон частоты — переменная частота кадров (windowSetFrameRateEx), то берётся значение из этого диапазона ближайшее к 24 кадрам в секунду. Если вас это не устраивает, задайте свою частоту смены кадров функцией animationSetFps.

Вы можете и вручную управлять воспроизведением анимации — используйте функции animationNextFrame, animationSetFrame, animationAddTime и animationSetPos.

@@ -115,7 +115,7 @@ if (imageLoad("image.png", &width, &height, &data)) {

Загрузить текстуру из файла PNG или цепочку кадров анимации в формате PNG из папки.

-

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

+

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

Если файл не удалось загрузить файл(ы), то функция вернёт анимацию с нулевым количеством кадров.

@@ -320,7 +320,7 @@ own — если TRUE, то об удалении текстуры из �

void animationPlay(Animation animation);

-

Включает воспроизведение анимации. Внутренний счётчик времени будет автоматически обновляться библиотекой Helianthus между вызовами функции перерисовки кадра (worldSetDraw).

+

Включает воспроизведение анимации. Внутренний счётчик времени будет автоматически обновляться библиотекой Helianthus между вызовами функции перерисовки кадра (windowSetDraw).

Если вы хотите управлять анимацией вручную, то не вызывайте эту функцию, а воспользуйтесь функциями animationAddTime, animationSetPos, animationNextFrame, animationSetFrame.

diff --git a/doc/ru/common.html b/doc/ru/common.html index 8fae1fb..d4df932 100644 --- a/doc/ru/common.html +++ b/doc/ru/common.html @@ -28,9 +28,9 @@

Для подключения и использования библиотеки Helianthus нужно:
- подключить файл <helianthus.h>
-- создать и зарегистрировать функции для начальной загрузки и для перерисовки кадра (см. worldSetInit и worldSetDraw)
-- также вы можете зарегистрировать функцию для выполнения каких-либо действий при завершении программы (worldSetDeinit);
-- вызвать функцию worldRun для запуска вашей программы

+- создать и зарегистрировать функции для начальной загрузки и для перерисовки кадра (см. windowSetInit и windowSetDraw)
+- также вы можете зарегистрировать функцию для выполнения каких-либо действий при завершении программы (windowSetDeinit);
+- вызвать функцию windowRun для запуска вашей программы.

Вот что должно получиться:

@@ -49,42 +49,42 @@ void draw() { } int main() { -    worldSetInit(&init); -    worldSetDraw(&draw); -    worldRun(); +    windowSetInit(&init); +    windowSetDraw(&draw); +    windowRun();     return 0; } -

После завершения работы Helianthus (при окончании выполнения функции worldRun) все созданные вами объекты библиотеки будут удалены автоматически. Если вы хотите удалить что-то вручную, смотрите функции удаления для соответствующих объектов (spriteDestroy, groupDestroy, soundDestroy, fontDestroy, textLayoutDestroy, animationDestroy, framebufferDestroy, closeDirectory).

+

После завершения работы Helianthus (при окончании выполнения функции windowRun) все созданные вами объекты библиотеки будут удалены автоматически. Если вы хотите удалить что-то вручную, смотрите функции удаления для соответствующих объектов (spriteDestroy, groupDestroy, soundDestroy, fontDestroy, textLayoutDestroy, animationDestroy, framebufferDestroy, closeDirectory).

-

Вы можете задать размер окна программы функциями worldSetSize, worldSetWidth, worldSetHeight и задать заголовок окна функцией worldSetTitle. В отличие от большинства функций Helianthus эти функции можно вызывать до запуска worldRun.

+

Вы можете задать размер окна программы функциями windowSetSize, windowSetWidth, windowSetHeight и задать заголовок окна функцией windowSetTitle. В отличие от большинства других функций Helianthus эти функции можно вызывать до запуска windowRun.

-

Изначально окно имеет фиксированный размер, который вы можете менять только из программы, командами указанными выше. Однако вы можете это изменить и разрешить пользователю изменять размер окна, смотрите функцию worldSetResizable.

+

Изначально окно имеет фиксированный размер, который вы можете менять только из программы, командами указанными выше. Однако, вы можете это изменить и разрешить пользователю изменять размер окна, смотрите функцию windowSetResizable.

-

Окно программы непрерывно перерисовывается с частотой 24 кадра в секунду. Частоту перерисовки вы можете поменять при помощи функции worldSetFrameRate.

+

Окно программы непрерывно перерисовывается с частотой 24 кадра в секунду. Частоту перерисовки вы можете поменять при помощи функции windowSetFrameRate.

-

Программа ведёт отсчёт времени и кадров с момента запуска вы можете получить значение этих счётчиков пи помощи функций worldGetSeconds и worldGetFrameCount. Длительность одного кадра (длительность предыдущего отрисованного кадра) можно узнать вызвав функцию worldFrameTime.

+

Программа ведёт отсчёт времени и кадров с момента запуска вы можете получить значение этих счётчиков при помощи функций windowGetSeconds и windowGetFrameCount. Длительность одного кадра (длительность предыдущего отрисованного кадра) можно узнать вызвав функцию windowGetFrameTime.

Также Helianthus предоставляет некоторые общие функции которые не представлены в стандартном я зыке C:
- помощники в генерации случайных чисел (randomNumber, randomFloat);
- функция поворота вектора rotateVector;
- функции для чтения папок (см. openDirectory);
- функции проверки существования файлов и папок — fileExists, directoryExists.
-- функции для создания всплывающих окон с текстовыми сообщениями (messageBox, questionBox, questionBox3) и окон для ввода текста (askText, askTextEx).

+- функции для создания всплывающих окон с текстовыми сообщениями (messageBox, questionBox, questionBox3) и окон для ввода текста (askText, askTextf, askTextEx).

Функции:

-

void worldSetInit(Callback init);

+

void windowSetInit(Callback init);

-

Задать функцию для начальной инициализации (загрузки). Эта функция будет запущена только один раз в самом начале работы программы, как только будет вызвана функция worldRun.

+

Задать функцию для начальной инициализации (загрузки). Эта функция будет запущена только один раз в самом начале работы программы, как только будет вызвана функция windowRun.

Параметры:

init — указатель на функцию начальной инициализации (загрузки). Функция быть работать без параметров и не должна возвращать значение.

-

void worldSetDraw(Callback draw);

+

void windowSetDraw(Callback draw);

Задать основную функцию вашей программы — функцию для перерисовки кадра. Во время работы программы заданная функция будет запускаться несколько раз в секунду перед перерисовкой каждого кадра. Поместите в неё команды для движения и рисования.

@@ -92,19 +92,19 @@ int main() {

draw — указатель на функцию перерисовки кадра. Функция быть работать без параметров и не должна возвращать значение.

-

void worldSetDeinit(Callback deinit);

+

void windowSetDeinit(Callback deinit);

-

Задать функцию для выполнения каких-либо действий при завершении программы. Эта функция будет запущена только один раз при окончании работы программы, непосредственно перед завершением выполнения функции worldRun.

+

Задать функцию для выполнения каких-либо действий при завершении программы. Эта функция будет запущена только один раз при окончании работы программы, непосредственно перед завершением выполнения функции windowRun.

Параметры:

deinit — указатель на функцию которая будет выполнена перед завершением программы.

-

void worldRun();

+

void windowRun();

Запустить вашу программу на Helianthus. Перед вызовом этой функции нужно зарегистрировать функции начальной загрузки и перерисовки кадра (см. выше)

-

void worldStop();

+

void windowStop();

Остановить и закрыть программу. Программа всегда закрывается если пользователь нажмёт на крестик в верхнем правом углу окна, но вы можете добавить и свои способы выхода из программы. Например, в функцию перерисовки вы можете вставить возможность выхода по нажатию клавиши Esc (см. также раздел «Клавиатура и мышь»):

@@ -112,118 +112,126 @@ int main() { void draw() {     …     if (keyWentDown("escape")) { -        worldStop() +        windowStop()     }     … } -

int worldGetWidth();

+

int windowGetWidth();

-

Возвращает ширину окна в пикселях. См. также worldSetWidth.

+

Возвращает ширину окна в пикселях. См. также windowSetWidth.

-

void worldSetWidth(int width);

+

void windowSetWidth(int width);

-

Установить ширину окна. Эту функцию можно вызывать до вызова worldRun. См. также worldGetWidth, worldSetHeight, worldSetSize.

+

Установить ширину окна. Эту функцию можно вызывать до вызова windowRun. См. также windowGetWidth, windowSetHeight, windowSetSize.

Параметры:

width — новая ширина окна.

-

int worldGetHeight();

+

int windowGetHeight();

-

Возвращает высоту окна в пикселях. См. также worldSetHeight.

+

Возвращает высоту окна в пикселях. См. также windowSetHeight.

-

void worldSetHeight(int height);

+

void windowSetHeight(int height);

-

Установить высоту окна. Эту функцию можно вызывать до вызова worldRun. См. также worldGetHeight, worldSetWidth, worldSetSize.

+

Установить высоту окна. Эту функцию можно вызывать до вызова windowRun. См. также windowGetHeight, windowSetWidth, windowSetSize.

Параметры:

height — новая высота окна.

-

void worldSetSize(int width, int height);

+

void windowSetSize(int width, int height);

-

Установить сразу и ширину и высоту окна. Эту функцию можно вызывать до вызова worldRun. См. также worldSetWidth, worldSetHeight.

+

Установить сразу и ширину и высоту окна. Эту функцию можно вызывать до вызова windowRun. См. также windowSetWidth, windowSetHeight.

Параметры:

width — новая ширина окна;
height — новая высота окна.

-

int worldGetResizable();

+

int windowGetResizable();

Возвращает TRUE если пользователь имеет возможность изменять размер окна, в противном случае возвращает FALSE.

-

void worldSetResizable(int resizable);

+

void windowSetResizable(int resizable);

-

Включает или выключает возможность измерения размеров окна пользователем. Когда включено пользователь может менять размер окна растягивая его, хватаясь за границы, и, появляется кнопка для разворачивания окна на весь экран. Эту функцию можно вызывать до вызова worldRun.

+

Включает или выключает возможность измерения размеров окна пользователем. Когда включено пользователь может менять размер окна растягивая его, хватаясь за границы, и, появляется кнопка для разворачивания окна на весь экран. Эту функцию можно вызывать до вызова windowRun.

Параметры:

resizable — если TRUE, то разрешает пользователю изменять размер окна.

-

const char* worldGetTitle();

+

const char* windowGetTitle();

Возвращает установленный ранее заголовок окна (строка текста).

-

void worldSetTitle(const char *title);

+

void windowSetTitle(const char *title);

-

Установить заголовок окна. Эту функцию можно вызывать до вызова worldRun.

+

Установить заголовок окна. Эту функцию можно вызывать до вызова windowRun.

Параметры:

title — новый заголовок окна.

-

void worldSetFrameRate(double frameRate);

+

void windowSetFrameRate(double frameRate);

-

Установить фиксированную частоту перерисовки окна. Эту функцию можно вызывать до вызова worldRun. См. также: worldSetFrameRateEx, worldSetVariableFrameRate.

+

Установить фиксированную частоту перерисовки окна. Эту функцию можно вызывать до вызова windowRun. См. также: windowSetFrameRateEx, windowSetVariableFrameRate.

Параметры:

frameRate — количество кадров в секунду, от 1 до 100.

-

void worldSetVariableFrameRate();

+

void windowSetVariableFrameRate();

-

Установить переменную частоту перерисовки окна в диапазоне от 1 до 100 кадров в секунду. См. также: worldSetFrameRateEx.

+

Установить переменную частоту перерисовки окна в диапазоне от 1 до 100 кадров в секунду. См. также: windowSetFrameRateEx.

-

double worldGetMinFrameRate();

+

double windowGetMinFrameRate();

-

Возвращает ранее установленную минимальную частоту перерисовки окна. См. также: worldSetFrameRateEx.

+

Возвращает ранее установленную минимальную частоту перерисовки окна. См. также: windowSetFrameRateEx.

-

double worldGetMaxFrameRate();

+

double windowGetMaxFrameRate();

-

Возвращает ранее установленную максимальную частоту перерисовки окна. См. также: worldSetFrameRateEx().

+

Возвращает ранее установленную максимальную частоту перерисовки окна. См. также: windowSetFrameRateEx().

-

double worldSetFrameRateEx(double minFrameRate, double maxFrameRate);

+

double windowSetFrameRateEx(double minFrameRate, double maxFrameRate);

Установить переменную частоту перерисовки окна. В этом режиме Helianthus будет стараться перерисовать окно как можно быстрее — но не быстрее заданной максимальной частоты. Реальная частота кадров будет зависеть от скорости компьютера. Если скорость компьютера и сложность рисуемой сцены не позволяют обеспечить даже минимальной частоты перерисовки, то Helianthus будет подменять реальное время имитируя для вашего приложения работу на скорости соответствующей минимальной частоте кадров — как результат происходящее на экране движение замедлится.

Казалось бы это очевидное поведение, но нет. В большинству программ, и, наверное, в вашей будущей программе тоже, скорость движения объектов связана со счётчиком времени. И если кадр будет рисоваться очень медленно — более секунды, то за время одного кадра движущийся объект может пройти очень большое расстояние. При этом пользователь будет лишён возможности как-то наблюдать за движением или повлиять на него. Будет лучше в этой ситуации замедлить движение объекта, но за то нарисовать несколько дополнительных кадров, показывающих промежуточные точки движения. Для этого и устанавливается минимальная частота кадров.

-

См. также: worldGetMinFrameRate, worldGetMaxFrameRate, worldSetVariableFrameRate.

+

См. также: windowGetMinFrameRate, windowGetMaxFrameRate, windowSetVariableFrameRate.

Параметры:

minFrameRate — минимальная частота кадров;
maxFrameRate — максимальная частота кадров.

-

double worldGetFrameTime();

+

double windowGetFrameTime();

-

Возвращает длительность отрисовки предыдущего кадра в секундах. Для первого кадра возвращается расчётное значение длительности. См. также worldSetFrameRateEx.

+

Возвращает длительность отрисовки предыдущего кадра в секундах. Для первого кадра возвращается расчётное значение длительности. См. также windowSetFrameRateEx.

-

int worldGetFrameCount();

+

int windowGetFrameCount();

-

Возвращает количество кадров прошедшее с момента запуска программы (с момента вызова функции worldRun. См. также worldGetSeconds.

+

Возвращает количество кадров прошедшее с момента запуска программы (с момента вызова функции windowRun. См. также windowGetSeconds.

-

double worldGetSeconds();

+

double windowGetSeconds();

-

Возвращает количество секунд прошедшее с момента запуска программы (с момента вызова функции worldRun. Это время может отставать от реального, если компьютер слишком медленно рисовал кадры. См. также worldSetFrameRateEx, worldGetFrameCount.

+

Возвращает количество секунд прошедшее с момента запуска программы (с момента вызова функции windowRun. Это время может отставать от реального, если компьютер слишком медленно рисовал кадры. См. также windowGetMonotonicSeconds, windowSetFrameRateEx, windowGetFrameCount.

+ +

double windowGetMonotonicSeconds();

+ +

Возвращает количество секунд прошедшее с момента запуска программы (с момента вызова функции windowRun. Это время не зависит от частоты перерисовки кадров и мощности компьютера. См. также windowGetSeconds, windowGetMonotonicMilliseconds.

+ +

unsigned long long windowGetMonotonicMilliseconds();

+ +

Возвращает количество миллисекунд прошедшее с момента запуска программы (с момента вызова функции windowRun. Это время не зависит от частоты перерисовки кадров и мощности компьютера. См. также windowGetMonotonicSeconds.

int randomNumber(int min, int max);

-

Возвращает случайное целое число от min до max включительно.

+

Возвращает случайное целое число от min до max включительно. Используется стандартная функция rand() из <stdlib.h>.

Параметры:

@@ -232,7 +240,7 @@ void draw() {

double randomFloat();

-

Возвращает случайное дробное число в диапазоне от 0 до 1.

+

Возвращает случайное дробное число в диапазоне от 0 до 1. Используется стандартная функция rand() из <stdlib.h>.

void rotateVector(double *x, double *y, double angle);

@@ -250,7 +258,7 @@ void draw() {

Если папка не существует или её по какой-то причине невозможно открыть, то функция возвращает нулевой указатель (NULL).

-

Имена файлов можно получить при помощи функций directoryGetCount и directoryGet. После использования список нужно удалить функцией closeDirectory.

+

Имена файлов можно получить при помощи функций directoryGetCount, directoryGet и directoryGetFull. После использования список нужно удалить функцией closeDirectory. См. также openDirectoryEx.

Пример:

@@ -269,6 +277,19 @@ if (dir) {

path — путь к папке.

+

Directory openDirectoryEx(const char *path, const char *prefix, const char *suffix, int caseSensitive, int showFiles, int showDirectories);

+ +

Аналогично функции openDirectory, эта функция строит список имён файлов в указанной папке. Но в данном случае список фильтруется по заданным параметрам. Если папка не существует или её по какой-то причине невозможно открыть, то функция возвращает нулевой указатель (NULL). Созданный список (не NULL) после использования нужно удалить функцией closeDirectory.

+ +

Параметры:

+ +

path — путь к папке;
+prefix — включать только имена начинающиеся с указанной строки;
+suffix — включать только имена оканчивающиеся на указанную строку;
+caseSensitive — если TRUE, то функция будет отличать большие и маленькие буквы, в противном случае заглавное и строчное написание будет считаться одним и тем же символом;
+showFiles — если TRUE, то обычные файлы (не папки) будут включены в список;
+showDirectories — если TRUE, то папки будут включены в список.

+

void closeDirectory(Directory directory);

Удаляет ранее загруженный список файлов из памяти. См. также openDirectory.

@@ -281,7 +302,15 @@ if (dir) {

const char* directoryGet(Directory directory, int i);

-

Возвращает имя файла с указанным номером из ранее открытого списка. См. также openDirectory и directoryGet.

+

Возвращает имя файла с указанным номером из ранее открытого списка. См. также openDirectory и directoryGetFull.

+ +

Параметры:

+ +

i — номер файла в списке.

+ +

const char* directoryGetFull(Directory directory, int i);

+ +

Возвращает путь к файлу (путь к папке, указанный при открытии + имя файла) с указанным номером из ранее открытого списка. См. также openDirectory и directoryGet.

Параметры:

@@ -332,8 +361,6 @@ if (dir) { answer1 — такст варианта ответа номер 1. Удобно использовать с текстом «Нет» в наборе Да/Нет/Отмена;
answer2 — текст варианта ответа номер 2, этот вариант выбирается по-умолчанию если пользователь нажимает клавишу Enter. Удобно использовать с текстом «Да» в наборе Да/Нет/Отмена.

- -

int askText(const char *question, char *answer, int maxAnswerSize);

Создаёт окно для ввода текста. Пользователю будет предоставлена для редактирования строка текста из параметра answer. Работа программы будет приостановлена, до тех пор пока пользователь не закончит ввод и не закроет окно. Возвращает TRUE (число 1) при успешном вводе и FALSE (число 0) если пользователь отменил ввод. См. также askTextEx.

@@ -344,6 +371,15 @@ if (dir) { answer — указатель на строку куда будет сохранён ответ, также этот параметр используется чтобы задать начальное значение для текстового поля;
maxAnswerSize — максимальный размер для строки ответа в байтах включая ограничивающий нулевой байт.

+

int askTextf(const char *question, const char *format, ...);

+ +

Создаёт окно для ввода однострочного текста. Работа программы будет приостановлена, до тех пор пока пользователь не закончит ввод и не закроет окно. Введённый текст будет преобразован в переменные в соответствие со строкой форматирования (format), точно также как это делает стандартная функция scanf из модуля <stdio.h>. Возвращает количество успешно прочитанных аргументов при успешном вводе или стандартную константу EOF (обычно это -1) если пользователь отменил ввод. См. также askText.

+ +

Параметры:

+ +

question — сообщение для пользователя;
+format — строка форматирования.

+

int askTextEx(const char *question, char *answer, int maxAnswerSize, int multiline, int password);

Создаёт окно для ввода текста. Пользователю будет предоставлен для редактирования текст из параметра answer. Позволяет работать с многострочным текстом и прятать вводимые символы (для ввода пароля). Работа программы будет приостановлена, до тех пор пока пользователь не закончит ввод и не закроет окно. Возвращает TRUE (число 1) при успешном вводе и FALSE (число 0) если пользователь отменил ввод. См. также askText.

diff --git a/doc/ru/drawing.html b/doc/ru/drawing.html index 856f18c..cbd6f89 100644 --- a/doc/ru/drawing.html +++ b/doc/ru/drawing.html @@ -38,9 +38,9 @@ COLOR_BLUE — синий и т. д., все наименования загл�

Также вам помогут вычислить код цвета вспомогательные функции: colorByName, colorByRGB, colorByHSV, colorByYUV, а также их аналоги с альфа-каналом: colorWithAlpha, colorByNameA, colorByRGBA, colorByHSVA, colorByYUVA.

-

Вы можете также провести и обратную операцию — извлечь данные отдельных цветовых каналов из кода цвета, см. функции: colorGetRed, colorGetGreen, colorGetBlue, colorGetAlpha, colorGetHue, colorGetSaturation, colorGetValue, colorGetYLuminance, colorGetUChromanance, colorGetVChromanance.

+

Вы можете также провести и обратную операцию — извлечь данные отдельных цветовых каналов из кода цвета, см. функции: colorGetRed, colorGetGreen, colorGetBlue, colorGetAlpha, colorGetHue, colorGetSaturation, colorGetValue, colorGetYLuminance, colorGetUChromanance, colorGetVChromanance.

-

Для рисования линий и многоугольников используются функции moveTo, lineTo, closePath, strokePath. При этом функции stroke и fill задают цвет линий и заливки. Функция strokeWeight задаёт толщину линий. Вот пример рисования красного треугольника с чёрным контуром:

+

Для рисования линий и многоугольников используются функции moveTo, lineTo, closePath, strokePath. При этом функции stroke и fill задают цвет линий и заливки. Функция strokeWidth задаёт толщину линий. Вот пример рисования красного треугольника с чёрным контуром:

 fill(COLOR_RED);
@@ -55,7 +55,7 @@ closePath();
 
 

Также существуют отдельные функции для рисования точек (point), линий (line), прямоугольников (rect), правильных многоугольников (regularPolygon), эллипсов (ellipse) и дуг окружности (arc), смотрите описания функций ниже.

-

Для очистки экрана используйте функцию clear. Функция background задаёт цвет фона — функция clear закрасит все пиксели именно этим цветом. Обратите внимание, что перед рисованием очередного кадра картинка полностью затирается цветом фона. Если вам необходимо сохранять картинку, то вам либо придётся повторить все операции рисования выполненные ранее или обратиться к разделам «Буфер кадра» и «Текстуры и анимация», чтобы узнать, как можно рисовать не на экран, а в текстуру.

+

Для очистки экрана используйте функцию clear. Функция background задаёт цвет фона — функция clear закрасит все пиксели именно этим цветом. Обратите внимание, что перед рисованием очередного кадра картинка полностью затирается цветом фона. Если вам необходимо сохранять картинку, то вам либо придётся повторить все операции рисования выполненные ранее или обратиться к разделам «Буфер кадра» и «Текстуры и анимация», чтобы узнать, как можно рисовать не на экран, а в текстуру.

Для рисования текста см. раздел «Шрифты и текст».

@@ -193,7 +193,7 @@ closePath();

Возвращает зелёную составляющую цвета. См. также colorByRGBA.

-

double colorBlueRed(unsigned int colorCode);

+

double colorGetBlue(unsigned int colorCode);

Возвращает синюю составляющую цвета. См. также colorByRGBA.

@@ -259,7 +259,15 @@ closePath();

void noFill();

-

Отключить заливку фигур. После вызова этой функции все фигуры будут рисоваться без заполнения. См. также fill, fillTexture, saveState и restoreState.

+

Полностью отключить заливку фигур. После вызова этой функции все фигуры будут рисоваться без заполнения. См. также noFillColor, noFillTexture, fill, fillTexture, saveState и restoreState.

+ +

void noFillColor();

+ +

Установить прозрачный цвет заливки фигур. После вызова этой функции все фигуры будут рисоваться без заполнения. Однако, выбранная текстура будет сохранена в памяти и будет использована вновь при последующем включении непрозрачного цвета заливки. См. также noFill, fill, saveState и restoreState.

+ +

void noFillTexture();

+ +

Отключить заливку фигур текстурой. См. также noFill, fillTexture, saveState и restoreState.

void stroke(unsigned int colorCode);

@@ -283,10 +291,26 @@ closePath();

void noStroke();

-

Отключить рисование контура. После вызова этой функции все фигуры будут рисоваться без прорисовки контура. См. также stroke, strokeTexture, saveState и restoreState.

+

Отключить рисование контура. После вызова этой функции все фигуры будут рисоваться без прорисовки контура. См. также noStrokeColor, noStrokeTexture, stroke, strokeTexture, saveState и restoreState.

Важно: Так как текст рисуется цветом контура, эта функция полностью отключает вывод текста.

+

void noStrokeColor();

+ +

Установить прозрачный цвет рисования контуров. После вызова этой функции все фигуры будут рисоваться без контура. Однако, выбранная текстура будет сохранена в памяти и будет использована вновь при последующем включении непрозрачного цвета контура. См. также noStroke, stroke, strokeTexture, saveState и restoreState.

+ +

void noStrokeTexture();

+ +

Отключить текстурирование контуров фигур. См. также noStroke, strokeTexture, saveState и restoreState.

+ +

void enableAntialiasing();

+ +

Включить сглаживание (antialiasing). По-умолчанию включено. См. также disableAntialiasing, saveState и restoreState.

+ +

void disableAntialiasing();

+ +

Отключить сглаживание. См. также enableAntialiasing, saveState и restoreState.

+

void strokeWidth(double width);

Установить толщину линий и контуров. После вызова этой функции все линии и контуры будут рисоваться с заданной толщиной. Изначально толщина равна 1.

@@ -323,7 +347,7 @@ closePath();

void rect(double x, double y, double width, double height);

-

Нарисовать прямоугольник. Цвета заполнения и контура задаются заранее функциями fill и stroke.

+

Нарисовать прямоугольник. Цвета заполнения и контура задаются заранее функциями fill и stroke. См. также rectRounded, rectTextured.

Параметры:

@@ -331,6 +355,17 @@ closePath(); width — ширина прямоугольника;
height — высота прямоугольника.

+

void rectRounded(double x, double y, double width, double height, double radius);

+ +

Нарисовать прямоугольник со скруглёнными углами. Цвета заполнения и контура задаются заранее функциями fill и stroke. См. также rect, rectTextured.

+ +

Параметры:

+ +

x, y — координаты левого верхнего угла прямоугольника;
+width — ширина прямоугольника;
+height — высота прямоугольника;
+radius — радиус скругления углов.

+

void rectTextured(Animation animation, double x, double y, double width, double height);

Нарисовать прямоугольник и заполнить его выбранной текстурой. Цвет контура задаётся заранее функцией stroke. См. также функции rect, fillTexture, strokeTexture и раздел «Текстуры и анимация».

@@ -402,15 +437,16 @@ closePath();

x, y — координаты точки.

-

void regularPolygon(double x, double y, int sides, double size);

+

void regularPolygon(double x, double y, int sides, double radius, double angle);

-

Нарисовать правильный многоугольник заданного размера с центром в указанной точке. Цвета заполнения и контура задаются функциями fill и stroke.

+

Нарисовать правильный многоугольник с заданным радиусом и с центром в указанной точке. Цвета заполнения и контура задаются функциями fill и stroke.

Параметры:

x, y — координаты центра многоугольника;
sides — количество сторон;
-size — размер многоугольника — диаметр описанной окружности.

+radius — радиус многоугольника (радиус описанной окружности);
+angle — угол поворота многоугольника.

void translate(double x, double y);

@@ -451,8 +487,8 @@ closePath(); - - + + @@ -507,8 +543,8 @@ closePath(); - - + + diff --git a/doc/ru/font.html b/doc/ru/font.html index 72e1d1d..99b49b1 100644 --- a/doc/ru/font.html +++ b/doc/ru/font.html @@ -26,17 +26,26 @@

Шрифты и текст

-

Для вывода текста используются функции text, textAlign и textSize. Смотрите их описание ниже. Цвет выводимого теста определяется функцией stroke.

+

Для вывода текста используются функции text, textf, textAlign и textSize. Смотрите их описание ниже. Цвет выводимого теста определяется функцией stroke.

Вы можете загружать и использовать собственные шрифты из файлов (TrueType или OpenType) при помощи функций createFont и textFont.

-

Прежде чем выводить текст на экран формируется его разметка — определяются координаты и размеры каждого символа. Это делается автоматически и не требует никаких дополнительных действий. Однако для больших текстов эта операция может занять некоторое время. И если вы хотите увеличить производительность своей программы, то можете выполнить разметку текста заранее вызвав функцию createTextLayout и, затем, выводить её на экран функцией textLayoutDraw.

+

Прежде чем выводить текст на экран формируется его разметка — определяются координаты и размеры каждого символа. Это делается автоматически и не требует никаких дополнительных действий. Однако для больших текстов эта операция может занять некоторое время. И если вы хотите увеличить производительность своей программы, то можете выполнить разметку текста заранее вызвав функцию createTextLayout (или createTextLayoutf) и, затем, выводить её на экран функцией textLayoutDraw.

Функции:

-

void text(const char *text, double x, double y);

+

void text(double x, double y, const char *text);

-

Вывести текст в заданной точке. Расположение текста относительно указанной точки задаётся функцией textAlign. Шрифт и размер задаются функциями textFont и textSize. Цвет текста задаётся функцией stroke.

+

Вывести текст в заданной точке. Расположение текста относительно указанной точки задаётся функцией textAlign. Шрифт и размер задаются функциями textFont и textSize. Цвет текста задаётся функцией stroke. См. также textf, createTextLayout.

+ +

Параметры:

+ +

text — текст для вывода;
+x, y — координаты начальной точки.

+ +

void textf(double x, double y, const char *format, ...);

+ +

Форматированный вывод текста в заданной точке. Форматирование текста устроено так же как и в стандартной функции printf. Расположение текста относительно указанной точки задаётся функцией textAlign. Шрифт и размер задаются функциями textFont и textSize. Цвет текста задаётся функцией stroke. См. также text, createTextLayoutf.

Параметры:

@@ -113,7 +122,11 @@

Создать разметку для заданного текста. Разметка определяет координаты и размер каждого символа текста. Разметка запоминает действующий на момент её создания шрифт (textFont) и выравнивание (textAlign), и, рисование данной разметки будет производиться только этим шрифтом. Однако, вы можете менять размер шрифта (textSize) и его цвет (stroke) непосредственно перед выводом данной разметки на экран. Вы можете узнать ширину (textLayoutGetWidth) и высоту (textLayoutGetHeight) текстового блока, а также выводить на экран весь текст (textLayoutDraw) или отдельные его части (textLayoutDrawSubstr) с применением разных способов заливки.

-

См. также textLayoutDestroy.

+

См. также createTextLayoutf, textLayoutDestroy.

+ +

TextLayout createTextLayoutf(const char *format, ...);

+ +

Сформировать текст по заданному формату и создать разметку для этого текста. Форматирование текста устроено так же как и в стандартной функции printf. Подробнее о разметке текста смотрите в описании функции createTextLayout. См. также textLayoutDestroy.

void textLayoutDestroy(TextLayout layout);

@@ -133,13 +146,33 @@

Вывести в заданных координатах часть текста разметки длиной length начиная от start. См. textLayoutDraw, textLayoutDrawFrom, createTextLayout.

+

double textLayoutGetLeft(TextLayout layout);

+

double textLayoutGetTop(TextLayout layout);

+ +

Данные функции возвращают смещение верхнего левого угла границы текстового блока (см. рисунок) относительно базовой точки с учётом действующего в данный момент размера шрифта (textSize). См. также createTextLayout.

+ + + +

double textLayoutGetWidth(TextLayout layout);

-

Возвращает ширину текстового блока с учётом действующего в данный момент размера шрифта (textSize). См. также createTextLayout.

+

Возвращает ширину текстового блока с учётом действующего в данный момент размера шрифта (textSize). См. также createTextLayout, textLayoutGetTop.

double textLayoutGetHeight(TextLayout layout);

-

Возвращает ширину текстового блока с учётом действующего в данный момент размера шрифта (textSize). См. также createTextLayout.

+

Возвращает ширину текстового блока с учётом действующего в данный момент размера шрифта (textSize). См. также createTextLayout, textLayoutGetTop.

+ +

double textLayoutGetTopAscenderLine(TextLayout layout);

+ +

Возвращает координату верхней линии выносных элементов строчных букв (ascender-line) первой строки текстового блока с учётом действующего в данный момент размера шрифта (textSize). См. также createTextLayout, textLayoutGetTop.

+ +

double textLayoutGetTopXLine(TextLayout layout);

+ +

Возвращает координату средней линии (верхняя граница строчных букв, x-line) первой строки текстового блока с учётом действующего в данный момент размера шрифта (textSize). См. также createTextLayout, textLayoutGetTop.

+ +

double textLayoutGetBottomBaseline(TextLayout layout);

+ +

Возвращает координату базовой линии последней строки текстового блока с учётом действующего в данный момент размера шрифта (textSize). См. также createTextLayout, textLayoutGetTop.

int textLayoutCursorUp(TextLayout layout, int cursor);

diff --git a/doc/ru/functions.html b/doc/ru/functions.html index 5d61574..29cfa96 100644 --- a/doc/ru/functions.html +++ b/doc/ru/functions.html @@ -25,41 +25,46 @@

Все функции

Запуск и общие функции

-worldSetInit
-worldSetDraw
-worldSetDeinit
-worldRun
-worldStop
-worldGetWidth
-worldSetWidth
-worldGetHeight
-worldSetHeight
-worldSetSize
-worldGetResizable
-worldSetResizable
-worldGetTitle
-worldSetTitle
-worldSetFrameRate
-worldSetVariableFrameRate
-worldGetMinFrameRate
-worldGetMaxFrameRate
-worldSetFrameRateEx
-worldGetFrameTime
-worldGetFrameCount
-worldGetSeconds
+windowSetInit
+windowSetDraw
+windowSetDeinit
+windowRun
+windowStop
+windowGetWidth
+windowSetWidth
+windowGetHeight
+windowSetHeight
+windowSetSize
+windowGetResizable
+windowSetResizable
+windowGetTitle
+windowSetTitle
+windowSetFrameRate
+windowSetVariableFrameRate
+windowGetMinFrameRate
+windowGetMaxFrameRate
+windowSetFrameRateEx
+windowGetFrameTime
+windowGetFrameCount
+windowGetSeconds
+windowGetMonotonicSeconds
+windowGetMonotonicMilliseconds
randomNumber
randomFloat
rotateVector
openDirectory
+openDirectoryEx
closeDirectory
directoryGetCount
directoryGet
+directoryGetFull
fileExists
directoryExists
messageBox
questionBox
questionBox3
askText
+askTextf
askTextEx

Клавиатура и мышь

keyDown
@@ -73,8 +78,8 @@ mouseDidMove
mouseX
mouseY
-transformedMouseX
-transformedMouseY
+mouseTransformedX
+mouseTransformedY
keyEventGetCount
keyEventGet

Рисование

@@ -89,7 +94,7 @@ colorByYUVA
colorGetRed
colorGetGreen
-colorBlueRed
+colorGetBlue
colorGetAlpha
colorGetHue
colorGetSaturation
@@ -102,9 +107,15 @@ fill
fillTexture
noFill
+noFillColor
+noFillTexture
stroke
strokeTexture
noStroke
+noStrokeColor
+noStrokeTexture
+enableAntialiasing
+disableAntialiasing
strokeWidth
moveTo
lineTo
@@ -112,6 +123,7 @@ closePath
strokePath
rect
+rectRounded
rectTextured
ellipse
circle
@@ -134,6 +146,7 @@ restoreState

Шрифты и текст

text
+textf
textAlign
textSize
createFont
@@ -143,12 +156,18 @@ textFont
textFontDefault
createTextLayout
+createTextLayoutf
textLayoutDestroy
textLayoutDraw
textLayoutDrawFrom
textLayoutDrawSubstr
+textLayoutGetLeft
+textLayoutGetTop
textLayoutGetWidth
textLayoutGetHeight
+textLayoutGetTopAscenderLine
+textLayoutGetTopXLine
+textLayoutGetBottomBaseline
textLayoutCursorUp
textLayoutCursorDown
textLayoutCursorGetX
@@ -308,8 +327,9 @@ spriteMoveToDirection
spriteSetDestroy
spriteDraw
-worldGetSpriteCount
-worldGetSprite
+spriteUpdate
+spritesGetCount
+spritesGet
drawSprites

Группы спрайтов

createGroup
diff --git a/doc/ru/groups.html b/doc/ru/groups.html index d5b2e63..1e43bab 100644 --- a/doc/ru/groups.html +++ b/doc/ru/groups.html @@ -101,7 +101,7 @@

Возвращает TRUE, если спрайт содержится в группе, иначе возвращает FALSE.

-

Параметры:

+

Параметры:

sprite — спрайт для проверки.

diff --git a/doc/ru/image/figure5.png b/doc/ru/image/figure5.png new file mode 100644 index 0000000..b6ba7f1 Binary files /dev/null and b/doc/ru/image/figure5.png differ diff --git a/doc/ru/input.html b/doc/ru/input.html index 03b76aa..b700c71 100644 --- a/doc/ru/input.html +++ b/doc/ru/input.html @@ -122,19 +122,19 @@ void draw() {

double mouseX();

-

Возвращает координату X указателя мыши. Координаты считаются относительно верхнего левого угла окна. См. также: mouseY, transformedMouseX.

+

Возвращает координату X указателя мыши. Координаты считаются относительно верхнего левого угла окна. См. также: mouseY, mouseTransformedX.

double mouseY();

-

Возвращает координату Y указателя мыши. Координаты считаются относительно верхнего левого угла окна. См. также: mouseX, transformedMouseY.

+

Возвращает координату Y указателя мыши. Координаты считаются относительно верхнего левого угла окна. См. также: mouseX, mouseTransformedY.

-

double transformedMouseX();

+

double mouseTransformedX();

-

Возвращает координату X указателя мыши в системе координат рисования с учётом применённых трансформаций. См. также transformedMouseY, mouseX, translate, rotate, zoom.

+

Возвращает координату X указателя мыши в системе координат рисования с учётом применённых трансформаций. См. также mouseTransformedY, mouseX, translate, rotate, zoom.

-

double transformedMouseY();

+

double mouseTransformedY();

-

Возвращает координату Y указателя мыши в системе координат рисования с учётом применённых трансформаций. См. также transformedMouseX, mouseY, translate, rotate, zoom.

+

Возвращает координату Y указателя мыши в системе координат рисования с учётом применённых трансформаций. См. также mouseTransformedX, mouseY, translate, rotate, zoom.

int keyEventGetCount(KeyEvent mode);

@@ -142,10 +142,6 @@ void draw() {
STATE_FILL_COLORцвет заполнения, см. fillSTATE_FILL_COLORцвет заполнения, см. fill
STATE_FILL_TEXTUREобласть отсечения, см. clipRect
STATE_ANTIALIASINGсглаживание, см. enableAntialiasing
STATE_FILL
- - - - diff --git a/doc/ru/install.html b/doc/ru/install.html index ebf0baf..aa5b78a 100644 --- a/doc/ru/install.html +++ b/doc/ru/install.html @@ -91,7 +91,7 @@ cc `pkg-config --cflags --libs helianthus` myprogram.c -o myprogram -

Будьте внимательны здесь вам правильно необходимо указать путь к своей папке с файлами Helianthus, а также выбрать архитектуру (win32 или win64) для библиотеки.

+

Будьте внимательны здесь вам необходимо правильно указать путь к своей папке с файлами Helianthus, а также выбрать архитектуру (win32 или win64) для библиотеки.

В качестве среды разработки можете попробовать CodeBlocks (https://codeblocks.org). Возможно, это не самая лучшая среда разработки, но она позволяет быстро скомпилировать любой выбранный вами *.c файл без создания проекта. Выбирайте версию со встроенным Mingw-w64, тогда вам не придётся устанавливать его отдельно и настраивать под него CodeBlocks.

diff --git a/doc/ru/sprites.html b/doc/ru/sprites.html index 79f9fa4..ba9cbd1 100644 --- a/doc/ru/sprites.html +++ b/doc/ru/sprites.html @@ -45,8 +45,9 @@ Sprite mysprite; Animation myanimation; void init() { -    // Создать новый спрайт с центром в точке (200, 200) -    mysprite = createSprite(200, 200); +    // Создать новый спрайт размером 100x100 +    // с центром в точке (200, 200) +    mysprite = createSprite(200, 200, 100, 100);     // Загрузить файл изображения и назначить его нашему спрайту     myanimation = createAnimation("picture.png"); @@ -64,9 +65,9 @@ void draw() { } int main() { -    worldSetInit(&init); -    worldSetDraw(&draw); -    worldRun(); +    windowSetInit(&init); +    windowSetDraw(&draw); +    windowRun();     return 0; } @@ -106,23 +107,26 @@ int main() {

Функции:

-

Sprite createSprite(double x, double y);

+

Sprite createSprite(double x, double y, double width, double height);

-

Создаёт спрайт с центром в указанной точке. См. также createSpriteEx.

+

Создаёт спрайт заданного размера с центром в указанной точке. См. также createSpriteEx.

Параметры:

-

x, y — координаты центра нового спрайта.

+

x, y — координаты центра нового спрайта;
+width — ширина нового спрайта;
+height — высота нового спрайта.

-

Sprite createSpriteEx(double x, double y, double width, double height);

+

Sprite createSpriteEx(double x, double y, double width, double height, Animation animation);

-

Создаёт спрайт заданного размера с центром в указанной точке. См. также createSprite.

+

Создаёт спрайт заданного размера с центром в указанной точке с указанием анимации (текстуры). См. также createSprite, spriteSetAnimation, createAnimation.

Параметры:

x, y — координаты центра нового спрайта;
width — ширина нового спрайта;
-height — высота нового спрайта.

+height — высота нового спрайта;
+animation — анимация для нового спрайта.

void spriteDestroy(Sprite sprite);

@@ -442,13 +446,21 @@ int main() {

Нарисовать выбранный спрайт. См. также drawSprites.

-

int worldGetSpriteCount();

+

int spriteUpdate(Sprite sprite, double time);

+ +

Рассчитать положение, скорость и ускорение спрайта за указанный отрезок времени. Обычно эта функция вызывается автоматически между вызовами функции перерисовки кадра. Однако вы можете «заморозить» выбранные спрайты функцией spriteSetFrozen для того чтобы они не пересчитывались автоматически, но могли быть рассчитаны вручную с помощью данной функции. Кроме прочего эта функция обновляет таймер удаления спрайта (см. spriteSetDestroyTimer) и поэтому может удалить спрайт. Функция возвращает FALSE если спрайт был удалён, и TRUE если спрайт продолжает существовать.

+ +

Параметры:

+ +

time — длительность отрезка времени для перерасчёта.

+ +

int spritesGetCount();

-

Возвращает количество спрайтов существующих в программе в данный момент. См. также worldGetSprite.

+

Возвращает количество спрайтов существующих в программе в данный момент. См. также spritesGet.

-

Sprite worldGetSprite(int i);

+

Sprite spritesGet(int i);

-

Возвращает спрайт по указанному номеру. См. также worldGetSpriteCount.

+

Возвращает спрайт по указанному номеру. См. также spritesGetCount.

void drawSprites();

ТипОписание
KEYEVENT_KEY_DOWN удерживаемые в данный момент клавиши, см. keyDown