program AppSkeleton;
const
  SDL_WINDOW_SHOWN = 4;
  SDL_RENDERER_ACCELLERATED = 2;
  SDL_QUIT = 256;
  SDL_KEYDOWN = 768;
  SDLK_ESCAPE = 27;
  WIDTH = 1280;
  HEIGHT = 720;
  TILE_W = 32;
  TILE_H = 32;
  GRID_W = (WIDTH div TILE_W);
  GRID_H = (HEIGHT div TILE_H);
  title = 'Logo';
  filename = 'logo.bmp';
  EXIT_FAILURE = 1;
  SCALE_W = 640;
  SCALE_H = 480;
var
running : boolean;
event_type_result: integer;
color_value_r,  color_value_g, color_value_b: integer;
window_id, renderer, target_id:  integer;
logo_id: integer;

procedure render();
var
begin
sdl_set_render_target(renderer, target_id);
sdl_render_texture(renderer, logo_id, -1, -1, -1, -1, 0, 0, SCALE_W, SCALE_H);
end;
procedure init(title: string; x,y,w,h: integer);
var
result: integer;
begin
  result := sdl_init();
  if result <> 0 then 
  begin
    writeln('failed to init SDL');
    halt(EXIT_FAILURE);
  end;
  window_id := sdl_create_window(title, x, y, w, h, SDL_WINDOW_SHOWN);
  if window_id = -1 then 
  begin 
    writeln('Could not create window');
    sdl_quit(); 
    halt(EXIT_FAILURE); 
  end;
  renderer := sdl_create_renderer(window_id, -1, SDL_RENDERER_ACCELLERATED);
  if renderer = -1 then 
  begin
      writeln('could not create  renderer');
      sdl_destroy_window(window_id);  
      sdl_quit();
      halt(EXIT_FAILURE);
  end;  
      
  target_id := sdl_create_render_target(renderer, SCALE_W, SCALE_H);
  if target_id = -1 then 
  begin 
    writeln('could not create render target');
    sdl_destroy_window(window_id); 
    sdl_destroy_renderer(renderer);
     
    halt(1); 
    sdl_quit();
    
  end;
    
  srand(sdl_get_ticks());

  logo_id := sdl_load_texture(renderer, filename);
  if (logo_id = -1)  then  
  begin
    writeln('failed to open: ', filename);
    halt(EXIT_FAILURE);
  end;

end;
procedure cleanup;
begin
  sdl_destroy_texture(logo_id);
  sdl_destroy_render_target(target_id);
  sdl_destroy_renderer(renderer);
  sdl_destroy_window(window_id);
  sdl_quit();
end;
begin
init(title, 100, 100, WIDTH, HEIGHT);
running := true;
 while running = true do
  begin
    while sdl_poll_event() <> 0 do
    begin
      event_type_result := sdl_get_event_type();
      if event_type_result = SDL_QUIT then 
        running := false;
      if (event_type_result = SDL_KEYDOWN) and (sdl_get_key_code() = SDLK_ESCAPE) then 
        running := false;
    end;
    sdl_set_draw_color(renderer, 0, 0, 0, 255);
    sdl_clear(renderer);
    render();
    sdl_present_scaled(renderer, target_id, WIDTH, HEIGHT);
 end;
cleanup;
end.