示例#1
0
func (src *Surface) UpperBlit(srcrect *Rect, dst *Surface, dstrect *Rect) int {
	_src := (*C.SDL_Surface)(unsafe.Pointer(src))
	_srcrect := (*C.SDL_Rect)(unsafe.Pointer(srcrect))
	_dst := (*C.SDL_Surface)(unsafe.Pointer(dst))
	_dstrect := (*C.SDL_Rect)(unsafe.Pointer(dstrect))
	return (int)(C.SDL_UpperBlit(_src, _srcrect, _dst, _dstrect))
}
示例#2
0
文件: sdl.go 项目: kearsley/Go-SDL
func (dst *Surface) Blit(dstrect *Rect, src *Surface, srcrect *Rect) int {
	GlobalMutex.Lock()
	global := true
	if (src != currentVideoSurface) && (dst != currentVideoSurface) {
		GlobalMutex.Unlock()
		global = false
	}

	// At this point: GlobalMutex is locked only if at least one of 'src' or 'dst'
	//                was identical to 'currentVideoSurface'

	var ret C.int
	{
		src.mutex.RLock()
		dst.mutex.Lock()

		ret = C.SDL_UpperBlit(
			src.cSurface,
			(*C.SDL_Rect)(cast(srcrect)),
			dst.cSurface,
			(*C.SDL_Rect)(cast(dstrect)))

		dst.mutex.Unlock()
		src.mutex.RUnlock()
	}

	if global {
		GlobalMutex.Unlock()
	}

	return int(ret)
}
示例#3
0
文件: surface.go 项目: willemvds/sdl
func (s *Surface) UpperBlit(sr *Rect, dst *Surface, dr *Rect) error {
	if C.SDL_UpperBlit(s.c(), sr.c(), dst.c(), dr.c()) != 0 {
		return getError()
	}

	return nil
}
示例#4
0
文件: sdl.go 项目: gnanderson/Go-SDL
func (dst *Surface) Blit(dstrect *Rect, src *Surface, srcrect *Rect) int {
	var ret = C.SDL_UpperBlit(
		(*C.SDL_Surface)(cast(src)),
		(*C.SDL_Rect)(cast(srcrect)),
		(*C.SDL_Surface)(cast(dst)),
		(*C.SDL_Rect)(cast(dstrect)))

	return int(ret)
}
示例#5
0
func (src *Surface) UpperBlit(srcRect *Rect, dst *Surface, dstRect *Rect) int {
	return int(C.SDL_UpperBlit(src.cptr(), srcRect.cptr(), dst.cptr(), dstRect.cptr()))
}
示例#6
0
文件: surface.go 项目: emlai/go-sdl2
// Surface (https://wiki.libsdl.org/SDL_UpperBlit)
func (src *Surface) UpperBlit(srcRect *Rect, dst *Surface, dstRect *Rect) error {
	if C.SDL_UpperBlit(src.cptr(), srcRect.cptr(), dst.cptr(), dstRect.cptr()) != 0 {
		return GetError()
	}
	return nil
}
示例#7
0
文件: video.go 项目: beoran/fungo
// You should call SDL_BlitSurface() unless you know exactly how SDL
// blitting works internally and how to use the other blit functions.
func blitSurface(src, dst *C.SDL_Surface, srcrect, dstrect *C.SDL_Rect) int {
	return int(C.SDL_UpperBlit(src, srcrect, dst, dstrect))
}