From e5736fcf92de19b2e7018e9fe83aee777a71b66d Mon Sep 17 00:00:00 2001 From: castano Date: Thu, 1 Jul 2010 00:25:44 +0000 Subject: [PATCH] Add explicit load methods to DirectDrawSurface. --- src/nvimage/DirectDrawSurface.cpp | 39 +++++++++++++++++++++---------- src/nvimage/DirectDrawSurface.h | 6 ++++- 2 files changed, 32 insertions(+), 13 deletions(-) diff --git a/src/nvimage/DirectDrawSurface.cpp b/src/nvimage/DirectDrawSurface.cpp index 2151a04..8edbc16 100644 --- a/src/nvimage/DirectDrawSurface.cpp +++ b/src/nvimage/DirectDrawSurface.cpp @@ -803,32 +803,47 @@ bool DDSHeader::hasDX10Header() const } - -DirectDrawSurface::DirectDrawSurface(const char * name) : stream(new StdInputStream(name)) +DirectDrawSurface::DirectDrawSurface() : stream(NULL) { - if (!stream->isError()) - { - (*stream) << header; - } } -DirectDrawSurface::DirectDrawSurface(Stream * s) : stream(s) +DirectDrawSurface::DirectDrawSurface(const char * name) : stream(NULL) { - if (!stream->isError()) - { - (*stream) << header; - } + load(name); } +DirectDrawSurface::DirectDrawSurface(Stream * s) : stream(NULL) +{ + load(s); +} DirectDrawSurface::~DirectDrawSurface() { delete stream; } +bool DirectDrawSurface::load(const char * filename) +{ + return load(new StdInputStream(filename)); +} + +bool DirectDrawSurface::load(Stream * stream) +{ + delete this->stream; + this->stream = stream; + + if (!stream->isError()) + { + (*stream) << header; + return true; + } + + return false; +} + bool DirectDrawSurface::isValid() const { - if (stream->isError()) + if (stream == NULL || stream->isError()) { return false; } diff --git a/src/nvimage/DirectDrawSurface.h b/src/nvimage/DirectDrawSurface.h index a9c5d04..4b923a7 100644 --- a/src/nvimage/DirectDrawSurface.h +++ b/src/nvimage/DirectDrawSurface.h @@ -113,10 +113,14 @@ namespace nv class NVIMAGE_CLASS DirectDrawSurface { public: + DirectDrawSurface(); DirectDrawSurface(const char * file); DirectDrawSurface(Stream * stream); ~DirectDrawSurface(); + bool load(const char * filename); + bool load(Stream * stream); + bool isValid() const; bool isSupported() const; @@ -153,7 +157,7 @@ namespace nv private: - Stream * const stream; + Stream * stream; DDSHeader header; DDSHeader10 header10; };