MCPcopy Create free account
hub / github.com/carbonengine/trinity / AddElement

Method AddElement

trinity/Tr2TextureArray.cpp:18–79  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

16}
17
18Tr2TextureArrayElement Tr2TextureArray::AddElement( const ImageIO::HostBitmap& bitmap )
19{
20 if( !bitmap.IsValid() )
21 {
22 return Tr2TextureArrayElement();
23 }
24
25 if( m_dimensions.GetType() != Tr2RenderContextEnum::TEX_TYPE_INVALID )
26 {
27 if( m_dimensions.GetType() != bitmap.GetType() ||
28 m_dimensions.GetFormat() != bitmap.GetFormat() ||
29 m_dimensions.GetWidth() != bitmap.GetWidth() ||
30 m_dimensions.GetHeight() != bitmap.GetHeight() ||
31 m_dimensions.GetDepth() != bitmap.GetDepth() ||
32 m_dimensions.GetTrueMipCount() != bitmap.GetTrueMipCount() )
33 {
34 return Tr2TextureArrayElement();
35 }
36 }
37
38 uint32_t index = uint32_t( m_elements.size() );
39
40 for( size_t i = 0; i < m_elements.size(); ++i )
41 {
42 if( !m_elements[i].IsValid() )
43 {
44 index = uint32_t( i );
45 break;
46 }
47 }
48 if( index == m_elements.size() )
49 {
50 m_elements.push_back( ImageIO::HostBitmap() );
51 }
52 m_elements[index].CreateFromBitmapDimensions( bitmap );
53 memcpy( m_elements[index].GetRawData(), bitmap.GetRawData(), bitmap.GetRawDataSize() );
54
55 m_dimensions = Tr2BitmapDimensions(
56 bitmap.GetType(),
57 bitmap.GetFormat(),
58 bitmap.GetWidth(),
59 bitmap.GetHeight(),
60 bitmap.GetDepth(),
61 bitmap.GetTrueMipCount(),
62 uint32_t( ( m_elements.size() + m_increment - 1 ) / m_increment * m_increment ) );
63
64 Tr2TextureAL newTexture = CreateTexture();
65 if( !newTexture.IsValid() )
66 {
67 m_elements[index] = ImageIO::HostBitmap();
68 return Tr2TextureArrayElement();
69 }
70 m_texture = newTexture;
71 m_onTextureChange();
72
73 Tr2TextureArrayElement element;
74 element.m_data.reset( new Tr2TextureArrayElement::Data );
75 element.m_data->m_array = this;

Callers 1

DoPrepareMethod · 0.80

Calls 11

CreateTextureFunction · 0.85
GetTrueMipCountMethod · 0.80
sizeMethod · 0.80
resetMethod · 0.80
IsValidMethod · 0.45
GetTypeMethod · 0.45
GetFormatMethod · 0.45
GetWidthMethod · 0.45
GetHeightMethod · 0.45
GetDepthMethod · 0.45

Tested by

no test coverage detected