You've already forked pokecrystal-board
mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2025-09-08 08:13:02 -07:00
Add C build tools.
This commit is contained in:
53
tools/png_dimensions.c
Normal file
53
tools/png_dimensions.c
Normal file
@@ -0,0 +1,53 @@
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
void usage(void) {
|
||||
fprintf(stderr, "Usage: png_dimensions infile, outfile\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
void output_dimensions(char* png_filename, char* out_filename) {
|
||||
FILE* f;
|
||||
int width, height;
|
||||
int i;
|
||||
uint8_t bytes[4];
|
||||
uint8_t output;
|
||||
|
||||
f = fopen(png_filename, "rb");
|
||||
if (f == NULL) {
|
||||
fprintf(stderr, "failed to open file %s\n", png_filename);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
// width
|
||||
fseek(f, 16, SEEK_SET);
|
||||
fread(bytes, 1, 4, f);
|
||||
fclose(f);
|
||||
|
||||
width = 0;
|
||||
for (i = 0; i < 4; i++) {
|
||||
width |= bytes[i] << (8 * (3 - i));
|
||||
}
|
||||
width >>= 3;
|
||||
height = width;
|
||||
|
||||
output = width & 0xf;
|
||||
output |= (height & 0xf) << 4;
|
||||
|
||||
f = fopen(out_filename, "wb");
|
||||
if (f == NULL) {
|
||||
fprintf(stderr, "failed to open file %s\n", out_filename);
|
||||
exit(1);
|
||||
}
|
||||
fwrite(&output, 1, 1, f);
|
||||
fclose(f);
|
||||
}
|
||||
|
||||
int main(int argc, char* argv[]) {
|
||||
if (argc < 3) {
|
||||
usage();
|
||||
}
|
||||
output_dimensions(argv[1], argv[2]);
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user