summaryrefslogtreecommitdiffstats
path: root/lib/libvgl/bitmap.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libvgl/bitmap.c')
-rw-r--r--lib/libvgl/bitmap.c41
1 files changed, 40 insertions, 1 deletions
diff --git a/lib/libvgl/bitmap.c b/lib/libvgl/bitmap.c
index 177d171..6498e26 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:
}
}
OpenPOWER on IntegriCloud