nuclear@0: /* nuclear@0: colcycle - color cycling image viewer nuclear@0: Copyright (C) 2016 John Tsiombikas nuclear@0: nuclear@0: This program is free software: you can redistribute it and/or modify nuclear@0: it under the terms of the GNU General Public License as published by nuclear@0: the Free Software Foundation, either version 3 of the License, or nuclear@0: (at your option) any later version. nuclear@0: nuclear@0: This program is distributed in the hope that it will be useful, nuclear@0: but WITHOUT ANY WARRANTY; without even the implied warranty of nuclear@0: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the nuclear@0: GNU General Public License for more details. nuclear@0: nuclear@0: You should have received a copy of the GNU General Public License nuclear@0: along with this program. If not, see . nuclear@0: */ nuclear@0: #ifndef IMAGE_H_ nuclear@0: #define IMAGE_H_ nuclear@0: nuclear@0: enum cycle_mode { nuclear@0: CYCLE_NORMAL = 0, nuclear@0: CYCLE_UNUSED, /* ? */ nuclear@0: CYCLE_REVERSE = 2, nuclear@0: CYCLE_PINGPONG = 3, nuclear@0: CYCLE_SINE_HALF = 4, /* sine -> [0, range/2] */ nuclear@0: CYCLE_SINE = 5 /* sine -> [0, range] */ nuclear@0: }; nuclear@0: nuclear@0: struct color { nuclear@0: unsigned char r, g, b; nuclear@0: }; nuclear@0: nuclear@0: struct colrange { nuclear@0: int low, high; nuclear@0: int cmode; nuclear@0: unsigned int rate; nuclear@0: struct colrange *next; nuclear@0: }; nuclear@0: nuclear@0: struct image { nuclear@0: int width, height; nuclear@0: int bpp; nuclear@0: struct color palette[256]; nuclear@0: struct colrange *range; nuclear@0: int num_ranges; nuclear@0: unsigned char *pixels; nuclear@0: }; nuclear@0: nuclear@0: int gen_test_image(struct image *img); nuclear@0: int load_image(struct image *img, const char *fname); nuclear@0: void destroy_image(struct image *img); nuclear@0: nuclear@0: #endif /* IMAGE_H_ */