summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog9
-rw-r--r--src/main.cpp27
-rw-r--r--src/resources/image.cpp72
3 files changed, 34 insertions, 74 deletions
diff --git a/ChangeLog b/ChangeLog
index d02e5c54..5b0a1390 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,11 @@
-2007-03-18 Bjørn Lindeijer <bjorn@lindeijer.nl>
+2007-03-18 Rogier Polak <rogier.l.a.polak@gmail.com>
+
+ * src/main.cpp: Added (-v) version to the arguments. (Applied a patch
+ by Patrick Matthäi).
+ * src/resources/image.cpp: Deleted the "pink code", which added
+ transparancy with SDL_SetColorKey.
+
+2007-03-18 Bjørn Lindeijer <bjorn@lindeijer.nl>
* icons/tmw.ico, icons/tmw.png, icons/tmw.xpm: Replaced icons with the
green globe that is also used on the website.
diff --git a/src/main.cpp b/src/main.cpp
index 3cc32873..40106c5c 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -122,11 +122,13 @@ struct Options
*/
Options():
printHelp(false),
+ printVersion(false),
skipUpdate(false),
chooseDefault(false)
{};
bool printHelp;
+ bool printVersion;
bool skipUpdate;
bool chooseDefault;
std::string username;
@@ -334,6 +336,7 @@ void printHelp()
<< "tmw" << std::endl << std::endl
<< "Options: " << std::endl
<< " -h --help : Display this help" << std::endl
+ << " -v --version : Display the version" << std::endl
<< " -u --skipupdate : Skip the update process" << std::endl
<< " -U --username : Login with this username" << std::endl
<< " -P --password : Login with this password" << std::endl
@@ -343,12 +346,22 @@ void printHelp()
<< std::endl;
}
+void printVersion()
+{
+#ifdef PACKAGE_VERSION
+ std::cout << "The Mana World version " << PACKAGE_VERSION << std::endl;
+#else
+ std::cout << "The Mana World version " <<
+ "(local build?, PACKAGE_VERSION is not defined)" << std::endl;
+#endif
+}
void parseOptions(int argc, char *argv[], Options &options)
{
- const char *optstring = "huU:P:Dp:C:";
+ const char *optstring = "hvuU:P:Dp:C:";
const struct option long_options[] = {
{ "help", no_argument, 0, 'h' },
+ { "version", no_argument, 0, 'v' },
{ "skipupdate", no_argument, 0, 'u' },
{ "username", required_argument, 0, 'U' },
{ "password", required_argument, 0, 'P' },
@@ -370,6 +383,9 @@ void parseOptions(int argc, char *argv[], Options &options)
case 'h':
options.printHelp = true;
break;
+ case 'v':
+ options.printVersion = true;
+ break;
case 'u':
options.skipUpdate = true;
break;
@@ -503,9 +519,6 @@ void mapLogin(Network *network, LoginData *loginData)
/** Main */
int main(int argc, char *argv[])
{
-#ifdef PACKAGE_VERSION
- std::cout << "The Mana World v" << PACKAGE_VERSION << std::endl;
-#endif
logger = new Logger();
Options options;
@@ -517,7 +530,11 @@ int main(int argc, char *argv[])
printHelp();
return 0;
}
-
+ else if (options.printVersion)
+ {
+ printVersion();
+ return 0;
+ }
// Initialize libxml2 and check for potential ABI mismatches between
// compiled version and the shared library actually used.
xmlInitParser();
diff --git a/src/resources/image.cpp b/src/resources/image.cpp
index 9398e06b..fed26851 100644
--- a/src/resources/image.cpp
+++ b/src/resources/image.cpp
@@ -99,66 +99,6 @@ Image* Image::load(void *buffer, unsigned int bufferSize,
amask = 0xff000000;
#endif
- // Convert the image to a 32 bit software surface for processing
- SDL_Surface *formatImage = SDL_CreateRGBSurface(SDL_SWSURFACE, 0, 0, 32,
- rmask, gmask, bmask, amask);
-
- if (formatImage == NULL) {
- logger->log("Error, image load failed: not enough memory");
- SDL_FreeSurface(tmpImage);
- return NULL;
- }
-
- SDL_Surface *image = SDL_ConvertSurface(
- tmpImage, formatImage->format, SDL_SWSURFACE);
-
- SDL_FreeSurface(formatImage);
-
- if (image == NULL) {
- logger->log("Error, image load failed: not enough memory");
- return NULL;
- }
-
- bool hasPink = false;
- bool hasAlpha = false;
- int i;
- Uint32 pink = SDL_MapRGB(image->format, 255, 0, 255);
-
- // Figure out whether the image has pink pixels
- for (i = 0; i < image->w * image->h; ++i)
- {
- if (((Uint32*)image->pixels)[i] == pink)
- {
- hasPink = true;
- break;
- }
- }
-
- // Figure out whether the image uses its alpha layer
- for (i = 0; i < image->w * image->h; ++i)
- {
- Uint8 r, g, b, a;
- SDL_GetRGBA(
- ((Uint32*)image->pixels)[i],
- image->format,
- &r, &g, &b, &a);
-
- if (a != 255)
- {
- hasAlpha = true;
- break;
- }
- }
-
- SDL_FreeSurface(image);
-
- if (hasPink && !hasAlpha) {
- SDL_SetColorKey(tmpImage, SDL_SRCCOLORKEY,
- SDL_MapRGB(tmpImage->format, 255, 0, 255));
- } else if (hasAlpha) {
- SDL_SetAlpha(tmpImage, SDL_SRCALPHA, SDL_ALPHA_OPAQUE);
- }
-
#ifdef USE_OPENGL
if (mUseOpenGL)
{
@@ -246,14 +186,10 @@ Image* Image::load(void *buffer, unsigned int bufferSize,
}
#endif
- // Set color key and alpha blending optins, and convert the surface to the
- // current display format
- if (hasAlpha) {
- image = SDL_DisplayFormatAlpha(tmpImage);
- }
- else {
- image = SDL_DisplayFormat(tmpImage);
- }
+ SDL_SetAlpha(tmpImage, SDL_SRCALPHA, SDL_ALPHA_OPAQUE);
+
+ SDL_Surface *image = SDL_DisplayFormatAlpha(tmpImage);
+
SDL_FreeSurface(tmpImage);
if (image == NULL) {