X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fyoink;a=blobdiff_plain;f=src%2FMoof%2FImage.cc;h=158135287b7f727822e03b3ad5ad2e2144e0c641;hp=ee44dd75dcacb319f331411df02e9c28da92407b;hb=c85b710e7ead9bc417805bb893571a7139f1081c;hpb=e973a129b5b83b628ba3f09e8c95682fc74080cd diff --git a/src/Moof/Image.cc b/src/Moof/Image.cc index ee44dd7..1581352 100644 --- a/src/Moof/Image.cc +++ b/src/Moof/Image.cc @@ -1,40 +1,23 @@ -/******************************************************************************* - - Copyright (c) 2009, Charles McGarvey - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*******************************************************************************/ +/*] Copyright (c) 2009-2010, Charles McGarvey [************************** +**] All rights reserved. +* +* vi:ts=4 sw=4 tw=75 +* +* Distributable under the terms and conditions of the 2-clause BSD license; +* see the file COPYING for a complete text of the license. +* +**************************************************************************/ #include // FILE #include // strncmp #include -#include #include +#include -#include "Core.hh" +#include "Backend.hh" #include "Error.hh" #include "Image.hh" #include "Log.hh" @@ -87,13 +70,12 @@ public: } - bool init(const std::string& name, bool flipped = false) + void init(const std::string& name, bool flipped = false) { - std::string path = Image::getPath(name); + std::string path(name); - logInfo << "opening image file " << path << std::endl; - FILE* fp = fopen(path.c_str(), "rb"); - if (!fp) return false; + FILE* fp = Image::openFile(path); + if (!fp) return; png_byte signature[8]; size_t bytesRead; @@ -114,13 +96,10 @@ public: png_textp texts = 0; int numTexts; - logInfo("checking signature..."); bytesRead = fread(signature, 1, sizeof(signature), fp); - logInfo << "reading " << bytesRead << " bytes of signature" << std::endl; if (bytesRead < sizeof(signature) || png_sig_cmp(signature, 0, sizeof(signature)) != 0) goto cleanup; - logInfo("creating png structures..."); pngObj = png_create_read_struct(PNG_LIBPNG_VER_STRING, 0, 0, 0); if (!pngObj) goto cleanup; @@ -130,7 +109,6 @@ public: pngInfoEnd = png_create_info_struct(pngObj); if (!pngInfoEnd) goto cleanup; - logInfo("setting up long jump..."); if (setjmp(png_jmpbuf(pngObj))) goto cleanup; png_init_io(pngObj, fp); @@ -138,7 +116,6 @@ public: png_read_info(pngObj, pngInfo); bpp = png_get_bit_depth(pngObj, pngInfo); - logInfo << "texture bpp: " << bpp << std::endl; colors = png_get_color_type(pngObj, pngInfo); switch (colors) { @@ -163,13 +140,11 @@ public: channels = png_get_channels(pngObj, pngInfo); mDepth = bpp * channels; - logInfo << "texture channels: " << channels << std::endl; if (channels == 3) mColorMode = GL_RGB; else mColorMode = GL_RGBA; // read comments png_get_text(pngObj, pngInfo, &texts, &numTexts); - logInfo << "num texts: " << numTexts << std::endl; for (int i = 0; i < numTexts; ++i) { if (strncmp(texts[i].key, "TextureInfo", 11) == 0) @@ -190,7 +165,8 @@ public: { for (int i = 0; i < height; ++i) { - rows[height - 1 - i] = (png_bytep)(mPixels + i * channels * width); + rows[height - 1 - i] = (png_bytep)(mPixels + + i * channels * width); } } else @@ -226,14 +202,11 @@ public: cleanup: - logInfo("cleaning up..."); delete[] rows; png_destroy_read_struct(pngObj ? &pngObj : 0, pngInfo ? &pngInfo : 0, pngInfoEnd ? &pngInfoEnd : 0); fclose(fp); - - return mContext; } @@ -315,23 +288,16 @@ void Image::setAsIcon() const } -std::string Image::getPath(const std::string& name) +bool Image::getPath(std::string& name) { - if (boost::find_last(name, ".png")) - { - return Resource::getPath(name); - } - else - { - std::string path("images/"); - path += name; - path += ".png"; - return Resource::getPath(path); - } + return Resource::getPath(name, "images/", "png"); } +FILE* Image::openFile(std::string& name) +{ + return Resource::openFile(name, "images/", "png"); +} -} // namespace Mf -/** vim: set ts=4 sw=4 tw=80: *************************************************/ +} // namespace Mf