MCPcopy Create free account
hub / github.com/NetHack/NetHack / read_gif_tile

Function read_gif_tile

win/share/gifread.c:582–626  ·  view source on GitHub ↗

Read a tile. Returns FALSE when there are no more tiles */

Source from the content-addressed store, hash-verified

580
581/* Read a tile. Returns FALSE when there are no more tiles */
582boolean
583read_gif_tile(pixel (*pixels)[TILE_X])
584{
585 int i, j;
586
587 if (curr_tiles_down >= tiles_down)
588 return FALSE;
589 if (curr_tiles_across == tiles_across) {
590 curr_tiles_across = 0;
591 curr_tiles_down++;
592 if (curr_tiles_down >= tiles_down)
593 return FALSE;
594 if (!GifScreen.Interlace)
595 ReadTileStrip(gif_file, GifScreen.Width);
596 }
597 if (GifScreen.Interlace) {
598 for (j = 0; j < TILE_Y; j++) {
599 for (i = 0; i < TILE_X; i++) {
600 pixels[j][i] = image[curr_tiles_down * TILE_Y
601 + j][curr_tiles_across * TILE_X + i];
602 }
603 }
604 } else {
605 for (j = 0; j < TILE_Y; j++) {
606 for (i = 0; i < TILE_X; i++) {
607 pixels[j][i] = image[j][curr_tiles_across * TILE_X + i];
608 }
609 }
610 }
611 curr_tiles_across++;
612
613 /* check for "filler" tile */
614 for (j = 0; j < TILE_Y; j++) {
615 for (i = 0; i < TILE_X && i < 4; i += 2) {
616 if (pixels[j][i].r != ColorMap[CM_RED][0]
617 || pixels[j][i].g != ColorMap[CM_GREEN][0]
618 || pixels[j][i].b != ColorMap[CM_BLUE][0]
619 || pixels[j][i + 1].r != ColorMap[CM_RED][1]
620 || pixels[j][i + 1].g != ColorMap[CM_GREEN][1]
621 || pixels[j][i + 1].b != ColorMap[CM_BLUE][1])
622 return TRUE;
623 }
624 }
625 return FALSE;
626}
627
628int
629fclose_gif_file(void)

Callers 1

mainFunction · 0.85

Calls 1

ReadTileStripFunction · 0.85

Tested by

no test coverage detected