예제 #1
0
void System::systemLog(const char *buf) {
  deviceLog("%s", buf);
  int prevScreenId = _output->getScreenId(true);
  _output->selectBackScreen(CONSOLE_SCREEN);
  _output->print(buf);
  _output->selectBackScreen(prevScreenId);
}
예제 #2
0
bool Graphics::construct(const char *font, const char *boldFont) {
  logEntered();

  int w, h;
  bool result = true;
  SDL_GetWindowSize(_window, &w, &h);

  SDL_Surface *surface = SDL_GetWindowSurface(_window);
  if (surface == NULL) {
    fprintf(stderr, "SDL surface is null\n");
    result = false;
  } else if (surface->format == NULL) {
    fprintf(stderr, "SDL surface format is null\n");
    result = false;
  } else if (surface->format->format != PIXELFORMAT) {
    deviceLog("Unexpected window surface format %d", surface->format->format);
    _surface = surface;
  }

  if (result && loadFonts(font, boldFont)) {
    _screen = new Canvas();
    if (_screen != NULL) {
      if (_surface == NULL) {
        _screen->setSurface(SDL_GetWindowSurface(_window), w, h);
      } else {
        result = _screen->create(w, h);
      }
    }
    if (result) {
      _drawTarget = _screen;
      maSetColor(DEFAULT_BACKGROUND);
    }
  } else {
    result = false;
  }
  return result;
}