bool ISurfaceAllocator::AllocSurfaceDescriptorWithCaps(const gfxIntSize& aSize, gfxASurface::gfxContentType aContent, uint32_t aCaps, SurfaceDescriptor* aBuffer) { bool tryPlatformSurface = true; #ifdef DEBUG tryPlatformSurface = !PR_GetEnv("MOZ_LAYERS_FORCE_SHMEM_SURFACES"); #endif if (tryPlatformSurface && PlatformAllocSurfaceDescriptor(aSize, aContent, aCaps, aBuffer)) { return true; } if (XRE_GetProcessType() == GoannaProcessType_Default) { gfxImageFormat format = gfxPlatform::GetPlatform()->OptimalFormatForContent(aContent); int32_t stride = gfxASurface::FormatStrideForWidth(format, aSize.width); uint8_t *data = new uint8_t[stride * aSize.height]; memset(data, 0, stride * aSize.height); *aBuffer = MemoryImage((uintptr_t)data, aSize, stride, format); return true; } nsRefPtr<gfxSharedImageSurface> buffer; if (!AllocSharedImageSurface(aSize, aContent, getter_AddRefs(buffer))) { return false; } *aBuffer = buffer->GetShmem(); return true; }
bool ISurfaceAllocator::AllocSurfaceDescriptorWithCaps(const gfxIntSize& aSize, gfxASurface::gfxContentType aContent, uint32_t aCaps, SurfaceDescriptor* aBuffer) { bool tryPlatformSurface = true; #ifdef DEBUG tryPlatformSurface = !PR_GetEnv("MOZ_LAYERS_FORCE_SHMEM_SURFACES"); #endif if (tryPlatformSurface && PlatformAllocSurfaceDescriptor(aSize, aContent, aCaps, aBuffer)) { return true; } if (XRE_GetProcessType() == GeckoProcessType_Default) { gfxImageFormat format = gfxPlatform::GetPlatform()->OptimalFormatForContent(aContent); int32_t stride = gfxASurface::FormatStrideForWidth(format, aSize.width); uint8_t *data = new (std::nothrow) uint8_t[stride * aSize.height]; if (!data) { return false; } #ifdef XP_MACOSX // Workaround a bug in Quartz where drawing an a8 surface to another a8 // surface with OPERATOR_SOURCE still requires the destination to be clear. if (format == gfxASurface::ImageFormatA8) { memset(data, 0, stride * aSize.height); } #endif *aBuffer = MemoryImage((uintptr_t)data, aSize, stride, format); return true; } nsRefPtr<gfxSharedImageSurface> buffer; if (!AllocSharedImageSurface(aSize, aContent, getter_AddRefs(buffer))) { return false; } *aBuffer = buffer->GetShmem(); return true; }
int main(int argc, char *argv[]) { QApplication App(argc, argv); QImage MemoryImage("D:/Vyzkumak/Workspace/Qt/Qt/Debug/Picture.png"); QImage ShowImage("D:/Vyzkumak/Workspace/Qt/Qt/Debug/Picture.png"); QLabel label; label.setPixmap(QPixmap::fromImage(ShowImage)); label.show(); int w = MemoryImage.width(); int h = MemoryImage.height(); start = time (NULL); for (int j=0; j<1; j++){ qreal H, S, V; QColor Color; qreal cont=0; for (int i=0; i<100; i++){ cont=cont+0.01; for ( int x = 0; x < w; x++ ){ for ( int y = 0; y < h; y++ ){ QRgb Rgb = MemoryImage.pixel( x, y); Color.setRgb(Rgb); Color.getHsvF(&H, &S, &V); qreal v=V*cont; Color.setHsvF(H, S, v); Rgb = Color.rgb(); ShowImage.setPixel(x, y, Rgb); } } label.setPixmap(QPixmap::fromImage(ShowImage)); label.repaint(); } } end = time (NULL); int length = (int) (end - start); std::cout << "Length of rendering 100 frames was: " << length << " seconds.\n"; std::cout << "Average fps is: " << 100. / (float)length << " frames per seconds.\n"; App.exec(); }