Changeset 228 for trunk/src/gfx


Ignore:
Timestamp:
02/04/14 03:50:28 (11 years ago)
Author:
epyon
Message:
  • various untracked changes
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/gfx/image.cc

    r128 r228  
    4848}
    4949
     50void 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
    5065void image::set_region( region r, const uint8 * data, int stride )
    5166{
     
    6479}
    6580
     81void 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
    66113image::~image()
    67114{
Note: See TracChangeset for help on using the changeset viewer.