diff options
author | Sam Lantinga <slouken@libsdl.org> | 2013-07-27 03:48:23 -0700 |
---|---|---|
committer | Sam Lantinga <slouken@libsdl.org> | 2013-07-27 03:48:23 -0700 |
commit | aab0048d877d7e41944789ece6597676823a41c5 (patch) | |
tree | d63c72aea53abded047d58f3b0f7d42fe0a9ee3e /test/testdrawchessboard.c | |
parent | 7fcffeefe02dc47a4c9c437ef6291089fd6ee407 (diff) |
Added example of using the software renderer and window surface API, contributed by Nitin Jain.
Diffstat (limited to 'test/testdrawchessboard.c')
-rw-r--r-- | test/testdrawchessboard.c | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/test/testdrawchessboard.c b/test/testdrawchessboard.c new file mode 100644 index 0000000000..a48f57087d --- /dev/null +++ b/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;
+}
+
|