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 "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 "};\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();