V10/cmd/pico/builtins.c

Compare this file to the similar file:
Show the results in this format:

#include <stdio.h>
#include <math.h>
#include <ctype.h>
#include "pico.h"

extern struct	SRC src[MANY];
extern short	CURSCRATCH, CUROLD;
extern char	frameb, metheus;
extern int	DEF_LL, DEF_NL;
extern float	fsqrt();

println(s, aa)
	char *s;
	long aa;
{
	char c, *t = s;
	int argc=1;
	long *aaa = &aa;

	for (;;)
	switch (c = *t++) {
	case '\0': return argc;
	case  '%': switch (c = *t++) {
		   case '\0': putc('%', stderr); return argc;
		   case  'd': fprintf(stderr, "%d", (int)*aaa);
			      aaa++; argc++; break;
		   case  's': fprintf(stderr, "%s", (char *)*aaa);
			      aaa++; argc++; break;
		   case  '%': putc('%', stderr); break;
		   default  : putc('%', stderr); putc(c, stderr); break;
		   }
		   break;
	default  : putc(c, stderr); break;
	}
}

Clamp(a){ return ((a < 0)?0:((a>=DEF_LL)?(DEF_LL-1):a)); }
Abs(a)	{ return ((a<0)?(-a):a); }

int Midx = 256, Midy = 256;

setmid()
{
	Midx = (Old->sx + (Old->ex - Old->sx)/2);
	Midy = (Old->sy + (Old->ey - Old->sy)/2);
}

r_polar(x, y)
{	register float dx = (float) (x - Midx);
	register float dy = (float) (y - Midy);

	return (int) fsqrt(dx*dx + dy*dy);
}

a_polar(x, y)
{
	return patan2(x-Midx, y-Midy);
}
A_polar(x, y)
{
	return Patan2(x-Midx, y-Midy);
}

Y_cart(r, a)
{
	return Midy+(r*Psin(a)/10000);
}
y_cart(r, a)
{	int b = Midy+(r*psin(a)/10000);
	return (b >= 0 && b < DEF_NL)?b:0;
}

X_cart(r, a)
{
	return Midx+(r*Pcos(a)/10000);
}
x_cart(r, a)
{	int b = Midx+(r*pcos(a)/10000);
	return (b >= 0 && b < DEF_LL)?b:0;
}

setzmap(i, z)
{
	redcmap(i, z);
	grncmap(i, z);
	blucmap(i, z);
	return z;
}

setcmap(i, r,g,b)
{
	redcmap(i, r);
	grncmap(i, g);
	blucmap(i, b);
	return r;
}

putframe(n)
{	char nr[128];
	int i;

	sprintf(nr, "frame.%6d", n);
	for (i = 11; i > 5; i--)
		if (nr[i] == ' ') nr[i] = '0';
	i = CUROLD; CUROLD = CURSCRATCH; CURSCRATCH = i;
	putdpix(nr, 0);
	i = CUROLD; CUROLD = CURSCRATCH; CURSCRATCH = i;
	return 1;
}

swap()
{
	setscratch(Scratch, Old);
	return 1;
}

getframe(n)
{	char nr[128];
	int i;

	sprintf(nr, "frame.%6d", n);
	for (i = 11; i > 5; i--)
		if (nr[i] == ' ') nr[i] = '0';
	return newscreen(nr);
}

yank(x, y)
{	if (frameb) fbyank(x, y);
	else if (metheus) metyank(x,y);
}

intexp(a) int a; {	return (int) exp((double) a); }
intlog(a) int a; {	return (int) 1024*log((double) a); }
intlog10(a) int a; {	return (int) 1024*log10((double) a); }
intsqrt(a) int a; {	return (int) sqrt((double) a); }
intpow(a, b) int a,b; {	return (int) pow((double) a, (double) b); }