func newSDL2xScreen(fullScreen bool) *sdl2xScreen { sdlMode := uint32(sdl.SWSURFACE) if fullScreen { application.Logf("%s", "Activate fullscreen mode") sdlMode = sdl.FULLSCREEN sdl.ShowCursor(sdl.DISABLE) } screenSurface := &sdlSurface{sdl.SetVideoMode(SCREEN_WIDTH*2, SCREEN_HEIGHT*2, 32, sdlMode)} if screenSurface.surface == nil { log.Printf("%s", sdl.GetError()) application.Exit() return nil } borderSurface := &sdlSurface{sdl.CreateRGBSurface(sdl.SWSURFACE, SCREEN_WIDTH*2, SCREEN_HEIGHT*2, 32, 0, 0, 0, 0)} if borderSurface.surface == nil { log.Printf("%s", sdl.GetError()) application.Exit() return nil } displaySurface := &sdlSurface{sdl.CreateRGBSurface(sdl.SWSURFACE, DISPLAY_WIDTH*2, DISPLAY_HEIGHT*2, 32, 0, 0, 0, 0)} if displaySurface.surface == nil { log.Printf("%s", sdl.GetError()) application.Exit() return nil } return &sdl2xScreen{screenSurface, borderSurface, displaySurface} }
// Initialization boilerplate func initialize(config *configuration) *renderer { var bgImage, appSurface *sdl.Surface if sdl.Init(sdl.INIT_VIDEO) != 0 { panic(sdl.GetError()) } if ttf.Init() != 0 { panic(sdl.GetError()) } font := ttf.OpenFont(flag.Arg(0), 12) if font == nil { panic(sdl.GetError()) } sdl.EnableUNICODE(1) if config.fullscreen { flags := sdl.FULLSCREEN appSurface = sdl.SetVideoMode(640, 480, 32, uint32(flags)) sdl.ShowCursor(sdl.DISABLE) } else { appSurface = sdl.SetVideoMode(640, 480, 32, 0) } if config.bgImage != "" { bgImage = sdl.Load(config.bgImage) } sdlrenderer = clingon.NewSDLRenderer(sdl.CreateRGBSurface(sdl.SRCALPHA, int(config.consoleW), int(config.consoleH), 32, 0, 0, 0, 0), font) sdlrenderer.GetSurface().SetAlpha(sdl.SRCALPHA, 0xaa) return &renderer{ config: config, appSurface: appSurface, sdlRenderer: sdlrenderer, bgImageSurface: bgImage, } }