From 788bd90c63250bd7413003a7a2e2785b7adb39c8 Mon Sep 17 00:00:00 2001 From: Ivan Mahonin Date: Dec 08 2020 14:46:21 +0000 Subject: circle --- diff --git a/demo/src/drawing.c b/demo/src/drawing.c index 4ec4417..6f3341b 100644 --- a/demo/src/drawing.c +++ b/demo/src/drawing.c @@ -18,7 +18,7 @@ void drawingInit() { void drawingDraw() { saveState(); - double x = 512; + double x = 512 - 64; double y = 512 - 64; strokeWidth(20); @@ -33,6 +33,11 @@ void drawingDraw() { ellipse(x, y, 48*2, 48); x += 48*2 + 16; + fill(colorByName("lime")); + stroke(colorByName("aliceblue")); + circle(x + 24, y + 24, 24); + x += 48 + 16; + fill(colorByName("green")); stroke(colorByName("magenta")); regularPolygon(x + 24, y + 24, 6, 48); diff --git a/doc/helianthus-doc-ru.odt b/doc/helianthus-doc-ru.odt index 9302be0..fd83f6f 100644 Binary files a/doc/helianthus-doc-ru.odt and b/doc/helianthus-doc-ru.odt differ diff --git a/doc/ru/drawing.html b/doc/ru/drawing.html index 7790fbb..2291219 100644 --- a/doc/ru/drawing.html +++ b/doc/ru/drawing.html @@ -25,7 +25,7 @@

Перечисленные ниже функции позволяют рисовать на экране различные фигуры и текст.

-

Для указания цвета используется его числовой код. Код можно записать в виде шестнадцатеричного числа, например: 0xFF0000AA — это полупрозрачный красный (также как #FF0000AA в формате web). Однако проще всего получить код используя вспомогательные функции: colorByName, colorByRGB, colorByHSV, colorByYUV, а также их аналоги с альфа-каналом: colorByNameA, colorByRGBA, colorByHSVA, colorByYUVA.

+

Для указания цвета используется его числовой код. Код можно записать в виде шестнадцатеричного числа, например: 0xFF0000AA — это полупрозрачный красный (также как #FF0000 в формате web/CSS3, только с добавлением двух цифр альфа-канала в конце). Однако проще всего получить код используя вспомогательные функции: colorByName, colorByRGB, colorByHSV, colorByYUV, а также их аналоги с альфа-каналом: colorByNameA, colorByRGBA, colorByHSVA, colorByYUVA.

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

@@ -70,25 +70,20 @@ closePath();

unsigned int colorByName(const char *colorName);

-

Функция генерирует код цвета по его текстовому наименованию.

- -

Вот список наименований:
-    "transparent",
-    "black",
-    "white",
-    "gray",
-    "red",
-    "green",
-    "blue",
-    "yellow",
-    "magenta",
-    "cyan",
-    "yellow",
-    "magenta",
-    "cyan",
-    "brown".

- -

Также поддерживаются цвета в кодировка #RRGGBBAA:
+

Функция генерирует код цвета по его текстовому наименованию в соответствии с CSS3.

+ +

Вот примеры наименований:
+    "transparent" — прозрачный,
+    "black" — чёрный,
+    "white" — белый,
+    "gray" — серый,
+    "red" — красный,
+    "green" — зелёный,
+    "blue" — синий,
+    "yellow" — жёлтый,
+    "brown" — коричневый.

+ +

Также поддерживаются цвета в кодировка #RRGGBB или #RRGGBBAA:
    #000000 — чёрный;
    #ff0000 — красный;
    #0000ff — синий;
@@ -329,7 +324,7 @@ closePath();

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

-

Нарисовать эллипс. Эллипс рисуется таким чтобы от вписался в ограничивающий прямоугольник (см. функцию rect). Следовательно для того чтобы нарисовать окружность нужно передать одинаковую ширину и высоту ограничивающего прямоугольника. Цвета заполнения и контура задаются заранее функциями fill и stroke.

+

Нарисовать эллипс. Эллипс рисуется таким чтобы от вписался в ограничивающий прямоугольник (см. функцию rect). Следовательно для того чтобы нарисовать окружность нужно передать одинаковую ширину и высоту ограничивающего прямоугольника. Цвета заполнения и контура задаются заранее функциями fill и stroke. См. также circle.

Параметры:

@@ -337,6 +332,15 @@ closePath(); width — ширина ограничивающего прямоугольника;
height — высота ограничивающего прямоугольника.

+

void circle(double x, double y, double radius);

+ +

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

+ +

Параметры:

+ +

x, y — координаты центра;
+radius — радиус.

+

void arc(double x, double y, double w, double h, double start, double stop);

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

diff --git a/doc/ru/functions.html b/doc/ru/functions.html index 73a736b..cb53fb3 100644 --- a/doc/ru/functions.html +++ b/doc/ru/functions.html @@ -108,6 +108,7 @@ rect
rectTextured
ellipse
+circle
arc
arcPath
line
diff --git a/src/drawing.c b/src/drawing.c index feb3a10..e5d4fd0 100644 --- a/src/drawing.c +++ b/src/drawing.c @@ -246,6 +246,9 @@ void ellipse(double x, double y, double width, double height) { } } +void circle(double x, double y, double radius) + { ellipse(x - radius, y - radius, 2*radius, 2*radius); } + void point(double x, double y) { saveStateEx(STATE_FILL | STATE_STROKE); HeliDrawingState *s = heliDrawingGetState(); diff --git a/src/drawing.h b/src/drawing.h index a3d7aaf..8a1abf9 100644 --- a/src/drawing.h +++ b/src/drawing.h @@ -109,6 +109,7 @@ double colorGetVChrominance(unsigned int colorCode); void rect(double x, double y, double width, double height); void rectTextured(Animation animation, double x, double y, double width, double height); void ellipse(double x, double y, double width, double height); +void circle(double x, double y, double radius); void arc(double x, double y, double w, double h, double start, double stop); void arcPath(double x, double y, double w, double h, double start, double stop); void line(double x1, double y1, double x2, double y2);