Merge branch 'ryzom/ark-features' into main/gingo-test
[ryzomcore.git] / nel / src / 3d / texture_mem.cpp
blobe2881e88ef1976d8edbb72183357642394a2bb8e
1 // NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
2 // Copyright (C) 2010 Winch Gate Property Limited
3 //
4 // This program is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU Affero General Public License as
6 // published by the Free Software Foundation, either version 3 of the
7 // License, or (at your option) any later version.
8 //
9 // This program is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 // GNU Affero General Public License for more details.
14 // You should have received a copy of the GNU Affero General Public License
15 // along with this program. If not, see <http://www.gnu.org/licenses/>.
17 #include "std3d.h"
19 #include "nel/3d/texture_mem.h"
20 #include "nel/misc/mem_stream.h"
22 #include <memory>
24 #ifdef DEBUG_NEW
25 #define new DEBUG_NEW
26 #endif
28 namespace NL3D
32 /*==================================================================*\
33 CTEXTUREMEM
34 \*==================================================================*/
36 /*------------------------------------------------------------------*\
37 doGenerate()
38 \*------------------------------------------------------------------*/
39 void CTextureMem::doGenerate(bool /* async */)
41 if (_Data)
43 if (_IsFile)
45 NLMISC::CMemStream m (true);
46 m.fill (_Data, _Length);
47 load (m);
49 else
51 resize(_TexWidth, _TexHeight, _TexType);
52 ::memcpy(&getPixels(0)[0], _Data, _Length);
53 buildMipMaps();
56 else
58 makeDummy();
63 static NLMISC::CRGBA WhitePix(255, 255, 255, 255); // the texture datas ... :)
65 ///===========================================================================
66 ITexture *CTextureMem::Create1x1WhiteTex()
68 static NLMISC::CSmartPtr<ITexture> tex = NULL;
69 if (!tex)
71 tex = new CTextureMem((uint8 *) &WhitePix,
72 sizeof(WhitePix),
73 false, /* dont delete */
74 false, /* not a file */
75 1, 1);
76 static_cast<CTextureMem *>((ITexture *)tex)->setShareName("#WhitePix1x1");
78 return (ITexture *) tex;
81 ///===========================================================================
82 void CTextureMem::setAllowDegradation(bool allow)
84 _AllowDegradation= allow;
87 ///===========================================================================
88 uint32 CTextureMem::getImageWidth() const
90 return _TexWidth;
93 ///===========================================================================
94 uint32 CTextureMem::getImageHeight() const
96 return _TexHeight;
100 } // NL3D