Added example of using the software renderer and window surface API, contributed by Nitin Jain.
authorSam Lantinga <slouken@libsdl.org>
Sat, 27 Jul 2013 03:48:23 -0700
changeset 7529 3f571ec09593
parent 7528 1890a896802f
child 7530 7f26fd1df927
Added example of using the software renderer and window surface API, contributed by Nitin Jain.
test/Makefile.in
test/testdrawchessboard.c
--- a/test/Makefile.in	Sat Jul 27 03:44:03 2013 -0700
+++ b/test/Makefile.in	Sat Jul 27 03:48:23 2013 -0700
@@ -13,6 +13,7 @@
 	testaudioinfo$(EXE) \
 	testautomation$(EXE) \
 	testdraw2$(EXE) \
+	testdrawchessboard$(EXE) \
 	testerror$(EXE) \
 	testfile$(EXE) \
 	testgamecontroller$(EXE) \
@@ -103,6 +104,9 @@
 testdraw2$(EXE): $(srcdir)/testdraw2.c
 	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
 
+testdrawchessboard$(EXE): $(srcdir)/testdrawchessboard.c
+	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
+
 testerror$(EXE): $(srcdir)/testerror.c
 	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/testdrawchessboard.c	Sat Jul 27 03:48:23 2013 -0700
@@ -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;
+}
+