Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*==========================================================================;
* * Copyright (C) 1998 Microsoft Corporation. All Rights Reserved. * * File: surfiter.hpp * Content: Utility iterator classes for cubemaps and mipmaps * ***************************************************************************/ #ifndef _SURFITER_HPP_
#define _SURFITER_HPP_
/* Mipmap iterator utility class */ class CMipmapIter { // Private Data
LPDDRAWI_DDRAWSURFACE_LCL m_currlcl;
// Public Members
public:
// Construct and Destroy
CMipmapIter(LPDDRAWI_DDRAWSURFACE_LCL lpLcl) : m_currlcl(lpLcl) {} // Modifiers
inline void operator++(); // Accessors
operator const void* () const { return m_currlcl; } LPDDRAWI_DDRAWSURFACE_LCL operator()() const { return m_currlcl; } };
inline void CMipmapIter::operator++() { LPATTACHLIST al = m_currlcl->lpAttachList; while(al != NULL) { if(al->lpAttached->lpSurfMore->ddsCapsEx.dwCaps2 & DDSCAPS2_MIPMAPSUBLEVEL) { m_currlcl = al->lpAttached; return; } al = al->lpLink; } m_currlcl = 0; }
/* Cubemap iterator utility class */ class CCubemapIter { // Private Data
LPDDRAWI_DDRAWSURFACE_LCL m_currlcl; LPATTACHLIST m_al;
// Public Members
public:
// Construct and Destroy
CCubemapIter(LPDDRAWI_DDRAWSURFACE_LCL lpLcl) : m_currlcl(lpLcl), m_al(lpLcl->lpAttachList) {} // Modifiers
inline void operator++(); // Accessors
operator const void* () const { return m_currlcl; } LPDDRAWI_DDRAWSURFACE_LCL operator()() const { return m_currlcl; } };
inline void CCubemapIter::operator++() { while(m_al != NULL) { DWORD &caps2 = m_al->lpAttached->lpSurfMore->ddsCapsEx.dwCaps2; if((caps2 & DDSCAPS2_CUBEMAP_ALLFACES) && !(caps2 & DDSCAPS2_MIPMAPSUBLEVEL)) { m_currlcl = m_al->lpAttached; m_al = m_al->lpLink; return; } m_al = m_al->lpLink; } m_currlcl = 0; }
#endif
|