/*
  Contains the type definitions and prototypes for the graphics functions 
  listed below:

  drawLine();
  drawCircle();
  drawEllipse();

  */

#ifndef MYGRAPHICS_H

#define MYGRAPHICS_H

#include "ppmIO.h"

typedef Pixel Color_t;

typedef struct {
  long   row;
  long   col;
} Point_t;

typedef struct {
  long   top;
  long   left;
  long   bottom;
  long   right;
} Rect_t;

typedef struct {
  long    rows;
  long    cols;
  int    colors;
  Pixel  *image;
} Image_t;

typedef struct {
  int a;
} Module_t;

typedef double vector3_t[3];
typedef double vector4_t[3];
typedef double matrix3x3_t[3][3];
typedef double matrix4x4_t[4][4];


void plotPixel(long, long, Color_t, Image_t *);
void drawLine(Point_t, Point_t, Color_t, Image_t *);
void drawCircle(Point_t, long, Color_t, Image_t *);
void drawEllipse(Point_t, long, long, Color_t, Image_t *);

void hermiteSpline2D(vector3_t *, Color_t, Image_t *);
void cardinalSpline2D(vector3_t *, double, Color_t, Image_t *);

Module_t *BeginModule(void);
void EndModule(void);

#endif

