[dhewm3] 01/05: Imported Upstream version 0+git20150724+dfsg

Tobias Frost tobi at moszumanska.debian.org
Sun Sep 13 19:32:24 UTC 2015


This is an automated email from the git hooks/post-receive script.

tobi pushed a commit to branch master
in repository dhewm3.

commit af32cd63b28473ddb23abf5ff4fd38f30dcc4973
Author: Tobias Frost <tobi at coldtobi.de>
Date:   Sun Sep 13 18:26:22 2015 +0200

    Imported Upstream version 0+git20150724+dfsg
---
 ChangeLog                    |  16 +++
 README.md                    |  41 +-----
 neo/CMakeLists.txt           |   2 -
 neo/renderer/Cinematic.cpp   |   6 +-
 neo/renderer/Image_files.cpp |   6 +-
 neo/sys/doom_icon.h          | 332 +++++++++++++++++++++++++++++++++++++++++++
 neo/sys/glimp.cpp            |  42 +++++-
 7 files changed, 399 insertions(+), 46 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 2ba3504..101496c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
+2015-07-23  Daniel Gibson  <metalcaedes at gmail.com>
+
+	* Merge pull request #118 from jmtd/patch-1
+
+2015-07-23  Jonathan Dowland  <jon+github at alcopop.org>
+
+	* small spelling corrections
+
+2015-03-22  Daniel Gibson  <metalcaedes at gmail.com>
+
+	* Remove jpeg_memory_src hack that worked around old libjpeg versions
+
+2015-03-02  Daniel Gibson  <metalcaedes at gmail.com>
+
+	* Window Icon, make in_nograb work with SDL2
+
 2015-02-25  Daniel Gibson  <metalcaedes at gmail.com>
 
 	* Merge pull request #108 from coldtobi/master
diff --git a/README.md b/README.md
index b583b15..46e9394 100644
--- a/README.md
+++ b/README.md
@@ -3,7 +3,7 @@
 _dhewm 3_ is a _Doom 3_ GPL source modification.
 
 The goal of _dhewm 3_ is bring _DOOM 3_ with the help of SDL to all suitable
-plaforms.
+platforms.
 
 Bugs present in the original _DOOM 3_ will be fixed (when identified) without
 altering the original gameplay.
@@ -57,7 +57,7 @@ Required libraries are not part of the tree. These are:
 - SDL v1.2
 - libcurl (optional, required for server downloads)
 
