1
0
mirror of https://github.com/cc65/cc65.git synced 2024-06-20 05:29:39 +00:00

Added a tgi_pieslice function.

git-svn-id: svn://svn.cc65.org/cc65/trunk@4449 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
uz 2009-11-05 20:32:17 +00:00
parent bafd7a7279
commit eee4430061
5 changed files with 124 additions and 3 deletions

View File

@ -180,6 +180,7 @@ TGI_TEXT_VERTICAL = 1
.global _tgi_load_driver .global _tgi_load_driver
.global _tgi_outtext .global _tgi_outtext
.global _tgi_outtextxy .global _tgi_outtextxy
.global _tgi_pieslice
.global _tgi_setcolor .global _tgi_setcolor
.global _tgi_setdrawpage .global _tgi_setdrawpage
.global _tgi_setpalette .global _tgi_setpalette

View File

@ -4879,10 +4879,10 @@ be used in presence of a prototype.
<descrip> <descrip>
<tag/Function/Draw an elliptic arc in the current color. <tag/Function/Draw an elliptic arc in the current color.
<tag/Header/<tt/<ref id="tgi.h" name="tgi.h">/ <tag/Header/<tt/<ref id="tgi.h" name="tgi.h">/
<tag/Declaration/<tt/void __fastcall__ tgi_arc (int x, int y, <tag/Declaration/<tt/void __fastcall__ tgi_arc (int x, int y,
unsigned char rx, unsigned char ry, unsigned sa, unsigned ea);/ unsigned char rx, unsigned char ry, unsigned sa, unsigned ea);/
<tag/Description/The function draws an elliptic arc with center at x/y and <tag/Description/The function draws an elliptic arc with center at x/y and
radii rx/ry using the current drawing color. The arc covers the angle radii rx/ry using the current drawing color. The arc covers the angle
between sa and ea (startangle and endangle), which must be in the range between sa and ea (startangle and endangle), which must be in the range
0..360. 0..360.
<tag/Limits/<itemize> <tag/Limits/<itemize>
@ -4896,6 +4896,7 @@ of range.
<ref id="tgi_bar" name="tgi_bar">, <ref id="tgi_bar" name="tgi_bar">,
<ref id="tgi_circle" name="tgi_circle">, <ref id="tgi_circle" name="tgi_circle">,
<ref id="tgi_ellipse" name="tgi_ellipse">, <ref id="tgi_ellipse" name="tgi_ellipse">,
<ref id="tgi_pieslice" name="tgi_pieslice">,
<ref id="tgi_setcolor" name="tgi_setcolor"> <ref id="tgi_setcolor" name="tgi_setcolor">
<tag/Example/<verb> <tag/Example/<verb>
/* Draw the upper half of an ellipse */ /* Draw the upper half of an ellipse */
@ -4947,6 +4948,7 @@ be used in presence of a prototype.
<ref id="tgi_arc" name="tgi_arc">, <ref id="tgi_arc" name="tgi_arc">,
<ref id="tgi_bar" name="tgi_bar">, <ref id="tgi_bar" name="tgi_bar">,
<ref id="tgi_ellipse" name="tgi_ellipse">, <ref id="tgi_ellipse" name="tgi_ellipse">,
<ref id="tgi_pieslice" name="tgi_pieslice">,
<ref id="tgi_setcolor" name="tgi_setcolor"> <ref id="tgi_setcolor" name="tgi_setcolor">
<tag/Example/<verb> <tag/Example/<verb>
tgi_setcolor(TGI_COLOR_BLACK); tgi_setcolor(TGI_COLOR_BLACK);
@ -4974,6 +4976,7 @@ be used in presence of a prototype.
</descrip> </descrip>
</quote> </quote>
<sect1>tgi_done<label id="tgi_done"><p> <sect1>tgi_done<label id="tgi_done"><p>
<quote> <quote>
@ -5013,6 +5016,7 @@ be used in presence of a prototype.
<ref id="tgi_arc" name="tgi_arc">, <ref id="tgi_arc" name="tgi_arc">,
<ref id="tgi_bar" name="tgi_bar">, <ref id="tgi_bar" name="tgi_bar">,
<ref id="tgi_circle" name="tgi_circle">, <ref id="tgi_circle" name="tgi_circle">,
<ref id="tgi_pieslice" name="tgi_pieslice">,
<ref id="tgi_setcolor" name="tgi_setcolor"> <ref id="tgi_setcolor" name="tgi_setcolor">
<tag/Example/<verb> <tag/Example/<verb>
tgi_setcolor(TGI_COLOR_RED); tgi_setcolor(TGI_COLOR_RED);
@ -5346,6 +5350,7 @@ tgi_init(); //Set up the default palette and clear the screen.
</descrip> </descrip>
</quote> </quote>
<sect1>tgi_ioctl<label id="tgi_ioctl"><p> <sect1>tgi_ioctl<label id="tgi_ioctl"><p>
<quote> <quote>
@ -5380,6 +5385,7 @@ if (!tgi_busy()) {
</descrip> </descrip>
</quote> </quote>
<sect1>tgi_line<label id="tgi_line"><p> <sect1>tgi_line<label id="tgi_line"><p>
<quote> <quote>
@ -5400,6 +5406,7 @@ be used in presence of a prototype.
</descrip> </descrip>
</quote> </quote>
<sect1>tgi_lineto<label id="tgi_lineto"><p> <sect1>tgi_lineto<label id="tgi_lineto"><p>
<quote> <quote>
@ -5420,6 +5427,7 @@ be used in presence of a prototype.
</descrip> </descrip>
</quote> </quote>
<sect1>tgi_load<label id="tgi_load"><p> <sect1>tgi_load<label id="tgi_load"><p>
<quote> <quote>
@ -5440,6 +5448,7 @@ be used in presence of a prototype.
</descrip> </descrip>
</quote> </quote>
<sect1>tgi_load_driver<label id="tgi_load_driver"><p> <sect1>tgi_load_driver<label id="tgi_load_driver"><p>
<quote> <quote>
@ -5462,6 +5471,7 @@ be used in presence of a prototype.
</descrip> </descrip>
</quote> </quote>
<sect1>tgi_outtext<label id="tgi_outtext"><p> <sect1>tgi_outtext<label id="tgi_outtext"><p>
<quote> <quote>
@ -5482,6 +5492,7 @@ be used in presence of a prototype.
</descrip> </descrip>
</quote> </quote>
<sect1>tgi_outtextxy<label id="tgi_outtextxy"><p> <sect1>tgi_outtextxy<label id="tgi_outtextxy"><p>
<quote> <quote>
@ -5502,6 +5513,41 @@ be used in presence of a prototype.
</descrip> </descrip>
</quote> </quote>
<sect1>tgi_pieslice<label id="tgi_pieslice"><p>
<quote>
<descrip>
<tag/Function/Draw an elliptic pie slice in the current color.
<tag/Header/<tt/<ref id="tgi.h" name="tgi.h">/
<tag/Declaration/<tt/void __fastcall__ tgi_pie slice (int x, int y,
unsigned char rx, unsigned char ry, unsigned sa, unsigned ea);/
<tag/Description/The function draws an elliptic 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.
<tag/Limits/<itemize>
<item>The function is only available as fastcall function, so it may only
be used in presence of a prototype.
<item>The function behaves unexpectedly or may crash if the angles are out
of range.
</itemize>
<tag/Availability/cc65
<tag/See also/
<ref id="tgi_bar" name="tgi_arc">,
<ref id="tgi_bar" name="tgi_bar">,
<ref id="tgi_circle" name="tgi_circle">,
<ref id="tgi_ellipse" name="tgi_ellipse">,
<ref id="tgi_setcolor" name="tgi_setcolor">
<tag/Example/<verb>
/* Draw the closed upper half of an ellipse */
tgi_setcolor(TGI_COLOR_BLUE);
tgi_pieslice (50, 50, 40, 20, 0, 180);
</verb>
</descrip>
</quote>
<sect1>tgi_setcolor<label id="tgi_setcolor"><p> <sect1>tgi_setcolor<label id="tgi_setcolor"><p>
<quote> <quote>

View File

@ -226,6 +226,14 @@ void __fastcall__ tgi_arc (int x, int y, unsigned char rx, unsigned char ry,
* bevave unextectedly). * 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); void __fastcall__ tgi_bar (int x1, int y1, int x2, int y2);
/* Draw a bar (a filled rectangle) using the current color. */ /* Draw a bar (a filled rectangle) using the current color. */

View File

@ -32,7 +32,8 @@ CFLAGS = -Osir -g -T -t $(SYS) --forget-inc-paths -I . -I ../../include
C_OBJS = tgi_arc.o \ C_OBJS = tgi_arc.o \
tgi_load.o \ tgi_load.o \
tgi_load_driver.o \ tgi_load_driver.o \
tgi_load_vectorfont.o tgi_load_vectorfont.o \
tgi_pieslice.o
S_OBJS = tgi-kernel.o \ S_OBJS = tgi-kernel.o \
tgi_bar.o \ tgi_bar.o \

65
libsrc/tgi/tgi_pieslice.c Normal file
View File

@ -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 <tgi.h>
#include <tgi/tgi-kernel.h>
#include <cc65.h>
/*****************************************************************************/
/* 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)));
}