@@ -5482,6 +5492,7 @@ be used in presence of a prototype.
+
tgi_outtextxy
@@ -5502,6 +5513,41 @@ be used in presence of a prototype.
+
+tgi_pieslice
+
+
+
+/
+
+- The function is only available as fastcall function, so it may only
+be used in presence of a prototype.
+
- The function behaves unexpectedly or may crash if the angles are out
+of range.
+
+
,
+[,
+][,
+][,
+][
+]
+/* Draw the closed upper half of an ellipse */
+tgi_setcolor(TGI_COLOR_BLUE);
+tgi_pieslice (50, 50, 40, 20, 0, 180);
+
+
+
+
+
tgi_setcolor
diff --git a/include/tgi.h b/include/tgi.h
index a0cebe39f..46c7fa044 100644
--- a/include/tgi.h
+++ b/include/tgi.h
@@ -226,6 +226,14 @@ void __fastcall__ tgi_arc (int x, int y, unsigned char rx, unsigned char ry,
* bevave unextectedly).
*/
+void __fastcall__ tgi_pieslice (int x, int y, unsigned char rx, unsigned char ry,
+ unsigned sa, unsigned ea);
+/* Draw an ellipse pie slice with center at x/y and radii rx/ry using the
+ * current drawing color. The pie slice covers the angle between sa and ea
+ * (startangle and endangle), which must be in the range 0..360 (otherwise the
+ * function may behave unextectedly).
+ */
+
void __fastcall__ tgi_bar (int x1, int y1, int x2, int y2);
/* Draw a bar (a filled rectangle) using the current color. */
diff --git a/libsrc/tgi/Makefile b/libsrc/tgi/Makefile
index de9c3263d..f0721b0ea 100644
--- a/libsrc/tgi/Makefile
+++ b/libsrc/tgi/Makefile
@@ -32,7 +32,8 @@ CFLAGS = -Osir -g -T -t $(SYS) --forget-inc-paths -I . -I ../../include
C_OBJS = tgi_arc.o \
tgi_load.o \
tgi_load_driver.o \
- tgi_load_vectorfont.o
+ tgi_load_vectorfont.o \
+ tgi_pieslice.o
S_OBJS = tgi-kernel.o \
tgi_bar.o \
diff --git a/libsrc/tgi/tgi_pieslice.c b/libsrc/tgi/tgi_pieslice.c
new file mode 100644
index 000000000..f78d7a672
--- /dev/null
+++ b/libsrc/tgi/tgi_pieslice.c
@@ -0,0 +1,65 @@
+/*****************************************************************************/
+/* */
+/* tgi_pieslice.c */
+/* */
+/* Draw an ellipic pie slice */
+/* */
+/* */
+/* */
+/* (C) 2009, Ullrich von Bassewitz */
+/* Roemerstrasse 52 */
+/* D-70794 Filderstadt */
+/* EMail: uz@cc65.org */
+/* */
+/* */
+/* This software is provided 'as-is', without any expressed or implied */
+/* warranty. In no event will the authors be held liable for any damages */
+/* arising from the use of this software. */
+/* */
+/* Permission is granted to anyone to use this software for any purpose, */
+/* including commercial applications, and to alter it and redistribute it */
+/* freely, subject to the following restrictions: */
+/* */
+/* 1. The origin of this software must not be misrepresented; you must not */
+/* claim that you wrote the original software. If you use this software */
+/* in a product, an acknowledgment in the product documentation would be */
+/* appreciated but is not required. */
+/* 2. Altered source versions must be plainly marked as such, and must not */
+/* be misrepresented as being the original software. */
+/* 3. This notice may not be removed or altered from any source */
+/* distribution. */
+/* */
+/*****************************************************************************/
+
+
+
+#include
+#include
+#include
+
+
+
+/*****************************************************************************/
+/* Code */
+/*****************************************************************************/
+
+
+
+void __fastcall__ tgi_pieslice (int x, int y, unsigned char rx, unsigned char ry,
+ unsigned sa, unsigned ea)
+/* Draw an ellipse pie slice with center at x/y and radii rx/ry using the
+ * current drawing color. The pie slice covers the angle between sa and ea
+ * (startangle and endangle), which must be in the range 0..360 (otherwise the
+ * function may behave unextectedly).
+ */
+{
+ /* Draw an arc ... */
+ tgi_arc (x, y, rx, ry, sa, ea);
+
+ /* ... and close it */
+ tgi_line (x, y, x + tgi_imulround (rx, cc65_cos (sa)), y - tgi_imulround (ry, cc65_sin (sa)));
+ tgi_line (x, y, x + tgi_imulround (rx, cc65_cos (ea)), y - tgi_imulround (ry, cc65_sin (ea)));
+}
+
+
+