• Main Page
  • Related Pages
  • Namespaces
  • Classes
  • Files
  • File List

CEGUIMinizipResourceProvider.h

00001 /***********************************************************************
00002     filename:   CEGUIMinizipResourceProvider.h
00003     created:    19/3/2010
00004     author:     Jeff A. Marr
00005 
00006     purpose:    Defines a resource provider for minizip archives
00007 *************************************************************************/
00008 /***************************************************************************
00009  *   Copyright (C) 2004 - 2010 Paul D Turner & The CEGUI Development Team
00010  *
00011  *   Permission is hereby granted, free of charge, to any person obtaining
00012  *   a copy of this software and associated documentation files (the
00013  *   "Software"), to deal in the Software without restriction, including
00014  *   without limitation the rights to use, copy, modify, merge, publish,
00015  *   distribute, sublicense, and/or sell copies of the Software, and to
00016  *   permit persons to whom the Software is furnished to do so, subject to
00017  *   the following conditions:
00018  *
00019  *   The above copyright notice and this permission notice shall be
00020  *   included in all copies or substantial portions of the Software.
00021  *
00022  *   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
00023  *   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
00024  *   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
00025  *   IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
00026  *   OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
00027  *   ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
00028  *   OTHER DEALINGS IN THE SOFTWARE.
00029  ***************************************************************************/
00030 #ifndef _CEGUIMinizipResourceProvider_h_
00031 #define _CEGUIMinizipResourceProvider_h_
00032 
00033 #include "CEGUIBase.h"
00034 #include "CEGUIDefaultResourceProvider.h"
00035 
00036 #if defined(_MSC_VER)
00037 #   pragma warning(push)
00038 #   pragma warning(disable : 4251)
00039 #endif
00040 
00041 // NOTE: While the DefaultResourceProvider (DRP) was not originally intended
00042 // to be derived from, the purpose of this class is to extend the behavior of
00043 // the default implementation. The only difference is that this class will
00044 // attempt to load resources from a zip archive if the resource does not exist
00045 // outside the archive.
00046 
00047 // Start of CEGUI namespace section
00048 namespace CEGUI
00049 {
00050 class CEGUIEXPORT MinizipResourceProvider : public DefaultResourceProvider
00051 {
00052 public:
00053     /*************************************************************************
00054         Construction and Destruction
00055     *************************************************************************/
00056     MinizipResourceProvider();
00057     MinizipResourceProvider(const String& archive, bool loadLocal = true);
00058     ~MinizipResourceProvider(void);
00059 
00067     void setArchive(const String& archive);
00068     void setLoadLocal(bool load = true);
00069 
00070     void loadRawDataContainer(const String& filename,
00071                               RawDataContainer& output,
00072                               const String& resourceGroup);
00073     size_t getResourceGroupFileNames(std::vector<String>& out_vec,
00074                                      const String& file_pattern,
00075                                      const String& resource_group);
00076 protected:
00077     bool doesFileExist(const String& filename);
00078     void openArchive();
00079     void closeArchive();
00080 
00081     struct Impl;
00082     Impl* d_pimpl;
00083 };
00084 
00085 } // End of  CEGUI namespace section
00086 
00087 #if defined(_MSC_VER)
00088 #   pragma warning(pop)
00089 #endif
00090 
00091 #endif  // end of guard _CEGUIMinizipResourceProvider_h_
00092 

Generated on Fri Nov 19 2010 12:01:19 for Crazy Eddies GUI System by  doxygen 1.7.2