shithub: choc

Download patch

ref: fb63887447b18d2f12dbae6518c5210f90623a02
parent: 6945d15be0895cdd08306dac7dfb4f19f9345264
author: Simon Howard <fraggle@gmail.com>
date: Sat Sep 24 18:04:03 EDT 2005

Add application icon to running program

Subversion-branch: /trunk/chocolate-doom
Subversion-revision: 126

--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,11 +1,10 @@
 
 bindir = $(prefix)/bin
 
+bin_PROGRAMS = chocolate-doom
+
 CFLAGS = @CFLAGS@ @SDL_CFLAGS@ @SDLMIXER_CFLAGS@ @SDLNET_CFLAGS@ -Wall
-chocolate_doom_LDADD = @LDFLAGS@                \
-                       @SDL_LIBS@               \
-                       @SDLMIXER_LIBS@          \
-                       @SDLNET_LIBS@ 
+chocolate_doom_LDADD = @LDFLAGS@ @SDL_LIBS@ @SDLMIXER_LIBS@ @SDLNET_LIBS@ 
 
 SOURCE_FILES=\
 am_map.c    d_think.h   i_video.c   p_floor.c   p_tick.c    r_things.h	\
@@ -36,8 +35,11 @@
 chocolate_doom_SOURCES=$(SOURCE_FILES)
 endif
 
-bin_PROGRAMS = chocolate-doom
+EXTRA_DIST = convert-icon chocolate_doom_icon.c
 
 .rc.o:
 	windres $^ -o $@
+
+chocolate_doom_icon.c : ../data/chocolate-doom.png
+	./convert-icon $^ > $@
 
--- /dev/null
+++ b/src/convert-icon
@@ -1,0 +1,71 @@
+#!/usr/bin/python
+#
+# $Id: convert-icon 126 2005-09-24 22:04:03Z fraggle $
+#
+# Copyright(C) 2005 Simon Howard
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+#
+# Converts images into C structures to be inserted in programs
+#
+# $Log$
+# Revision 1.1  2005/09/24 22:04:03  fraggle
+# Add application icon to running program
+#
+
+import Image
+import sys
+import os
+import re
+
+def convert_image(filename):
+
+    im = Image.open(filename).convert("RGB")
+
+    size = im.size
+
+    struct_name = os.path.basename(filename)
+    struct_name = re.sub(re.compile("\\..*$"), "", struct_name)
+    struct_name = re.sub(re.compile("\W"), "_", struct_name)
+
+    print "static int %s_w = %i;" % (struct_name, size[0])
+    print "static int %s_h = %i;" % (struct_name, size[1])
+
+    print
+    print "static unsigned char %s_data[] = {" % (struct_name)
+
+    elements_on_line = 0
+
+    print "    ",
+
+    for y in range(size[1]):
+        for x in range(size[0]):
+            val = im.getpixel((x, y))
+            print "%i,%i,%i,  " % val,
+            elements_on_line += 1
+
+            if elements_on_line > 4:
+                elements_on_line = 0
+                print 
+                print "    ",
+
+    print 
+    print "};\n"
+
+for filename in sys.argv[1:len(sys.argv)]:
+    convert_image(filename)
+
+
--- a/src/i_video.c
+++ b/src/i_video.c
@@ -1,7 +1,7 @@
 // Emacs style mode select   -*- C++ -*- 
 //-----------------------------------------------------------------------------
 //
-// $Id: i_video.c 111 2005-09-17 20:50:46Z fraggle $
+// $Id: i_video.c 126 2005-09-24 22:04:03Z fraggle $
 //
 // Copyright(C) 1993-1996 Id Software, Inc.
 // Copyright(C) 2005 Simon Howard
@@ -22,6 +22,9 @@
 // 02111-1307, USA.
 //
 // $Log$
+// Revision 1.28  2005/09/24 22:04:03  fraggle
+// Add application icon to running program
+//
 // Revision 1.27  2005/09/17 20:50:46  fraggle
 // Mouse acceleration code to emulate old DOS drivers
 //
@@ -121,12 +124,14 @@
 //-----------------------------------------------------------------------------
 
 static const char
-rcsid[] = "$Id: i_video.c 111 2005-09-17 20:50:46Z fraggle $";
+rcsid[] = "$Id: i_video.c 126 2005-09-24 22:04:03Z fraggle $";
 
 #include <SDL.h>
 #include <ctype.h>
 #include <math.h>
 
+#include "chocolate_doom_icon.c"
+
 #include "config.h"
 #include "doomdef.h"
 #include "doomstat.h"
@@ -694,7 +699,26 @@
     Z_Free(buf);
 }
 
+// Set the application icon
 
+static void SetIcon(void)
+{
+    SDL_Surface *surface;
+
+    surface = SDL_CreateRGBSurfaceFrom(chocolate_doom_data,
+                                       chocolate_doom_w,
+                                       chocolate_doom_h,
+                                       24,
+                                       chocolate_doom_w * 3,
+                                       0xff << 0,
+                                       0xff << 8,
+                                       0xff << 16,
+                                       0);
+
+    SDL_WM_SetIcon(surface, NULL);
+    SDL_FreeSurface(surface);
+}
+
 void I_InitGraphics(void)
 {
     SDL_Event dummy;
@@ -754,6 +778,7 @@
     }
 
     SetCaption();
+    SetIcon();
 
     UpdateFocus();
     UpdateGrab();