diff options
| author | Nicolas Souchu <nsouch@FreeBSD.org> | 2001-01-13 11:30:17 +0000 |
|---|---|---|
| committer | Nicolas Souchu <nsouch@FreeBSD.org> | 2001-01-13 11:30:17 +0000 |
| commit | 933d455fac76ad2e856aa251c3743bf4ddb3e65e (patch) | |
| tree | 8795ac1160829f7c65066c3190ebebc512d97428 /lib/libvgl/bitmap.c | |
| parent | ea0187039ab3a96008586daca433dad4135c61f8 (diff) | |
Notes
Diffstat (limited to 'lib/libvgl/bitmap.c')
| -rw-r--r-- | lib/libvgl/bitmap.c | 41 |
1 files changed, 40 insertions, 1 deletions
diff --git a/lib/libvgl/bitmap.c b/lib/libvgl/bitmap.c index 177d171cb1f7..6498e2659e85 100644 --- a/lib/libvgl/bitmap.c +++ b/lib/libvgl/bitmap.c @@ -143,12 +143,31 @@ WriteVerticalLine(VGLBitmap *dst, int x, int y, int width, byte *line) width -= i; } break; + case VIDBUF16S: + case VIDBUF24S: + case VIDBUF32S: + width = width * dst->PixelBytes; + pos = (dst->VXsize * y + x) * dst->PixelBytes; + while (width > 0) { + offset = VGLSetSegment(pos); + i = min(VGLAdpInfo.va_window_size - offset, width); + bcopy(line, dst->Bitmap + offset, i); + line += i; + pos += i; + width -= i; + } + break; case VIDBUF8: case MEMBUF: address = dst->Bitmap + dst->VXsize * y + x; bcopy(line, address, width); break; - + case VIDBUF16: + case VIDBUF24: + case VIDBUF32: + address = dst->Bitmap + (dst->VXsize * y + x) * dst->PixelBytes; + bcopy(line, address, width * dst->PixelBytes); + break; default: } } @@ -238,11 +257,31 @@ read_planar: width -= i; } break; + case VIDBUF16S: + case VIDBUF24S: + case VIDBUF32S: + width = width * src->PixelBytes; + pos = (src->VXsize * y + x) * src->PixelBytes; + while (width > 0) { + offset = VGLSetSegment(pos); + i = min(VGLAdpInfo.va_window_size - offset, width); + bcopy(src->Bitmap + offset, line, i); + line += i; + pos += i; + width -= i; + } + break; case VIDBUF8: case MEMBUF: address = src->Bitmap + src->VXsize * y + x; bcopy(address, line, width); break; + case VIDBUF16: + case VIDBUF24: + case VIDBUF32: + address = src->Bitmap + (src->VXsize * y + x) * src->PixelBytes; + bcopy(address, line, width * src->PixelBytes); + break; default: } } |