-For UNIX like system these libraries need to be installed (including the
+For UNIX-like systems these libraries need to be installed (including the
 developer files). It is recommended to use the software management tools of
 your OS (apt-get, portage, rpm, BSD ports, MacPorts, ...).
 
@@ -79,7 +79,7 @@ OSX users need to point cmake at OpenAL Soft (better solutions welcome):
 
 Get a clone of the latest binaries here: https://github.com/dhewm/dhewm3-libs
 
-There are two subfolder:
+There are two subfolders:
 
 - 32bit binaries are located in "i686-w64-mingw32"
 - 64bit binaries are located in "x86_64-w64-mingw32"
@@ -136,41 +136,6 @@ ADDITIONAL TERMS:  The Doom 3 GPL Source Code is also subject to certain additio
 
 EXCLUDED CODE:  The code described below and contained in the Doom 3 GPL Source Code release is not part of the Program covered by the GPL and is expressly excluded from its terms.  You are solely responsible for obtaining from the copyright holder a license for such code and complying with the applicable license terms.
 
-## JPEG library
-
-neo/renderer/jpeg_memory_src.*
-
-This software is copyright (C) 1991-2011, Thomas G. Lane, Guido Vollbeding.
-
-All Rights Reserved except as specified below.
-
-Permission is hereby granted to use, copy, modify, and distribute this
-software (or portions thereof) for any purpose, without fee, subject to these
-conditions:
-(1) If any part of the source code for this software is distributed, then this
-README file must be included, with this copyright and no-warranty notice
-unaltered; and any additions, deletions, or changes to the original files
-must be clearly indicated in accompanying documentation.
-(2) If only executable code is distributed, then the accompanying
-documentation must state that "this software is based in part on the work of
-the Independent JPEG Group".
-(3) Permission for use of this software is granted only if the user accepts
-full responsibility for any undesirable consequences; the authors accept
-NO LIABILITY for damages of any kind.
-
-These conditions apply to any software derived from or based on the IJG code,
-not just to the unmodified library.  If you use our work, you ought to
-acknowledge us.
-
-Permission is NOT granted for the use of any IJG author's name or company name
-in advertising or publicity relating to this software or products derived from
-it.  This software may be referred to only as "the Independent JPEG Group's
-software".
-
-We specifically permit and encourage the use of this software as the basis of
-commercial products, provided that all warranty or liability claims are
-assumed by the product vendor.
-
 ## PropTree
 
 neo/tools/common/PropTree/*
diff --git a/neo/CMakeLists.txt b/neo/CMakeLists.txt
index b1ccf93..6e92d0c 100644
--- a/neo/CMakeLists.txt
+++ b/neo/CMakeLists.txt
@@ -86,7 +86,6 @@ include_directories(${JPEG_INCLUDE_DIR})
 
 set(CMAKE_REQUIRED_INCLUDES ${JPEG_INCLUDE_DIR})
 set(CMAKE_REQUIRED_LIBRARIES ${JPEG_LIBRARY})
-CHECK_FUNCTION_EXISTS("jpeg_mem_src" HAVE_JPEG_MEM_SRC)
 
 find_package(OGG REQUIRED)
 include_directories(${OGG_INCLUDE_DIR})
@@ -279,7 +278,6 @@ if(NOT APPLE AND NOT WIN32)
 endif()
 
 set(src_renderer
-	renderer/jpeg_memory_src.cpp
 	renderer/Cinematic.cpp
 	renderer/GuiModel.cpp
 	renderer/Image_files.cpp
diff --git a/neo/renderer/Cinematic.cpp b/neo/renderer/Cinematic.cpp
index d0b5403..2e259c3 100644
--- a/neo/renderer/Cinematic.cpp
+++ b/neo/renderer/Cinematic.cpp
@@ -29,12 +29,14 @@ If you have questions concerning this license or the applicable additional terms
 #include "sys/platform.h"
 
 #include "framework/FileSystem.h"
-#include "renderer/jpeg_memory_src.h"
 #include "renderer/tr_local.h"
 #include "sound/sound.h"
 
 #include "renderer/Cinematic.h"
 
+#include <jpeglib.h>
+#include <jerror.h>
+
 #define CIN_system	1
 #define CIN_loop	2
 #define	CIN_hold	4
@@ -1309,7 +1311,7 @@ int JPEGBlit( byte *wStatus, byte *data, int datasize )
 
   /* Step 2: specify data source (eg, a file) */
 
-  jpeg_memory_src(&cinfo, data, datasize);
+  jpeg_mem_src(&cinfo, data, datasize);
 
   /* Step 3: read file parameters with jpeg_read_header() */
 
diff --git a/neo/renderer/Image_files.cpp b/neo/renderer/Image_files.cpp
index 36aa077..978d2d0 100644
--- a/neo/renderer/Image_files.cpp
+++ b/neo/renderer/Image_files.cpp
@@ -28,11 +28,13 @@ If you have questions concerning this license or the applicable additional terms
 
 #include "sys/platform.h"
 
-#include "renderer/jpeg_memory_src.h"
 #include "renderer/tr_local.h"
 
 #include "renderer/Image.h"
 
+#include <jpeglib.h>
+#include <jerror.h>
+
 /*
 
 This file only has a single entry point:
@@ -824,7 +826,7 @@ static void LoadJPG( const char *filename, unsigned char **pic, int *width, int
 
   /* Step 2: specify data source (eg, a file) */
 
-  jpeg_memory_src(&cinfo, fbuffer, len);
+  jpeg_mem_src(&cinfo, fbuffer, len);
 
   /* Step 3: read file parameters with jpeg_read_header() */
 
diff --git a/neo/sys/doom_icon.h b/neo/sys/doom_icon.h
new file mode 100644
index 0000000..5e9c95f
--- /dev/null
+++ b/neo/sys/doom_icon.h
@@ -0,0 +1,332 @@
+/* GIMP RGBA C-Source image dump (doom_icon.c) */
+// generated from dhewm3/neo/sys/win32/rc/res/doom.ico
+
+static const struct {
+  unsigned int 	 width;
+  unsigned int 	 height;
+  unsigned int 	 bytes_per_pixel; /* 2:RGB16, 3:RGB, 4:RGBA */ 
+  unsigned char	 pixel_data[48 * 48 * 4 + 1];
+} d3_icon = {
+  48, 48, 4,
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\314\0\0\1\314\0\0\4\314\0\0\10\317\16\4\17B\4\1"
+  "=$\0\0t&\4\1\242*\5\1\3069\12\2\340Q\20\3\361k\27\5\374q\31\6\374e\23\3\362"
+  "b\20\3\341M\13\1\311<\10\1\2501\3\0~5\0\0G\202\0\0\26\243\0\0\12\314\0\0"
+  "\4\314\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\314\0\0\1\314"
+  "\0\0\4\321\30\14\13W\20\10""2,\14\6\2027\17\5\302T\33\11\364\2152\24\377"
+  "\233>\34\377\262N'\377\303`4\377\306j;\377\351\214Q\377\354\222U\377\332"
+  "tB\377\314f7\377\277S)\377\274I\"\377\270@\32\377\225&\11\367U\20\3\3128"
+  "\10\3\215B\11\4@\200\17\10\22\243\0\0\5\314\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\314\0\0"
+  "\1\314\0\0\3\326\32\32\12[\24\11""62\26\12\225Q'\17\340\223A\32\377\267["
+  ",\377\263]0\377\257T*\377\261K%\377\2469\30\377\227)\16\377\222(\17\377\251"
+  "3\24\377\217(\20\377\234/\22\377\2435\24\377\272F\36\377\321_-\377\322i6"
+  "\377\317h7\377\316[,\377\277G\35\377\214&\12\346L\23\7\246@\14\6Ij\10\10"
+  "\22\231\0\0\4\314\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\314\0\0\1\325\0\0\6\3300\30\22B\32\12|`,\20\331\261\\)\377"
+  "\322}?\377\313p8\377\276Z+\377\2242\22\377V\35\12\377J\25\6\377\16\3\1\377"
+  "\6\2\1\377\6\0\0\377\24\2\0\377\0\0\0\377\0\0\0\377\12\2\0\377D\12\1\377"
+  "U\25\4\377\201,\15\377\257?\26\377\323f/\377\334u<\377\341|>\377\324_)\377"
+  "\2372\17\343b\32\10\225^\23\11%\201\0\0\12\314\0\0\1\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\314\0\0\2\323%\0\7Z\23\5""8k%\16\255\277Z$\375"
+  "\331\177?\377\347\215H\377\330n3\377\272F\32\377\214%\12\377q\35\6\377&\12"
+  "\1\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0"
+  "\377\0\0\0\377!\4\1\377\6\0\0\377\10\0\0\377B\10\1\377}\36\6\377\2469\21"
+  "\377\334t4\377\354\231N\377\354\215G\377\322X#\376u\36\12\304C\15\5ST\0\0"
+  "\21\210\0\0\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\314\0\0\2\314\0\0\7P\20\7P\204"
+  "(\16\307\314j1\377\355\224Q\377\320k3\377\240<\27\377;\23\10\377\25\4\1\377"
+  "\33\3\1\377+\14\2\377X\32\4\377t$\6\377B\26\3\377'\12\2\377\27\4\1\377\21"
+  "\2\1\377\24\3\0\377\6\1\0\377\4\1\0\377\34\5\0\3777\12\1\377\20\2\0\377\14"
+  "\0\0\3774\4\0\377{\26\1\377\2604\11\377\274S\36\377\350\207C\377\355\227"
+  "S\377\335g/\377\210\"\12\334:\7\2r;\0\0\30R\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\314\0\0"
+  "\1\314\0\0\7F\13\4V\224.\16\324\343\202A\377\332v=\377\361\247h\377\352\224"
+  "Y\377E#\17\377@\12\3\377\33\1\1\377\14\0\0\377\2\0\0\377/\11\2\377\270P\22"
+  "\377\2421\10\377B\14\1\377\16\1\1\377=\11\2\377\2\1\0\377\1\0\0\377\26\4"
+  "\0\377#\4\1\377\\\25\2\377[\24\2\377_\27\2\377L\14\1\377G\11\1\377\211\34"
+  "\3\377\207%\13\377\353\250a\377\367\306\203\377\352\211M\377\321],\377\207"
+  "!\10\3458\7\2}.\0\0\33""3\0\0\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\314\0\0\1\314\0\0\6A\5\1N\213&\13\323\266"
+  "Z)\377\312b.\377\313R%\377\337\201F\377\366\267t\377\344\213L\377h%\17\377"
+  "-\14\5\377\"\4\1\377O\22\3\377_\26\2\377S\23\1\377(\10\2\377\2521\11\377"
+  ";\13\1\377\3\0\0\377\5\1\0\377\0\0\0\377\13\2\0\377\17\2\0\377\1\0\0\377"
+  "\16\1\0\377J\13\1\377{\33\2\377\205\40\6\377\260H\27\377\356\243W\377\365"
+  "\273t\377\355\233_\377\320W'\377\332k4\377\301Q$\377\225\37\6\345%\1\0z."
+  "\0\0\33""3\0\0\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\314\0\0\1\314\0\0\5@\0\0""3j\26\5\302\270V'\377\245M#\377\2354\23\377\205"
+  "#\10\377\305X'\377\353\224T\377\356\216N\377\341\217N\377\250J\36\377\213"
+  "$\10\377g\20\3\377y'\7\377]\34\3\377*\6\1\377\2260\12\377\213$\2\377\16\2"
+  "\0\377\0\0\0\377\25\2\1\377\36\3\0\377\7\1\0\3776\10\0\377$\4\0\377\15\3"
+  "\1\377*\17\5\377\270N\35\377\355\240Y\377\361\231S\377\353\216O\377\266["
+  "-\3775\17\5\377\253?\25\377\325f.\377\275K!\377c\22\2\335\33\0\0d.\0\0\26"
+  "f\0\0\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\314\0\0\3\314\0\0"
+  "\16?\10\1\244\305S#\377\254Q&\377\2355\24\377\33\5\2\377|\36\5\377\213,\17"
+  "\377\326\201G\377\346w8\377\332c*\377\347\210E\377\326q5\377\2559\20\377"
+  "\267?\16\377\224+\6\377\220(\5\377.\6\0\377\226(\5\377K\20\1\377\0\0\0\377"
+  "T\17\1\377r\31\2\377\23\1\0\377]\17\2\377)\7\2\377+\21\6\377\303](\377\340"
+  "\206F\377\321`*\377\343m-\377\351\217N\377\2113\25\377\"\6\2\3776\7\1\377"
+  "\264F\27\377\317c/\377\311J\36\377X\16\1\314$\0\0>/\0\0\15\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\314\0\0\2\314\0\0\11&\0\0t\300K\35\375\322g0\377"
+  "\2348\30\377.\13\3\377\6\0\0\377a\27\3\3775\20\6\377\274d1\377\344\177>\377"
+  "\321K\26\377\272;\23\377\341}=\377\344\205C\377\310B\24\377\241,\10\377O"
+  "\12\1\377\202\40\3\377\213&\4\377z\36\2\377\15\1\0\3772\10\1\377\204\36\2"
+  "\377+\10\0\377\37\6\2\377\200$\13\377\334s8\377\332x<\377\2427\22\377\271"
+  "8\17\377\313S\37\377\345\215M\377\242-\13\377{\32\2\377\267P\20\377\225\40"
+  "\1\377\321f&\377\346\214D\377\336U\37\376?\7\1\253%\0\0,D\0\0\6\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\314\0\0\4B\0\0""2<\15\3\323\323d/\377\262E\36\377"
+  ":\24\10\377\3\1\0\377\22\1\0\377)\6\1\377m\31\5\377\237C\34\377\327s9\377"
+  "v\31\5\377\233!\4\377\273;\17\377\324b*\377\325x@\377\217+\20\377{\31\4\377"
+  "\2443\10\377\222)\5\377\224%\3\377k\33\2\377?\16\1\377\23\3\0\377m\30\4\377"
+  "\2360\20\377\343\202E\377\302R$\377\205!\6\377\205\33\3\377e\27\5\377\313"
+  "]'\377\265Z*\377\222!\6\377\300@\7\377\213,\6\377#\6\0\377H\20\2\377\340"
+  "\206:\377\316],\377p\30\4\353\27\0\0r!\0\0\31\0\0\0\1\0\0\0\0\0\0\0\0\314"
+  "\0\0\1\314\0\0\12%\1\1\216\247:\31\377\327f1\377\225+\17\377\3\1\0\377\0"
+  "\0\0\377\30\2\0\377a\33\4\377\2474\11\3770\26\11\377\305o9\377\214!\7\377"
+  "\255.\6\377\220\37\2\377\251,\10\377\2440\16\377\265P'\377\326e/\377\205"
+  "\33\5\377O\13\1\377\273@\13\377\206$\5\377\6\0\0\377#\10\2\377\306O!\377"
+  "\336s:\377\262@\30\377u\30\2\377\216(\6\377\305M\15\377\276E\21\377\337|"
+  "=\377\313W\"\377\202\33\4\377\2460\3\377\232,\3\3775\10\0\377\37\3\0\377"
+  "\2422\14\377\321i3\377\270@\31\3771\10\1\304\33\0\0<\25\0\0\12\0\0\0\0\0"
+  "\0\0\0\314\0\0\4L\0\0/X\24\5\334\327i5\377\300M\"\377B\15\3\377\27\1\0\377"
+  "\14\2\0\377<\13\1\377%\7\1\377/\12\1\377J\20\4\377\252R(\377\2508\25\377"
+  "y\26\3\377\\\21\2\377z\31\2\377\177\31\2\377\244'\10\377\262H!\377\334s:"
+  "\377\207\37\10\377y\20\1\377P\12\0\377\212\34\6\377\321`-\377\242I\"\377"
+  "\177\37\6\377l\30\3\377V\27\3\377\2544\10\377\271@\13\377\301B\25\377\271"
+  "d2\377{\37\7\377/\7\1\377\22\2\0\377u\"\4\377\2659\4\377\262L\15\377>\13"
+  "\1\377\306T#\377\307\\.\377\177\34\5\361\25\0\0y\34\0\0\35\0\0\0\1\0\0\0"
+  "\0\314\0\0\10<\3\0}\211.\22\377\271T*\377\2536\22\377\26\0\0\377>\17\2\377"
+  "c\27\3\377\17\2\0\377\0\0\0\377\3\1\0\377>\15\2\377\2176\27\377\307\\+\377"
+  "+\5\0\377O\16\2\377F\14\2\377:\5\0\377}\30\2\377q\22\2\377\2503\25\377\314"
+  "d7\377\325L$\377\215\36\13\377\277^4\377\2406\26\377(\5\1\377\225#\2\377"
+  "&\5\0\377r\35\4\377\211+\6\377<\15\2\377\310S\"\377\214B\36\377:\13\2\377"
+  "Q\20\1\377\2\0\0\377\6\0\0\377g\31\2\377\232.\6\377\36\4\0\377o\37\10\377"
+  "\325l7\377\2569\25\377&\5\1\275\25\0\0:\32\0\0\10\0\0\0\0\314\0\0\16""1\6"
+  "\2\300\262O&\377\251F\40\377\212#\7\377\200)\10\377\203\37\2\377~\40\2\377"
+  "(\6\1\377\11\1\0\377\15\2\0\377\35\4\1\377\34\11\4\377\321uA\377\203\33\3"
+  "\3777\6\1\377T\16\2\377\177!\5\377\216$\5\377P\7\1\377\210\27\2\377\312C"
+  "\40\377\352}N\377\334kC\377\225\36\13\377\261,\12\377\202\36\4\377\203!\4"
+  "\377\201\"\4\377g\33\3\377\5\0\0\377v!\6\377\305g2\377M\40\15\377\5\3\1\377"
+  "A\16\1\377\15\2\0\377\0\0\0\377\26\5\1\377N\21\2\377H\16\1\377\13\2\0\377"
+  "\304R$\377\306U)\377[\22\2\345\24\0\0]\23\0\0\25\0\0\0\0>\0\0<S\27\7\364"
+  "\264W-\377w!\14\377@\15\2\377\207.\12\377\20\2\0\377\36\7\1\377!\10\1\377"
+  "\14\2\0\377\7\1\0\377\25\2\0\377\21\3\1\377\251R)\377\276B\32\377\245+\7"
+  "\377{\33\4\377\215'\6\377\225\40\2\377N\10\1\377i\24\7\377\334p?\377\267"
+  ">\40\377\221*\23\377\334k<\377\2533\23\377T\17\2\377u\24\1\377\270>\13\377"
+  "\2351\7\377c\26\2\377\245/\15\377\247S(\377j\30\4\377\12\1\0\377P\23\1\377"
+  "^\26\2\3776\12\1\377+\7\1\377i\33\3\377\220.\11\377(\6\1\377\2427\24\377"
+  "\321l9\377\217!\7\372\22\1\0\222\20\0\0'\0\0\0\2""1\3\0t\2345\25\377\262"
+  "R)\377V\31\10\377\10\0\0\377n\32\3\3772\14\2\377\0\0\0\377\0\0\0\377\0\0"
+  "\0\377A\22\2\377J\21\2\377\13\1\1\377f'\21\377\270O&\377,\5\1\377\203\37"
+  "\5\377D\7\1\377\210\31\3\377\204-\23\377\307k9\377\320L\37\377p\20\2\377"
+  "c\16\2\377\2573\22\377\311f5\377\276M!\377\260-\11\377\211\33\2\377\2500"
+  "\7\377,\7\1\377\241?\32\377y5\30\377\25\4\1\377W\25\2\377V\27\3\377)\6\0"
+  "\377\15\2\0\377A\12\1\377y\35\2\377o\36\3\3770\11\2\377-\11\2\377\313^0\377"
+  "\2453\24\377\40\5\1\276\20\0\0?\26\0\0\11?\7\2\242\246A\36\377\244E!\377"
+  "8\17\4\377\16\2\0\377N\20\2\377\205'\6\377\10\1\0\377F\22\2\377)\11\2\377"
+  "\32\6\1\377\232'\5\377k\30\4\377\35\12\4\377\315m;\3776\7\2\377f\21\2\377"
+  "n\31\6\377\315a/\377\252K%\377\305;\22\377\237(\7\377Y\20\2\377X\15\2\377"
+  "\243'\6\377\246(\11\377\235C\40\377\335t:\377\2463\20\3778\10\1\377\32\4"
+  "\1\377\300V*\377<\31\12\377{\37\5\377\2505\6\377&\11\1\3772\7\0\377L\17\1"
+  "\377>\13\1\377*\6\0\377S\16\1\377O\17\2\377G\17\2\377\317a0\377\274J\"\377"
+  "<\14\2\332\20\0\0X\13\0\0\22?\10\2\306\246K%\377\2222\24\377\16\2\1\377\2"
+  "\0\0\3773\14\2\377\216'\4\377n\33\5\377l\24\1\377z\33\2\377\22\2\1\377\14"
+  "\1\0\377M\17\2\377!\2\1\377\277R+\377\232\40\13\377\3028\30\377\305Z-\377"
+  "\2329\31\377\202\35\7\377\222\"\5\377=\7\1\377F\14\2\377M\14\1\377I\12\1"
+  "\377j\24\2\377F\13\2\377\207,\21\377\327n:\377\313L\"\377\216\34\7\377\262"
+  "O(\377g\23\4\377E\16\2\377\26\2\0\377\20\2\0\377j\27\1\377=\13\1\377\12\1"
+  "\0\377\21\2\0\377~\40\4\377;\15\2\377$\5\1\377\276L!\377\305X-\377M\17\2"
+  "\352\17\0\0k\10\0\0\32@\12\3\340\274\\2\377\210&\16\377*\6\2\377\6\0\1\377"
+  "B\16\2\377W\16\2\377q\31\3\377\206$\6\377Y\22\2\377\20\0\0\377\10\0\0\377"
+  ",\4\1\377H\5\1\377\240+\24\377\342jC\377\305[4\377\240-\17\377\225!\6\377"
+  "\210\35\5\377u\32\4\377r\37\6\377-\6\2\377.\7\1\377y\37\5\377n\32\4\3773"
+  "\10\2\3775\7\2\377\237'\12\377\304X1\377\337kB\377\256>\40\377!\4\1\377E"
+  "\13\2\377u\34\2\377=\14\2\377\24\2\0\377@\14\1\377\12\1\0\377\27\4\0\377"
+  "\2526\5\377b\25\2\377\23\2\0\377\224(\15\377\316g7\377Z\16\2\364\16\0\0y"
+  "\14\0\0#\\\21\3\361\312l=\377\210%\15\377\32\4\0\377\37\2\2\377`\21\1\377"
+  ")\6\1\377\22\1\1\377V\22\2\377\217%\5\377\212%\6\377b\24\2\377B\11\1\377"
+  "\303C\34\377\316U2\377\333jD\377\233\36\11\377\261*\7\377\2450\7\377\\\16"
+  "\1\377\206&\6\377\215&\5\377A\12\2\3772\12\2\377\202%\5\377\201\"\4\3778"
+  "\12\2\377e\27\2\377\200\30\4\377\253&\13\377\316\\8\377\321[6\377\211\37"
+  "\11\3775\6\1\377j\24\2\377a\23\2\3772\11\1\377Y\23\2\377\22\2\0\377P\23\2"
+  "\377\2606\5\377/\7\0\377\27\1\0\377\233&\12\377\354\214P\377\220\32\3\372"
+  "\16\0\0\207\12\0\0)w\27\5\374\352\216R\377\223+\21\377\6\1\0\377J\14\1\377"
+  "\\\22\2\377!\2\0\377&\2\1\377\16\0\0\377C\12\1\377f\20\1\377\236#\6\377\327"
+  "_(\377\341u>\377\252,\24\377\335e;\377\221$\14\377P\13\2\377\37\1\0\377J"
+  "\15\2\377\221,\7\377\211#\3\377P\11\0\377(\2\0\377\211*\6\377\223-\6\377"
+  ".\12\2\377&\4\2\377T\22\2\377a\25\6\377\323e;\377\246+\23\377\331q=\377\317"
+  "]*\377>\13\3\377?\12\2\377n\35\4\377c\26\2\377d\32\3\377\203\40\2\377\211"
+  "\36\2\377G\13\1\377a\22\2\377\255+\13\377\356\223U\377\235\36\4\376\13\0"
+  "\0\217\11\0\0-p\31\10\374\363\236]\377\2474\26\377\17\1\0\377\12\0\0\377"
+  "F\16\2\377.\3\1\377)\4\0\377\15\1\0\377\15\1\0\377K\13\2\377\321e1\377\273"
+  "Z-\377J\23\10\3772\2\0\377\2340\25\377\2113\27\3772\5\1\377M\14\1\377\235"
+  "6\12\377b\32\4\377>\7\1\377_\22\2\377m\24\2\3778\7\1\377K\31\5\377\244C\20"
+  "\377P\23\2\3779\12\2\377d'\20\377\271H$\377\236\34\5\377B\14\3\377\251N&"
+  "\377\332t:\377u\40\7\377$\5\1\377\203%\5\377\2436\12\377c\21\0\377\202\37"
+  "\2\377R\16\2\377a\21\2\377\255+\14\377\334{G\377r\21\2\376\13\0\0\224\11"
+  "\0\0""0e\25\4\362\326zD\377\2240\23\377\21\2\1\377\21\0\0\377?\12\1\377M"
+  "\13\0\377(\3\1\377%\6\2\377\225+\16\377\330u=\377\267L$\377\27\0\0\377q\25"
+  "\2\377\2630\10\377\254/\17\377\254M&\377?\10\3\377p\27\2\377\\\22\2\377{"
+  "&\6\377/\5\0\377\202\37\2\377\2461\5\377*\6\0\377r\"\6\377O\20\2\377\222"
+  "(\6\377N\14\2\377\247P)\377\2658\25\377\312C\16\377\2716\12\377k\17\3\377"
+  "\313Q#\377\342x=\377\307J\34\377\301:\15\377c\22\2\377\35\2\1\377k\26\2\377"
+  "T\17\2\377\"\2\0\377\2673\20\377\327uB\377j\17\2\373\13\0\0\224\11\0\0""0"
+  "S\21\4\342\305j9\377\2369\27\377\37\4\1\377\25\0\0\377\\\25\2\3774\7\1\377"
+  "Q\26\7\377\326o4\377\250P'\377\206)\16\377l\30\6\377@\6\0\377}\34\2\377\224"
+  "*\6\377i\23\3\377\336o8\377\226*\15\377d\24\4\377\224(\6\377b\26\2\377]\13"
+  "\0\377\300Z\21\377\306g\23\377h\16\1\377d\36\4\377\250;\13\377x\35\6\377"
+  "z\30\6\377\343\206I\377\201\37\5\377\214$\5\377{\35\2\377X\14\0\377\205\32"
+  "\2\377\227,\17\377\263^/\377\275Y*\377{\37\10\377\\\21\4\377\202\34\2\377"
+  "\212$\5\377a\17\2\377\2573\23\377\320i9\377]\16\2\365\12\0\0\216\11\0\0-"
+  "H\21\5\313\275]0\377\273O#\3779\13\4\377\31\3\1\377W\21\4\377\247:\23\377"
+  "\331z>\377\273[,\377`\31\7\377\201\34\3\377\201#\5\377[\22\2\377E\17\2\377"
+  "S\17\2\377\36\2\1\377\315S$\377\302L!\3774\6\1\377\203\35\3\377\263>\12\377"
+  "\216#\2\377\272U\20\377\266L\13\377\232,\4\377\263B\14\377\234)\3\377A\11"
+  "\1\377\235<\31\377\333m6\377(\3\0\377w\30\2\377`\25\2\377y\26\1\377\236,"
+  "\6\377{\33\3\377]\25\5\377\234N$\377\316t<\377\2518\24\377\224!\5\377E\7"
+  "\1\377r\21\3\377\306N#\377\312^0\377T\17\3\355\12\0\0\205\5\0\0(M\21\6\253"
+  "\275V*\377\315f2\377[\27\10\3774\20\7\377\314h2\377\360\246`\377\267G\"\377"
+  "o\24\3\377H\15\3\377:\7\1\377\2543\10\377\215$\4\3773\7\1\377\26\2\1\377"
+  "=\11\2\377\242&\13\377\334p:\377P\14\2\377f\17\2\377\224&\4\377\300P\17\377"
+  "\251<\13\377\231*\6\377\267H\15\377\220&\4\377\201\34\3\377Q\17\3\377\327"
+  "n9\377\2615\23\377\207\32\2\377\206\40\4\377x\32\2\377\270C\12\377\272@\11"
+  "\377`\16\1\377\\\17\2\377\204\37\7\377\262E\35\377\351\214J\377\342}<\377"
+  "\240#\11\377\200\25\5\377\327j7\377\307S'\377F\17\4\340\12\0\0w\6\0\0\"G"
+  "\22\7\202\306T%\377\332yB\377\312\\,\377\351\224T\377\360\224V\377\310J\36"
+  "\377\251+\14\377\200\34\6\377\226\"\5\377\211\35\4\377M\16\2\377\210\34\3"
+  "\377\226\36\4\377p\25\2\377d\20\2\377\25\1\0\377\304O*\377\317?\31\377\217"
+  "\32\4\377\235\"\5\377\2633\13\377\214\"\7\377\206!\6\377\242,\11\377i\20"
+  "\2\377|\24\3\377\3065\23\377\314d9\377(\2\0\377\244\"\4\377\2562\11\377\254"
+  "5\12\377\2669\13\377\234\37\3\377\2660\10\377\235&\6\377\216\35\6\377\266"
+  "1\15\377\327V$\377\357\214P\377\360\234\\\377\345m6\377\343yC\377\273C\35"
+  "\377,\12\2\320\10\0\0g\10\0\0\32D\16\7L\2448\22\370\357\226X\377\365\271"
+  "y\377\365\256p\377\353\217U\377\345\206M\377\352\222Q\377\336\177C\377\322"
+  "n9\377\311e2\377\323g4\377\303^.\377\301Z+\377\272P&\377\264J$\377\247<\36"
+  "\377\320S2\377\351tI\377\276G%\377\331i5\377\322i3\377\247G#\377\243D\40"
+  "\377\337u:\377\336o8\377\311L&\377\353|M\377\342hA\377\276A\"\377\262C\37"
+  "\377\324Z)\377\317Y(\377\315V(\377\271L#\377\310[*\377\323g0\377\335r8\377"
+  "\336u<\377\337t>\377\342s@\377\360\230_\377\367\275\203\377\354\224Z\377"
+  "\245/\17\373\26\5\1\266\7\0\0T\0\0\0\21\215\21\6\30a!\14\320\344\200D\377"
+  "\345\202G\377\254D\34\377\2138\30\377\250?\31\377\316[$\377k+\21\377]&\17"
+  "\377a$\16\377k\"\15\377t#\17\377P\37\15\377P\37\15\377U\36\15\377\241/\22"
+  "\377\313C!\377\337jA\377x\33\13\377\226)\20\377\246<\30\377\257<\27\377\275"
+  "H\35\377\306K\37\377\232-\23\377x\35\14\377\347nE\377\2565\34\377o\"\17\377"
+  "|(\20\377\313R#\377\321X%\377\274H\36\377{-\23\377v1\25\377~6\27\377\213"
+  "<\32\377\234D\37\377\242H\40\377\243H\"\377\267Q&\377\354\215U\377\342}D"
+  "\377q\"\11\357\16\2\1\224\7\0\0<\0\0\0\10\253\30\0\13D\25\10\223\322b,\377"
+  "\340\203F\377\2272\21\377#\11\4\377L\16\2\377\2629\14\377~\33\4\377T\20\3"
+  "\377'\7\2\377\24\3\0\377:\15\2\377V\20\2\377O\15\2\377L\15\2\377t\24\2\377"
+  "\205\22\2\377\340uA\377\260.\22\377\304<\17\377\2746\13\377\301>\14\377\307"
+  "D\16\377\322R\25\377\320T\32\377\305<\27\377\345yD\377\35\2\1\377\25\0\0"
+  "\377\21\1\0\377:\11\2\377\226\33\3\377>\14\2\377.\4\2\377h\16\3\377\17\4"
+  "\3\377\15\6\2\3778\14\4\377'\11\4\377%\13\5\377q&\17\377\344\202J\377\301"
+  "R$\3775\20\5\330\12\3\0w\6\0\0%\0\0\0\2\314\0\0\4H\21\10B\212/\17\350\337"
+  "\200B\377\315d-\377:\14\4\377\31\2\1\377\204\34\1\377\205!\3\377q\35\3\377"
+  "m\26\2\377\234)\3\3779\12\1\377\31\4\1\377)\6\2\3773\11\2\377>\11\1\377q"
+  "\23\2\377\335b.\377\342i1\377\323T\25\377\243;\14\377\2011\12\377\2328\13"
+  "\377\271=\13\377\303E\21\377\342s4\377\346x9\377x\22\2\377\14\0\0\377\24"
+  "\1\0\377\26\1\1\377>\6\2\377\6\0\1\377\36\3\1\377\214\33\5\377\31\2\2\377"
+  "#\5\0\3773\6\0\377\20\1\0\377\30\5\2\377\267O#\377\327v>\377\213,\15\366"
+  "\22\4\2\260\7\0\0W\0\0\0\23\0\0\0\0\314\0\0\1\200\17\10\22C\23\6\246\316"
+  "\\'\377\324p8\377\2221\20\377\30\2\1\377z\35\2\377\232*\3\377\266:\6\377"
+  "\217\"\2\377l\32\2\377]\22\2\377s\32\2\377j\30\2\3777\12\2\377\22\2\0\377"
+  "F\11\1\377\2400\16\377\353\216K\377\311B\21\377v\33\2\377\"\3\0\377E\15\1"
+  "\377I\15\2\377\224\31\3\377\344x:\377\301M\37\377\222\"\4\377&\5\1\377\15"
+  "\1\1\377\5\0\0\377\0\0\0\377\2\0\0\377\1\0\0\377\6\0\0\377\15\2\1\3776\12"
+  "\1\377\12\1\0\377\12\1\0\377I\24\6\377\315l7\377\243B\34\3775\17\5\335\11"
+  "\1\1\206\4\0\0""5\0\0\0\7\0\0\0\0\0\0\0\0\243\0\0\5""9\11\4Hu\40\12\342\322"
+  "h2\377\301S'\377^\23\5\377e\20\1\377\177\36\2\377\216#\2\377c\25\1\377N\14"
+  "\1\377Y\20\1\377\2577\6\377\200#\5\377s\34\3\377J\16\2\377\202\34\2\377\247"
+  "(\10\377\337|A\377\314K\33\377\233\"\2\377]\21\1\377n\30\2\377A\12\2\377"
+  "\317U\35\377\270Z*\377\\\14\3\377?\7\2\377\205\37\2\377K\12\1\377\5\1\0\377"
+  "\0\0\0\377\1\0\0\377\0\0\0\377\7\1\0\377$\7\1\377\4\1\0\377\0\0\0\377\13"
+  "\3\1\377\265N%\377\241P'\377h\34\7\363\16\3\1\263\6\0\0^\0\0\0\31\0\0\0\1"
+  "\0\0\0\0\0\0\0\0\314\0\0\2o\7\0\23-\7\2\220\2449\25\375\320e0\377\325b*\377"
+  "o\25\2\377^\21\2\377D\16\2\377$\5\0\377\177#\3\377\266A\12\377\314g\32\377"
+  "\301K\15\377O\13\1\377j\32\2\377\221(\6\377u\26\3\377\215<\33\377\315T%\377"
+  "\304E\20\377c\34\6\377\234+\4\377\2758\12\377\307Z%\377\222?\35\377^\20\2"
+  "\377a\23\3\377\211$\4\377z\34\2\377\32\2\1\377\6\1\0\377\0\0\0\377\31\4\2"
+  "\377\202\40\10\377\10\1\0\377\0\0\0\377\0\0\0\377\177'\17\377\260T*\377\177"
+  ")\16\376!\11\1\325\10\0\0\203\7\0\0""6\0\0\0\11\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\231\0\0\4T\7\3#6\7\1\277\332_)\377\342|<\377\271A\26\377E\11\0\377"
+  "\27\3\0\377.\5\1\377\251,\2\377\307Q\17\377\314}(\377\275J\15\377G\12\1\377"
+  "|\"\4\377R\22\1\377Z\22\3\377W\40\16\377\311o:\377\225%\7\377\262E\17\377"
+  "{\36\2\377\213#\4\377\324r8\377\222-\16\377\31\4\0\377\223*\4\377;\14\1\377"
+  "n\32\3\377\27\2\1\377N\15\4\377\23\3\1\377J\16\2\377@\15\6\377\0\0\0\377"
+  "\0\0\0\377M\32\12\377\326o6\377\2163\26\377C\16\2\345\10\0\0\235\5\0\0R\0"
+  "\0\0\25\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\314\0\0\1r\0\0\11$\0\0OP"
+  "\17\2\330\302L!\377\305U'\377\2523\16\377K\15\1\377}\37\3\377{!\7\377\216"
+  "*\10\377\272N\21\377O\31\6\3778\14\2\3772\10\1\3774\14\2\377Z\24\4\377.\16"
+  "\5\377\303p;\377\231-\16\377w\34\4\3771\7\1\377\244:\22\377\313j5\377\245"
+  "+\11\377b\31\4\377\17\4\1\377\6\1\0\377_\22\1\377\20\2\0\377T\21\4\377e\26"
+  "\2\377Z\17\5\377;\10\4\377\0\0\0\377(\15\4\377\322g2\377\332l1\377A\14\2"
+  "\355\14\1\0\266\6\0\0j\6\0\0%\0\0\0\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\314\0\0\1M\0\0\20\32\0\0oP\22\4\344\236?\35\377\240H!\377\235"
+  "/\21\377\24\4\1\377+\11\1\377\2606\6\377\2630\2\377\210\"\3\377\206&\6\377"
+  "^\25\2\377g\26\3\377G\15\1\377\31\12\5\377\232N%\377\272T%\377a\26\5\377"
+  "R\25\5\377\314\\'\377\232I!\377Y\23\4\377\205!\4\377F\16\2\377\6\0\0\377"
+  "t\33\2\377n\34\3\3770\16\2\377\2\0\0\377+\6\2\377Q\16\5\377r\35\13\377\271"
+  "T(\377\232?\34\377\\\26\4\362\11\0\0\302\5\0\0x\4\0\0""4\0\0\0\12\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0f\0\0\2;\0\0\30\25"
+  "\0\0|I\22\5\345\235@\34\377\266P&\377\2162\23\377!\7\2\377\2425\12\377\242"
+  "0\7\377.\10\1\377\"\12\2\377g\31\5\377j\31\4\377~&\6\377/\12\3\377L.\24\377"
+  "\317t;\377v\40\10\377\226'\13\377\275c1\377\177.\21\377D\17\3\377;\12\1\377"
+  "n\24\1\377\2311\11\377\212,\7\377\26\2\1\377\0\0\0\377\0\0\0\377\1\0\0\377"
+  "\202)\16\377\266X+\377\236@\34\377c\27\4\362\17\1\0\305\6\0\0\200\3\0\0?"
+  "\0\0\0\21\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0R\0\0\5.\0\0\33\31\0\0zt\27\4\335\240:\30\377\242I#\377\250"
+  "@\34\377q\30\5\377r\26\5\3777\11\3\377\16\2\1\377(\10\2\377Z\30\4\377\206"
+  "%\6\377\30\4\2\377(\26\10\377\321\200D\377\270A\30\377\307I\34\377\323x@"
+  "\377~\37\10\377/\7\2\377\20\1\1\377\5\0\0\377c\33\5\377L\21\3\377\0\0\0\377"
+  "\0\0\0\3770\16\5\377\261J#\377\246O'\377\1770\23\377N\16\2\355\23\3\0\302"
+  "\6\0\0\200\3\0\0C\0\0\0\25\0\0\0\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0R\0\0\5.\0\0\33\31\0\0"
+  "d$\6\1\314\214*\17\376\246J#\377\263T)\377\324X'\377[\26\7\377)\7\2\377!"
+  "\7\1\377]\32\5\377s\26\2\377R\22\3\377\203#\10\377\300b/\377\334i4\377\351"
+  "yA\377\340o9\377;\12\3\377]\20\2\377\37\4\1\377\22\2\1\377k\22\1\377\10\0"
+  "\0\377)\14\4\377\235>\32\377\304a1\377\247J$\377}&\14\3760\12\2\345\16\1"
+  "\0\266\5\0\0x\6\0\0@\0\0\0\25\0\0\0\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0""3\0"
+  "\0\4.\0\0\26$\0\0>\26\2\1\253O\22\4\353\306P\"\377\352\216J\377\264U,\377"
+  "\255G!\377\203+\20\3778\16\5\377Y\25\6\377w\27\4\377\200\37\10\377\2117\27"
+  "\377\355\226^\377\361\230b\377\230+\22\377+\5\2\377I\10\2\377\203\32\3\377"
+  "\236\"\6\377\233,\17\377\247G!\377\341\201C\377\323t<\377\211-\22\377^\24"
+  "\3\362\25\5\0\324\10\0\0\235\6\0\0j\4\0\0""4\0\0\0\21\0\0\0\3\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0f\0\0\2/\0\0\15\"\0\0+\24\0\0r\40\7\1"
+  "\304q\35\6\361\200*\17\377\231G#\377\271b4\377\277a2\377\305d2\377\317h3"
+  "\377\313Q#\377\302F\34\377\365\251r\377\367\254x\377\312C\35\377\2512\24"
+  "\377\303O$\377\330r:\377\313d4\377\272_3\377\237H#\377\263=\30\377\227'\11"
+  "\365\40\6\1\334\10\0\0\262\6\0\0\202\5\0\0R\6\0\0%\0\0\0\12\0\0\0\1\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0)\0\0\5"
+  "!\0\0\31\33\0\0<\22\0\0y\24\3\1\275;\17\3\345a\35\11\372\2114\25\377\253"
+  "R'\377\304l8\377\320{C\377\356\234_\377\370\272|\377\365\244m\377\361\225"
+  "]\377\352\202I\377\330d3\377\267F!\377\226/\22\377q\31\7\373Q\21\3\355\31"
+  "\4\0\325\7\0\0\256\10\0\0\206\6\0\0^\4\0\0""5\0\0\0\25\0\0\0\4\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\1\25\0\0\12\34\0\0\35\25\0\0:\24\0\0]\20\1\0\222\37"
+  "\10\3\277=\24\7\334Q\33\10\353`\35\12\365\2360\16\373\302>\24\376\247$\10"
+  "\376\234\37\7\373t\24\5\365U\20\3\355@\15\3\340\40\5\1\317\13\0\0\265\10"
+  "\0\0\222\7\0\0v\7\0\0W\4\0\0""5\0\0\0\31\0\0\0\11\0\0\0\1\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\32\0\0\10\23\0\0\25\20\0\0'\20\0"
+  "\0?\24\2\2Y\22\3\2l\21\3\2z\22\2\2\210\14\1\0\217\14\1\0\224\14\1\0\224\12"
+  "\0\0\216\12\0\0\205\12\0\0w\10\0\0g\7\0\0T\7\0\0<\6\0\0%\0\0\0\23\0\0\0\7"
+  "\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\26\0\0\11\13\0\0\22\10\0\0\32\14\0\0#\12"
+  "\0\0)\11\0\0-\11\0\0""0\11\0\0""0\11\0\0-\5\0\0(\6\0\0\"\10\0\0\32\0\0\0"
+  "\21\0\0\0\10\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+  "\0\0",
+};
+
diff --git a/neo/sys/glimp.cpp b/neo/sys/glimp.cpp
index 1c31cb3..cad79b1 100644
--- a/neo/sys/glimp.cpp
+++ b/neo/sys/glimp.cpp
@@ -48,6 +48,39 @@ static SDL_Surface *window = NULL;
 #define SDL_WINDOW_FULLSCREEN SDL_FULLSCREEN
 #endif
 
+static void SetSDLIcon()
+{
+	Uint32 rmask, gmask, bmask, amask;
+
+	// ok, the following is pretty stupid.. SDL_CreateRGBSurfaceFrom() pretends to use a void* for the data,
+	// but it's really treated as endian-specific Uint32* ...
+#if SDL_BYTEORDER == SDL_BIG_ENDIAN
+	rmask = 0xff000000;
+	gmask = 0x00ff0000;
+	bmask = 0x0000ff00;
+	amask = 0x000000ff;
+#else
+	rmask = 0x000000ff;
+	gmask = 0x0000ff00;
+	bmask = 0x00ff0000;
+	amask = 0xff000000;
+#endif
+
+	#include "doom_icon.h" // contains the struct d3_icon
+
+	SDL_Surface* icon = SDL_CreateRGBSurfaceFrom((void*)d3_icon.pixel_data, d3_icon.width, d3_icon.height,
+			d3_icon.bytes_per_pixel*8, d3_icon.bytes_per_pixel*d3_icon.width,
+			rmask, gmask, bmask, amask);
+
+#if SDL_VERSION_ATLEAST(2, 0, 0)
+	SDL_SetWindowIcon(window, icon);
+#else
+	SDL_WM_SetIcon(icon, NULL);
+#endif
+
+	SDL_FreeSurface(icon);
+}
+
 /*
 ===================
 GLimp_Init
@@ -146,7 +179,6 @@ bool GLimp_Init(glimpParms_t parms) {
 									SDL_WINDOWPOS_UNDEFINED,
 									SDL_WINDOWPOS_UNDEFINED,
 									parms.width, parms.height, flags);
-		context = SDL_GL_CreateContext(window);
 
 		if (!window) {
 			common->DPrintf("Couldn't set GL mode %d/%d/%d: %s",
@@ -154,15 +186,21 @@ bool GLimp_Init(glimpParms_t parms) {
 			continue;
 		}
 
+		context = SDL_GL_CreateContext(window);
+
 		if (SDL_GL_SetSwapInterval(r_swapInterval.GetInteger()) < 0)
 			common->Warning("SDL_GL_SWAP_CONTROL not supported");
 
 		SDL_GetWindowSize(window, &glConfig.vidWidth, &glConfig.vidHeight);
 
+		SetSDLIcon(); // for SDL2  this must be done after creating the window
+
 		glConfig.isFullscreen = (SDL_GetWindowFlags(window) & SDL_WINDOW_FULLSCREEN) == SDL_WINDOW_FULLSCREEN;
 #else
 		SDL_WM_SetCaption(GAME_NAME, GAME_NAME);
 
+		SetSDLIcon(); // for SDL1.2  this must be done before creating the window
+
 		if (SDL_GL_SetAttribute(SDL_GL_SWAP_CONTROL, r_swapInterval.GetInteger()) < 0)
 			common->Warning("SDL_GL_SWAP_CONTROL not supported");
 
@@ -310,7 +348,7 @@ void GLimp_GrabInput(int flags) {
 
 #if SDL_VERSION_ATLEAST(2, 0, 0)
 	SDL_ShowCursor(flags & GRAB_HIDECURSOR ? SDL_DISABLE : SDL_ENABLE);
-	SDL_SetRelativeMouseMode(flags & GRAB_HIDECURSOR ? SDL_TRUE : SDL_FALSE);
+	SDL_SetRelativeMouseMode((grab && (flags & GRAB_HIDECURSOR)) ? SDL_TRUE : SDL_FALSE);
 	SDL_SetWindowGrab(window, grab ? SDL_TRUE : SDL_FALSE);
 #else
 	SDL_ShowCursor(flags & GRAB_HIDECURSOR ? SDL_DISABLE : SDL_ENABLE);

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/dhewm3.git



More information about the Pkg-games-commits mailing list