Files
imageviewer/iv.c
2026-01-31 12:43:20 +05:00

65 lines
1.6 KiB
C

#include <SDL2/SDL_events.h>
#include <SDL2/SDL_pixels.h>
#include <SDL2/SDL_rect.h>
#include <SDL2/SDL_stdinc.h>
#include <SDL2/SDL_surface.h>
#include <SDL2/SDL_timer.h>
#include <SDL2/SDL_video.h>
#include <stdio.h>
#include <stdlib.h>
#include <SDL2/SDL.h>
int main()
{
FILE *in = stdin;
char *pthroway = calloc(1000, sizeof(char));
// read first line (specifier P3 or P6 - ignore here)
fgets(pthroway, 1000, in);
// read second line (comment)
fgets(pthroway, 1000, in);
// read third line (dimensions: width / height)
char *pdimensions = calloc(1000, sizeof(char));
fgets(pdimensions, 1000, in);
free(pthroway);
int width = -1;
int height = -1;
sscanf(pdimensions, "%d %d\n", &width, &height);
free(pdimensions);
printf("width=%d, height=%d\n", width, height);
SDL_Window * pwindow = SDL_CreateWindow("Image Viewer", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, width, height, 0);
SDL_Surface *psurface = SDL_GetWindowSurface(pwindow);
SDL_Rect pixel = (SDL_Rect){0, 0, 1, 1};
Uint32 color = 0;
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
Uint8 r, g, b;
r = (char) getchar();
g = (char) getchar();
b = (char) getchar();
color = SDL_MapRGB(psurface->format, r, g, b);
pixel.x = x;
pixel.y = y;
SDL_FillRect(psurface, &pixel, color);
}
}
SDL_UpdateWindowSurface(pwindow);
int app_running = 1;
while (app_running) {
SDL_Event event;
while (SDL_PollEvent(&event)) {
if (event.type == SDL_QUIT) {
app_running = 0;
}
}
SDL_Delay(100);
}
return EXIT_SUCCESS;
}