Changeset 228 for trunk/src/gfx/image.cc
- Timestamp:
- 02/04/14 03:50:28 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/gfx/image.cc
r128 r228 48 48 } 49 49 50 void image::fill( region r, uint8 value, int stride ) 51 { 52 if ( stride == 0 ) stride = r.size.x * static_cast<sint32>( m_depth ); 53 54 sint32 bpos = (r.pos.y*m_size.x + r.pos.x ) * static_cast<sint32>( m_depth ); 55 sint32 bline = m_size.x*static_cast<sint32>( m_depth ); 56 57 for( int i = 0; i < r.size.y; ++i ) 58 { 59 // TODO: test 60 std::fill( m_data + bpos + bline * i, m_data + bpos + bline * i + stride, value ); 61 } 62 } 63 64 50 65 void image::set_region( region r, const uint8 * data, int stride ) 51 66 { … … 64 79 } 65 80 81 void image::set_region( region r, const image_data* idata ) 82 { 83 if ( idata->get_depth() == m_depth ) 84 { 85 set_region( r, idata->get_data() ); 86 return; 87 } 88 89 fill( r, 255 ); 90 91 sint32 bpos = (r.pos.y*m_size.x + r.pos.x ) * static_cast<sint32>( m_depth ); 92 sint32 bline = m_size.x*static_cast<sint32>( m_depth ); 93 94 const uint8* data = idata->get_data(); 95 sint32 depth = idata->get_depth(); 96 sint32 dstride = r.size.x * static_cast<sint32>( depth ); 97 98 for( int y = 0; y < r.size.y; ++y ) 99 { 100 sint32 pos = bpos + bline * y; 101 for( int x = 0; x < r.size.x; ++x ) 102 { 103 sint32 xy = pos + x * m_depth; 104 for( int e = 0; e < depth; ++e ) 105 { 106 m_data[ xy + e ] = data[ y*dstride + x * depth + e ]; 107 } 108 } 109 } 110 } 111 112 66 113 image::~image() 67 114 {
Note: See TracChangeset
for help on using the changeset viewer.