作者:griff
项目:starfis
func toSDL_Rect(b util.Bounds) C.SDL_Rect {
var r C.SDL_Rect
r.x = C.Sint16(b.X)
r.y = C.Sint16(b.Y)
r.w = C.Uint16(b.Width)
r.h = C.Uint16(b.Height)
return r
}
作者:griff
项目:starfis
func sdl_Rect(x, y, width, height int) C.SDL_Rect {
var r C.SDL_Rect
r.x = C.Sint16(x)
r.y = C.Sint16(y)
r.w = C.Uint16(width)
r.h = C.Uint16(height)
return r
}
作者:neagi
项目:Go-SD
func OpenAudio(desired, obtained_orNil *AudioSpec) int {
if alreadyOpened {
panic("more than 1 audio stream currently not supported")
}
// copy handle to user-defined callback function, if defined
// it is perfectly supported to not specify the callback function
// in that case you will use default SendAudio semantics
// note that if you specify a callback and use SendAudio, a hangup will instead happen
// when calling SendAudio
if nil != desired.UserDefinedCallback {
userDefinedCallback = desired.UserDefinedCallback
} else {
// default playback (16-bit signed)
userDefinedCallback = DownstreamPlaybackS16
PlayLoop = make(chan AudioEvent)
}
var C_desired, C_obtained *C.SDL_AudioSpec
C_desired = new(C.SDL_AudioSpec)
C_desired.freq = C.int(desired.Freq)
C_desired.format = C.Uint16(desired.Format)
C_desired.channels = C.Uint8(desired.Channels)
C_desired.samples = C.Uint16(desired.Samples)
// there is an unique C callback acting as proxy to the different Go callbacks
// see streamContext()
C_desired.callback = C.callback_getCallback()
if obtained_orNil != nil {
if desired != obtained_orNil {
C_obtained = new(C.SDL_AudioSpec)
} else {
C_obtained = C_desired
}
}
status := C.SDL_OpenAudio(C_desired, C_obtained)
if status == 0 {
alreadyOpened = true
}
if obtained_orNil != nil {
obtained := obtained_orNil
obtained.Freq = int(C_obtained.freq)
obtained.Format = uint16(C_obtained.format)
obtained.Channels = uint8(C_obtained.channels)
obtained.Samples = uint16(C_obtained.samples)
obtained.Out_Silence = uint8(C_obtained.silence)
obtained.Out_Size = uint32(C_obtained.size)
}
return int(status)
}
作者:rsaarel
项目:teratoge
func convertRect(rect image.Rectangle) C.SDL_Rect {
rect = rect.Canon()
return C.SDL_Rect{
C.Sint16(rect.Min.X),
C.Sint16(rect.Min.Y),
C.Uint16(rect.Max.X - rect.Min.X),
C.Uint16(rect.Max.Y - rect.Min.Y),
}
}
作者:beora
项目:fung
// Open the mixer with a certain audio format
func OpenMixer(frequency int, format uint16, channels int, chunksize int) (bool) {
res := (int(C.Mix_OpenAudio(C.int(frequency),
C.Uint16(format), C.int( channels), C.int(chunksize))))
ok := (res == 0)
MixerOpened = ok
return ok
}
作者:qianbo042
项目:media-muxe
func (d *Display) routine() {
rect := C.SDL_Rect{x: 0, y: 0, w: C.Uint16(d.width), h: C.Uint16(d.height)}
for d.rendering {
frame := <-d.frame
C.SDL_LockYUVOverlay(d.overlay)
pixels := (*[1 << 30]*C.Uint8)(unsafe.Pointer(d.overlay.pixels))
pitches := (*[1 << 30]C.Uint8)(unsafe.Pointer(d.overlay.pitches))
pixels[0] = (*C.Uint8)(frame.data[0])
pixels[1] = (*C.Uint8)(frame.data[1])
pixels[2] = (*C.Uint8)(frame.data[2])
pitches[0] = (C.Uint8)(frame.linesize[0])
pitches[1] = (C.Uint8)(frame.linesize[1])
pitches[2] = (C.Uint8)(frame.linesize[2])
C.SDL_UnlockYUVOverlay(d.overlay)
C.SDL_DisplayYUVOverlay(d.overlay, &rect)
}
}
作者:jgasta
项目:Go-SD
// Returns the metrics (dimensions) of a glyph.
//
// Return values are:
// minx, maxx, miny, maxy, advance, err
//
// The last return value (err) is 0 for success, -1 for any error (for example
// if the glyph is not available in this font).
//
// For more information on glyph metrics, visit
// http://freetype.sourceforge.net/freetype2/docs/tutorial/step2.html
func (f *Font) GlyphMetrics(ch uint16) (int, int, int, int, int, int) {
minx := C.int(0)
maxx := C.int(0)
miny := C.int(0)
maxy := C.int(0)
advance := C.int(0)
err := C.TTF_GlyphMetrics(f.cfont, C.Uint16(ch), &minx, &maxx, &miny, &maxy, &advance)
return int(minx), int(maxx), int(miny), int(maxy), int(advance), int(err)
}
作者:beora
项目:fung
// Get the metrics (dimensions) of a glyph
// To understand what these metrics mean, here is a useful link:
// http://freetype.sourceforge.net/freetype2/docs/tutorial/step2.html
// retuns minx, maxx, miny, maxy, advance
func TTFGlyphMetrics(font *C.TTF_Font, ch uint16) (int, int, int, int, int) {
var minx, maxx, miny, maxy, advance int
pminx := cintptr(&minx)
pmaxx := cintptr(&maxx)
pminy := cintptr(&miny)
pmaxy := cintptr(&maxy)
padv := cintptr(&advance)
C.TTF_GlyphMetrics(font, C.Uint16(ch), pminx, pmaxx, pminy, pmaxy, padv)
return minx, maxx, miny, maxy, advance
}
作者:neagi
项目:Go-SD
func cAudioInfo(info *AudioInfo) *C.Sound_AudioInfo {
if info == nil {
return nil
}
cinfo := new(C.Sound_AudioInfo)
cinfo.format = C.Uint16(info.Format)
cinfo.channels = C.Uint8(info.Channels)
cinfo.rate = C.Uint32(info.Rate)
return cinfo
}
作者:kri
项目:Go-SDL
// Returns the metrics (dimensions) of a glyph.
//
// Return values are:
// minx, maxx, miny, maxy, advance, err
//
// For more information on glyph metrics, visit
// http://freetype.sourceforge.net/freetype2/docs/tutorial/step2.html
func (f *Font) GlyphMetrics(ch uint16) (int, int, int, int, int, error) {
minx := C.int(0)
maxx := C.int(0)
miny := C.int(0)
maxy := C.int(0)
advance := C.int(0)
err := C.TTF_GlyphMetrics(f.cfont, C.Uint16(ch), &minx, &maxx, &miny, &maxy, &advance)
if int(err) != 0 {
return int(minx), int(maxx), int(miny), int(maxy), int(advance), sdl.NewSDLError()
}
return int(minx), int(maxx), int(miny), int(maxy), int(advance), nil
}
作者:scottfer
项目:Go-SD
func OpenAudio(desired, obtained_orNil *AudioSpec) int {
var C_desired, C_obtained *C.SDL_AudioSpec
C_desired = new(C.SDL_AudioSpec)
C_desired.freq = C.int(desired.Freq)
C_desired.format = C.Uint16(desired.Format)
C_desired.channels = C.Uint8(desired.Channels)
C_desired.samples = C.Uint16(desired.Samples)
C_desired.callback = C.callback_getCallback()
if obtained_orNil != nil {
if desired != obtained_orNil {
C_obtained = new(C.SDL_AudioSpec)
} else {
C_obtained = C_desired
}
}
status := C.SDL_OpenAudio(C_desired, C_obtained)
if status == 0 {
mutex.Lock()
opened++
mutex.Unlock()
}
if obtained_orNil != nil {
obtained := obtained_orNil
obtained.Freq = int(C_obtained.freq)
obtained.Format = uint16(C_obtained.format)
obtained.Channels = uint8(C_obtained.channels)
obtained.Samples = uint16(C_obtained.samples)
obtained.Out_Silence = uint8(C_obtained.silence)
obtained.Out_Size = uint32(C_obtained.size)
}
return int(status)
}
作者:willemvd
项目:sd
func (f *Font) GlyphMetrics(ch uint16) (int, int, int, int, int, error) {
minx := C.int(0)
maxx := C.int(0)
miny := C.int(0)
maxy := C.int(0)
advance := C.int(0)
res := C.TTF_GlyphMetrics(f.c, C.Uint16(ch), &minx, &maxx, &miny, &maxy, &advance)
var err error
if res != 0 {
err = getError()
}
return int(minx), int(maxx), int(miny), int(maxy), int(advance), err
}
作者:Zwobo
项目:Go-SD
// Returns the metrics (dimensions) of a glyph.
//
// Return values are:
// minx, maxx, miny, maxy, advance, err
//
// The last return value (err) is 0 for success, -1 for any error (for example
// if the glyph is not available in this font).
//
// For more information on glyph metrics, visit
// http://freetype.sourceforge.net/freetype2/docs/tutorial/step2.html
func (f *Font) GlyphMetrics(ch uint16) (int, int, int, int, int, int) {
sdl.GlobalMutex.Lock() // Because the underlying C code is fairly complex
f.mutex.Lock() // Use a write lock, because 'C.TTF_GlyphMetrics' may update font's internal caches
minx := C.int(0)
maxx := C.int(0)
miny := C.int(0)
maxy := C.int(0)
advance := C.int(0)
err := C.TTF_GlyphMetrics(f.cfont, C.Uint16(ch), &minx, &maxx, &miny, &maxy, &advance)
sdl.GlobalMutex.Unlock()
f.mutex.Unlock()
return int(minx), int(maxx), int(miny), int(maxy), int(advance), int(err)
}
作者:jbondeso
项目:Go-SDL
func OpenAudio(desired, obtained *AudioSpec, callback func(*byte, int)) bool {
var cdesired C.SDL_AudioSpec
var cobtained C.SDL_AudioSpec
cdesired.freq = C.int(desired.Freq)
cdesired.format = C.SDL_AudioFormat(int(desired.Format))
cdesired.channels = C.Uint8(desired.Channels)
cdesired.samples = C.Uint16(desired.Samples)
cdesired.size = C.Uint32(0)
cdesired.callback = C.go_sdl2_get_callback()
cdesired.userdata = unsafe.Pointer(&callback)
ret := C.SDL_OpenAudio(&cdesired, &cobtained)
if obtained != nil {
obtained.Freq = int32(cobtained.freq)
obtained.Format = AudioFormat(int(cobtained.format))
obtained.Channels = uint8(cobtained.channels)
obtained.Silence = uint8(cobtained.silence)
obtained.Samples = uint16(cobtained.samples)
obtained.Size = uint32(cobtained.size)
}
return int(ret) == 0
}
作者:swanteschol
项目:codin
func Init(initSDL, stereo bool, rate, nchannels, nbuffers int) {
if initSDL {
GSDLWasInitHere = true
if C.SDL_Init(C.SDL_INIT_AUDIO) != 0 {
panic(fmt.Sprintf("Unable to initialize SDL: %v\n", util.GetSdlError()))
}
}
//initFlags := C.MIX_INIT_FLAC | C.MIX_INIT_MP3 | C.MIX_INIT_OGG
//C.Mix_Init(initFlags)
audio_format := C.AUDIO_S16SYS
nstereo := 1
if stereo {
nstereo = 2
}
if C.Mix_OpenAudio(C.int(rate), C.Uint16(audio_format),
C.int(nstereo), C.int(nbuffers)) != 0 {
panic(fmt.Sprintf("Unable to initialize audio: %v\n", util.GetMixError()))
}
channel.Allocate(nchannels)
}
作者:jbondeso
项目:Go-SDL
func OpenAudioDevice(device string, iscapture bool, desired, obtained *AudioSpec, allowed_changes bool, callback func(*byte, int)) bool {
var cdesired C.SDL_AudioSpec
var cobtained C.SDL_AudioSpec
cdevice := C.CString(device)
defer C.free(unsafe.Pointer(cdevice))
cdesired.freq = C.int(desired.Freq)
cdesired.format = C.SDL_AudioFormat(int(desired.Format))
cdesired.channels = C.Uint8(desired.Channels)
cdesired.samples = C.Uint16(desired.Samples)
cdesired.size = C.Uint32(0)
cdesired.callback = C.go_sdl2_get_callback()
cdesired.userdata = unsafe.Pointer(&callback)
ret := C.SDL_OpenAudioDevice(cdevice, C.int(bool2int(iscapture)), &cdesired, &cobtained, C.int(bool2int(allowed_changes)))
if obtained != nil {
obtained.Freq = int32(cobtained.freq)
obtained.Format = AudioFormat(int(cobtained.format))
obtained.Channels = uint8(cobtained.channels)
obtained.Silence = uint8(cobtained.silence)
obtained.Samples = uint16(cobtained.samples)
obtained.Size = uint32(cobtained.size)
}
return int(ret) == 0
}
作者:henkma
项目:Go2
func (f *Font) GetMetrics(_ch uint16) (int, int, int, int, int) {
var minx, maxx, miny, maxy, advance C.int
C.TTF_GlyphMetrics(f.Get(), C.Uint16(_ch), (*C.int)(cast(&minx)), (*C.int)(cast(&maxx)), (*C.int)(cast(&miny)), (*C.int)(cast(&maxy)), (*C.int)(cast(&advance)))
return int(minx), int(maxx), int(miny), int(maxy), int(advance)
}
作者:paul-lalond
项目:Go-SD
// Initializes SDL_mixer. Return 0 if successful and -1 if there were
// initialization errors.
func OpenAudio(frequency int, format uint16, channels, chunksize int) int {
return int(C.Mix_OpenAudio(C.int(frequency), C.Uint16(format),
C.int(channels), C.int(chunksize)))
}
作者:immersiv
项目:Go-SD
// Warp mousej
func WarpMouse(x, y int) {
C.SDL_WarpMouse(C.Uint16(x), C.Uint16(y))
}
作者:beora
项目:fung
// Create a 32-bit ARGB surface and render the given glyph at high quality,
// using alpha blending to dither the font with the given color.
// The glyph is rendered without any padding or centering in the X
// direction, and aligned normally in the Y direction.
// This function returns the new surface, or NULL if there was an error.
func TTFRenderGlyphBlended(font *C.TTF_Font, ch uint16,
color C.SDL_Color) *C.SDL_Surface {
return C.TTF_RenderGlyph_Blended(font, C.Uint16(ch), color)
}