Beispiel #1
0
// this서피스메모리의 dstx, dsty 지점을 좌상귀로 하는 지점에 pSrc의 srcw * srch 크기의 메모리를 카피한다.
void XSurfaceMem::CopyRect( int dstx, int dsty, DWORD *pSrc, int srcw, int srch )
{
	DWORD *pMem;
	int wPage, hPage;
	pMem = GetSrcImg( &wPage, &hPage );
	XBREAK( pMem == NULL );
	// 에러검출
	XBREAK( pSrc == NULL );
	XBREAK( srcw <= 0 );
	XBREAK( srch <= 0 );
	XBREAK( srcw > wPage );
	XBREAK( srch > hPage );
	XBREAK( dstx < 0 );
	XBREAK( dsty < 0 );
	XBREAK( dstx + srcw > wPage );
	XBREAK( dsty + srch > hPage );

	//
	DWORD *p = pMem + dsty * wPage + dstx;		// dst위치의 좌상귀 어드레스
	int xSkip = wPage - srcw;
	for( int i = 0; i < srch; ++i )
	{
		for( int j = 0; j < srcw; ++j )
		{
			*p++ = *pSrc++;
		}
		p += xSkip;
	}
}
Beispiel #2
0
void*	XSurfaceOpenGL::Lock( int *pMemW, BOOL bReadOnly)
{
    *pMemW = GetAlignedWidth();
    int w, h;
    return GetSrcImg( &w, &h );
}