This repository has been archived by the owner. It is now read-only.
Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Added example of using the software renderer and window surface API, …
…contributed by Nitin Jain.
- Loading branch information
Showing
with
109 additions
and 0 deletions.
- +4 −0 test/Makefile.in
- +105 −0 test/testdrawchessboard.c
@@ -0,0 +1,105 @@ | ||
/* | ||
Copyright (C) 1997-2013 Sam Lantinga <slouken@libsdl.org> | ||
This software is provided 'as-is', without any express or implied | ||
warranty. In no event will the authors be held liable for any damages | ||
arising from the use of this software. | ||
Permission is granted to anyone to use this software for any purpose, | ||
including commercial applications, and to alter it and redistribute it | ||
freely. | ||
This file is created by : Nitin Jain (nitin.j4@samsung.com) | ||
*/ | ||
|
||
/* Sample program: Draw a Chess Board by using SDL_CreateSoftwareRenderer API */ | ||
|
||
#include <stdlib.h> | ||
#include <stdio.h> | ||
|
||
#include "SDL.h" | ||
|
||
void | ||
DrawChessBoard(SDL_Renderer * renderer) | ||
{ | ||
int row = 0,coloum = 0,x = 0; | ||
SDL_Rect rect, darea; | ||
|
||
/* Get the Size of drawing surface */ | ||
SDL_RenderGetViewport(renderer, &darea); | ||
|
||
for(row; row < 8; row++) | ||
{ | ||
coloum = row%2; | ||
x = x + coloum; | ||
for(coloum; coloum < 4+(row%2); coloum++) | ||
{ | ||
SDL_SetRenderDrawColor(renderer, 0, 0, 0, 0); | ||
|
||
rect.w = darea.w/8; | ||
rect.h = darea.h/8; | ||
rect.x = x * rect.w; | ||
rect.y = row * rect.h; | ||
x = x + 2; | ||
SDL_RenderFillRect(renderer, &rect); | ||
} | ||
x=0; | ||
} | ||
} | ||
|
||
int | ||
main(int argc, char *argv[]) | ||
{ | ||
SDL_Event event; | ||
|
||
/* Initialize SDL */ | ||
if(SDL_Init(SDL_INIT_VIDEO) != 0) | ||
{ | ||
fprintf(stderr,"SDL_Init fail : %s\n", SDL_GetError()); | ||
return 1; | ||
} | ||
|
||
|
||
/* Create window and renderer for given surface */ | ||
SDL_Window *window = SDL_CreateWindow("Chess Board",SDL_WINDOWPOS_UNDEFINED,SDL_WINDOWPOS_UNDEFINED,640,480,SDL_WINDOW_SHOWN); | ||
if(!window) | ||
{ | ||
fprintf(stderr,"Window creation fail : %s\n",SDL_GetError()); | ||
return 1; | ||
} | ||
SDL_Surface *surface = SDL_GetWindowSurface(window); | ||
SDL_Renderer *renderer = SDL_CreateSoftwareRenderer(surface); | ||
if(!renderer) | ||
{ | ||
fprintf(stderr,"Render creation for surface fail : %s\n",SDL_GetError()); | ||
return 1; | ||
} | ||
|
||
/* Clear the rendering surface with the specidfied colour */ | ||
SDL_SetRenderDrawColor(renderer, 0xFF, 0xFF, 0xFF, 0); | ||
SDL_RenderClear(renderer); | ||
|
||
|
||
/* Draw the Image on rendering surface */ | ||
while(1) | ||
{ | ||
SDL_Event e; | ||
if (SDL_PollEvent(&e)) { | ||
if (e.type == SDL_QUIT) | ||
break; | ||
|
||
if(e.key.keysym.sym == SDLK_ESCAPE) | ||
break; | ||
} | ||
|
||
DrawChessBoard(renderer); | ||
|
||
/* Got everything on redering surface, | ||
now Update the drawing image on window screen */ | ||
SDL_UpdateWindowSurface(window); | ||
|
||
} | ||
|
||
return 0; | ||
} | ||
|