bigloo.foreign.rgc_do_blit C# (CSharp) Method

rgc_do_blit() private static method

private static rgc_do_blit ( input_port p, byte s, int o, int l ) : int
p input_port
s byte
o int
l int
return int
        private static int rgc_do_blit( input_port p, byte[] s, int o, int l )
        {
            RGC_START_MATCH( p );

             while ( ((p.bufpos - p.matchstart) <= l) && !p.eof) {
            // MS fix 6 Juillet 2005
            int fsize = (p.bufsiz - p.bufpos);
            p.forward= p.bufpos;
            rgc_fill_buffer( p );
            // less characters are available
            if( (p.bufpos - p.forward) <  fsize ) break;
             }

             if ((p.bufpos - p.matchstart) <= l)
            l= (p.bufpos - p.matchstart - 1);

             p.forward= p.matchstart + l;
             RGC_STOP_MATCH( p );
             RGC_SET_FILEPOS( p );
             bcopy( p.buffer, p.matchstart, s, o, l );

             return l;
        }
foreign