/** * @inheritDoc. */ void BrowserWindow::onPaint(Berkelium::Window *win, const unsigned char *sourceBuffer, const Berkelium::Rect &sourceBufferRect, size_t numCopyRects, const Berkelium::Rect *copyRects, int dx, int dy, const Berkelium::Rect &scrollRect) { const Ogre::HardwarePixelBufferSharedPtr textureBuffer = m_texture->getBuffer(); const Ogre::PixelBox srcBox = Ogre::PixelBox(rectToBox(sourceBufferRect), Ogre::PF_BYTE_BGRA, const_cast<unsigned char*>(sourceBuffer)); for(int i = 0; i < numCopyRects; i++) { const Ogre::Box destBox = rectToBox(copyRects[i]); textureBuffer->blitFromMemory(srcBox.getSubVolume(destBox), destBox); } }
int XIntersectRegion(Region reg1, Region reg2, Region newReg) { GrIntersectRegion(newReg->rid, reg1->rid, reg2->rid); #if CLIENTREGIONS GR_RECT extents; GrGetRegionBox(newReg->rid, &extents); rectToBox(&extents, &newReg->extents); #endif return 1; }
int XXorRegion(Region sra, Region srb, Region dr) { GrXorRegion(dr->rid, sra->rid, srb->rid); #if CLIENTREGIONS GR_RECT extents; GrGetRegionBox(dr->rid, &extents); rectToBox(&extents, &dr->extents); #endif return 0; }
int XSubtractRegion(Region regM, Region regS, Region regD) { GrSubtractRegion(regD->rid, regM->rid, regS->rid); #if CLIENTREGIONS GR_RECT extents; GrGetRegionBox(regD->rid, &extents); rectToBox(&extents, ®D->extents); #endif return 1; }
int XUnionRectWithRegion(XRectangle *rect, Region source, Region dest) { GR_RECT gr_rect; if (!rect->width || !rect->height) return 0; if (source != dest) DPRINTF("XUnionRectWithRegion - Source and dest different FIXME\n"); /* copy rect since dimensions differ*/ gr_rect.x = rect->x; gr_rect.y = rect->y; gr_rect.width = rect->width; gr_rect.height = rect->height; if (source != dest) { /*Region r = XCreateRegion(); if (!r) return 0; //GrUnionRectWithRegion(r->rid, &gr_rect); GrSetRectRegionIndirect(r->rid, &gr_rect); XUnionRegion(r, source, dest); XDestroyRegion(r);*/ DPRINTF("XUnionRectWithRegion - Source and dest different FIXME\n"); GrUnionRectWithRegion(dest->rid, &gr_rect); } else { GrUnionRectWithRegion(dest->rid, &gr_rect); } #if CLIENTREGIONS GR_RECT extents; /* Get the new extents area */ GrGetRegionBox(dest->rid, &extents); rectToBox(&extents, &dest->extents); #endif return 1; }