/**
 * @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);
    }
}
Esempio n. 2
0
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;
}
Esempio n. 3
0
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;
}
Esempio n. 4
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, &regD->extents);
#endif
	return 1;
}
Esempio n. 5
0
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;
}