MCPcopy Create free account
hub / github.com/OpenFodder/openfodder / stbi__pnm_load

Function stbi__pnm_load

Source/Utils/stb_image.h:7503–7538  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

7501}
7502
7503static void *stbi__pnm_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri)
7504{
7505 stbi_uc *out;
7506 STBI_NOTUSED(ri);
7507
7508 ri->bits_per_channel = stbi__pnm_info(s, (int *)&s->img_x, (int *)&s->img_y, (int *)&s->img_n);
7509 if (ri->bits_per_channel == 0)
7510 return 0;
7511
7512 if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)");
7513 if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)");
7514
7515 *x = s->img_x;
7516 *y = s->img_y;
7517 if (comp) *comp = s->img_n;
7518
7519 if (!stbi__mad4sizes_valid(s->img_n, s->img_x, s->img_y, ri->bits_per_channel / 8, 0))
7520 return stbi__errpuc("too large", "PNM too large");
7521
7522 out = (stbi_uc *) stbi__malloc_mad4(s->img_n, s->img_x, s->img_y, ri->bits_per_channel / 8, 0);
7523 if (!out) return stbi__errpuc("outofmem", "Out of memory");
7524 if (!stbi__getn(s, out, s->img_n * s->img_x * s->img_y * (ri->bits_per_channel / 8))) {
7525 STBI_FREE(out);
7526 return stbi__errpuc("bad PNM", "PNM file truncated");
7527 }
7528
7529 if (req_comp && req_comp != s->img_n) {
7530 if (ri->bits_per_channel == 16) {
7531 out = (stbi_uc *) stbi__convert_format16((stbi__uint16 *) out, s->img_n, req_comp, s->img_x, s->img_y);
7532 } else {
7533 out = stbi__convert_format(out, s->img_n, req_comp, s->img_x, s->img_y);
7534 }
7535 if (out == NULL) return out; // stbi__convert_format frees input on failure
7536 }
7537 return out;
7538}
7539
7540static int stbi__pnm_isspace(char c)
7541{

Callers 1

stbi__load_mainFunction · 0.85

Calls 6

stbi__pnm_infoFunction · 0.85
stbi__mad4sizes_validFunction · 0.85
stbi__malloc_mad4Function · 0.85
stbi__getnFunction · 0.85
stbi__convert_format16Function · 0.85
stbi__convert_formatFunction · 0.85

Tested by

no test coverage detected