cgol

a cairo-based Game Of Life
git clone git://bvnf.space/cgol.git
Log | Files | Refs

cgol.h (1402B)


      1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
     15
     16
     17
     18
     19
     20
     21
     22
     23
     24
     25
     26
     27
     28
     29
     30
     31
     32
     33
     34
/* Copyright (c) 2021 Ben Fuller
 *
 * Permission to use, copy, modify, and/or distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */

struct rgb {
    double r, g, b;
};

struct imgdata {
    double width, height;
    int ny, nx;           /* number of columns and rows */
    struct rgb a, i, b;   /* RGB for active, inactive, background pixels */
};

int alive(int x, int y, short *cells, int nx, int ny);
int evolve(short *cells, int nx, int ny);
int neighbours(int x, int y, short *cells, int nx, int ny);
#ifdef __TEST_VERBOSE
int verbose_neighbours(int x, int y, short *cells, int nx, int ny);
#endif
/* cells[i][j] should match i = img->ny, j = img->nx */
int png(struct imgdata *img, short *cells, char *fname);
void randomize(short *cells, int nx, int ny);