Exemple #1
0
int
main(int argc, char *argv[])
{
	Uint flags = AG_VIDEO_RESIZABLE;
	int c, i, fps = -1;
	char *s;

	if (AG_InitCore("agar-bench", 0) == -1) {
		fprintf(stderr, "%s\n", AG_GetError());
		return (1);
	}

	while ((c = getopt(argc, argv, "?vegt:r:T:")) != -1) {
		extern char *optarg;

		switch (c) {
		case 'v':
			exit(0);
		case 'g':
			flags |= AG_VIDEO_OPENGL;
			break;
		case 't':
			AG_TextParseFontSpec(optarg);
			break;
		case 'T':
			AG_SetString(agConfig, "font-path", optarg);
			break;
		case 'r':
			fps = atoi(optarg);
			break;
		case '?':
		default:
			printf("%s [-vfFgG] [-w width] [-h height] [-r fps]"
			       " [-t font,size,flags] [-T font-path]\n",
			    agProgName);
			exit(0);
		}
	}

	if (AG_InitVideo(640, 480, 32, flags) == -1) {
		fprintf(stderr, "%s\n", AG_GetError());
		return (-1);
	}
	AG_BindGlobalKey(AG_KEY_ESCAPE, AG_KEYMOD_ANY, AG_Quit);
	AG_BindGlobalKey(AG_KEY_F8, AG_KEYMOD_ANY, AG_ViewCapture);
	AG_SetRefreshRate(fps);

	MainWindow();

	AG_EventLoop();
	AG_Destroy();
	return (0);
fail:
	AG_Destroy();
	return (1);
}
Exemple #2
0
bool GuiConfig::Write(const string &option, const string &value)
{
	if(!option.size() || !value.size())
		return true;

	if(AG_SetString(agConfig, option.c_str(), value.c_str()) == NULL)
		return true;

	return false;
}
Exemple #3
0
static void
SetPath(AG_Event *event)
{
	char path[AG_PATHNAME_MAX];
	AG_Textbox *tbox = AG_SELF();
	char *varname = AG_STRING(1);

	AG_TextboxCopyString(tbox, path, sizeof(path));
	AG_SetString(agConfig, varname, path);
	AG_WidgetUnfocus(tbox);
}
Exemple #4
0
static void
SelectPathOK(AG_Event *event)
{
	char *key = AG_STRING(1);
	AG_Textbox *tbox = AG_PTR(2);
	AG_Window *win = AG_PTR(3);
	char *path = AG_STRING(4);
	
	AG_SetString(agConfig, key, path);
	AG_TextboxSetString(tbox, path);
	AG_ObjectDetach(win);
}
Exemple #5
0
static void
Init(void *obj)
{
	AG_DriverSw *dsw = obj;
	AG_DriverSDLGL *sgl = obj;

	sgl->s = NULL;
	sgl->clipRects = NULL;
	sgl->nClipRects = 0;
	memset(sgl->clipStates, 0, sizeof(sgl->clipStates));
	sgl->textureGC = NULL;
	sgl->nTextureGC = 0;
	sgl->listGC = NULL;
	sgl->nListGC = 0;
	
	dsw->rNom = 16;
	dsw->rCur = 0;
	
	AG_SetString(sgl, "width", "auto");
	AG_SetString(sgl, "height", "auto");
	AG_SetString(sgl, "depth", "auto");
}
Exemple #6
0
int
AG_ConfigInit(AG_Config *cfg, Uint flags)
{
	char path[AG_PATHNAME_MAX], *s;
	AG_User *sysUser;

	AG_ObjectInit(cfg, &agConfigClass);
	AG_ObjectSetName(cfg, "config");
	OBJECT(cfg)->save_pfx = NULL;

	AG_SetInt(cfg, "initial-run", 1);
	AG_SetInt(cfg, "no-confirm-quit", 0);

	if (agProgName != NULL &&
	    (sysUser = AG_GetRealUser()) != NULL) {
		AG_SetString(cfg, "home", sysUser->home);
		AG_SetString(cfg, "tmp-path", sysUser->tmp);

		Strlcpy(path, sysUser->home, sizeof(path));
		Strlcat(path, AG_PATHSEP, sizeof(path));
		Strlcat(path, ".", sizeof(path));
		Strlcat(path, agProgName, sizeof(path));
		AG_SetString(cfg, "save-path", path);

		if (strcmp(DATADIR, "NONE") != 0) {
			AG_PrtString(cfg, "load-path", "%s%s%s",
			    path, AG_PATHSEPMULTI, DATADIR);
		} else {
			AG_SetString(cfg, "load-path", path);
		}
		AG_UserFree(sysUser);
	} else {
		AG_SetString(cfg, "home", "");
		s = (strcmp(DATADIR,"NONE") != 0) ? DATADIR : ".";
		AG_SetString(cfg, "load-path", s);
		AG_SetString(cfg, "save-path", s);
		AG_SetString(cfg, "tmp-path", "tmp");
	}

	if ((flags & AG_CREATE_DATADIR) &&
	    AG_CreateDataDir() == -1) {
		return (-1);
	}
	return (0);
}
Exemple #7
0
static void
Init(void *obj)
{
	AG_DriverSw *dsw = obj;

	dsw->w = 0;
	dsw->h = 0;
	dsw->depth = 0;
	dsw->flags = 0;
	dsw->winop = AG_WINOP_NONE;
	dsw->winSelected = NULL;
	dsw->winLastKeydown = NULL;
	dsw->rNom = 20;
	dsw->rCur = 0;
	dsw->windowXOutLimit = 32;
	dsw->windowBotOutLimit = 32;
	dsw->windowIconWidth = 32;
	dsw->windowIconHeight = 32;

	if ((dsw->Lmodal = AG_ListNew()) == NULL)
		AG_FatalError(NULL);
	
	AG_SetString(dsw, "bgColor", "rgb(0,0,0)");
}
Exemple #8
0
void MainLoop(int argc, char *argv[])
{
   int c;
   char *drivers = NULL;
   char *optArg;
   char strbuf[2048];
   char homedir[2048];
   const SDL_VideoInfo *inf;
   BOOL flag;
   SDL_Surface *s;

//   mtrace();
   if(AG_GetVariable(agConfig, "font.size", NULL) == NULL) { 
	AG_SetInt(agConfig, "font.size", UI_PT);
   }
   while ((c = AG_Getopt(argc, argv, "?fWd:w:h:T:t:c:T:F:S:o:O:l:s:i:", &optArg, NULL))
          != -1) {
              switch (c) {
              case 'd':
                      drivers = optArg;
                      break;
              case 'f':
                      /* Force full screen */
                      AG_SetBool(agConfig, "view.full-screen", 1);
                      break;
              case 'W':
                      /* Force Window */
                      AG_SetBool(agConfig, "view.full-screen", 0);
                      break;
              case 'T':
                      /* Set an alternate font directory */
                      AG_SetString(agConfig, "font-path", optArg);
                      break;
              case 'F':
                      /* Set an alternate font face */
                      AG_SetString(agConfig, "font.face", optArg);
                      break;
              case 'S':
                  /* Set an alternate font face */
                  AG_SetInt(agConfig, "font.size", atoi(optArg));
                  break;
              case 'o':
                  /* Set an alternate font face */
                  AG_SetString(agConfig, "osdfont.face", optArg);
                  break;
              case 'O':
                  /* Set an alternate font face */
                  AG_SetInt(agConfig, "osdfont.size", atoi(optArg));
                  break;
              case 'l':
                  /* Set an alternate font face */
                  AG_SetString(agConfig, "load-path", optArg);
                  break;
              case 's':
                  /* Set an alternate font face */
                  AG_SetString(agConfig, "save-path", optArg);
                  break;
              case 'i':
                  /* Set an alternate font face */
                  AG_SetString(agConfig, "save-path", optArg);
                  AG_SetString(agConfig, "load-path", optArg);
                  break;
              case 't':
                  /* Change the default font */
                  AG_TextParseFontSpec(optArg);
                  break;
          case '?':
          default:
                  printf("%s [-v] [-f|-W] [-d driver] [-r fps] [-t fontspec] "
                         "[-w width] [-h height] "
                	 "[-F font.face] [-S font.size]"
			 "[-o osd-font.face] [-O osd-font.size]"
			 "[-s SavePath] [-l LoadPath] "
                         "[-T font-path]\n\n"
			 "Usage:\n"
			 "-f : FullScreen\n-W:Window Mode\n",
                         agProgName);
                  exit(0);
          }
    }
   
    if(SDL_getenv("HOME") != NULL) {
	strcpy(homedir, SDL_getenv("HOME"));
    } else {
        strcpy(homedir, ".");
    }
    XM7_DebugLog(XM7_LOG_DEBUG, "HOME = %s", homedir);

#ifdef _WINDOWS
	AG_PrtString(agConfig, "font-path", "%s:%s/xm7:%s:.",
		homedir, homedir, FONTPATH);
#else
    flag = FALSE;
    if(AG_GetString(agConfig, "font-path", strbuf, 2047) != NULL) {
       if((strlen(strbuf) <= 0) || (strncmp(strbuf, "_agFontVera", 11) == 0)){
	  flag = TRUE;
	 }
    } else {
       flag = TRUE;
    }
    if(flag) AG_PrtString(agConfig, "font-path", "%s/.fonts:%s:%s/.xm7:%s:.", 
		homedir, homedir, homedir, FONTPATH);
    flag = FALSE;
   
    XM7_DebugLog(XM7_LOG_DEBUG, "font-path = %s", strbuf);
#endif /* _WINDOWS */
    flag = FALSE;
    if(AG_GetString(agConfig, "font.face", strbuf, 511) != NULL) {
       if((strlen(strbuf) <= 0) || (strncmp(strbuf, "_agFontVera", 11) == 0)){
	  flag = TRUE;
       }
    } else {
	flag = TRUE;
    }
    if(flag) AG_SetString(agConfig, "font.face", UI_FONT);
    flag = FALSE;
    XM7_DebugLog(XM7_LOG_DEBUG, "font.face = %s", strbuf);
   
    stopreq_flag = FALSE;
    run_flag = TRUE;
    // Debug
#ifdef _XM7_FB_DEBUG // Force FB.
drivers = "sdlfb:width=1280:height=880:depth=32";
#endif
	/*
	 * Agar のメインループに入る
	 */

    if(drivers == NULL)  {
#ifdef USE_OPENGL
       if(AG_InitGraphics(NULL) == -1){
                fprintf(stderr, "%s\n", AG_GetError());
                return;
        }
#else
       if(AG_InitGraphics("cocoa,sdlfb") == -1){
                fprintf(stderr, "%s\n", AG_GetError());
                return;
        }
#endif
    } else {
        if (AG_InitGraphics(drivers) == -1) {
                fprintf(stderr, "%s\n", AG_GetError());
                return;
        }
    }
    OnCreate((AG_Widget *)NULL);
//    AG_AtExitFunc(OnDestroy);
    XM7_DebugLog(XM7_LOG_DEBUG, "Widget creation OK.");
   
   XM7_DebugLog(XM7_LOG_INFO, "Emulate version:%d", fm7_ver);
   SDL_InitSubSystem(SDL_INIT_AUDIO | SDL_INIT_JOYSTICK);
   XM7_DebugLog(XM7_LOG_DEBUG, "Audio and JOYSTICK subsystem was initialised.");

   InitInstance();
   XM7_DebugLog(XM7_LOG_DEBUG, "InitInstance() OK.");
   if(agDriverSw && AG_UsingSDL(NULL)) {
      SDL_Init(SDL_INIT_VIDEO);
      XM7_DebugLog(XM7_LOG_INFO, "Start Single WM with SDL.");
      switch(fm7_ver) {
       case 1: // FM7/77
	 if(!(LoadGlobalIconPng(NULL, "tamori.png"))) {
	    LoadGlobalIconPng(NULL, "xm7.png");
	 }
	 break;
       case 2: // FM77AV
	 if(!(LoadGlobalIconPng(NULL, "fujitsu.png"))) {
	    LoadGlobalIconPng(NULL, "xm7.png");
	 }
	 break;
       case 3: // FM77AV20/40/EX/SX
	 if(!(LoadGlobalIconPng(NULL, "fujitsu2.png"))) {
	    LoadGlobalIconPng(NULL, "xm7.png");
	 }
	 break;
       default:
	 LoadGlobalIconPng(NULL, "xm7.png");
	 break;
      }
   } else { // WM function is managed by SDL, load and set icon for WM. 
      SDL_Init(SDL_INIT_VIDEO);
      XM7_DebugLog(XM7_LOG_INFO, "Start multi window mode.");
   }
       
   stopreq_flag = FALSE;
   run_flag = TRUE;
   AG_DrawInitsub();

   inf = SDL_GetVideoInfo();
   if(inf != NULL) {
      RootVideoWidth = inf->current_w;
      RootVideoHeight = inf->current_h;
   } else {
      RootVideoWidth = 640;
      RootVideoHeight = 400;
   }

   newResize = FALSE;
   nDrawTick1D = XM7_timeGetTime();
   nDrawTick1E = nDrawTick1D;

   ResizeWindow_Agar2(nDrawWidth, nDrawHeight);
   XM7_DebugLog(XM7_LOG_DEBUG, "Screen is %d x %d.", nDrawWidth, nDrawHeight);
    switch(nErrorCode) 
     {
      case 0:
	break;
      case 1:
	ErrorPopup(gettext("Error init VM.\nPlease check ROMS and system-memory.\n"));
	break;
      case 2:
	ErrorPopup(gettext("Error init Emulator.\nPlease check window system, display and more.\n"));
	break;
      default:
	ErrorPopup(gettext("Unknown error on setup.\nPlease email to author."));
	break;
     }
#if 0
   mtrace();
#endif
   if(DrawArea != NULL) {
      AG_RedrawOnTick(DrawArea, 1000 / nDrawFPS);
      XM7_DebugLog(XM7_LOG_INFO, "Direct draw mode.");
   } else if(GLDrawArea != NULL) {
      AG_RedrawOnTick(GLDrawArea, 1000 / nDrawFPS);
      XM7_DebugLog(XM7_LOG_INFO, "OpenGL mode.");
   }
   bEventRunFlag == TRUE;
   AGDrawTaskEvent(TRUE);
//   muntrace();
   XM7_DebugLog(XM7_LOG_INFO, "All End.");
}
Exemple #9
0
static void
Init(void *obj)
{
	AG_DbMySQL *db = obj;

	AG_SetString(db, "host",		NULL);
	AG_SetInt(db,    "port",		0);
	AG_SetString(db, "database",		NULL);
	AG_SetString(db, "user",		NULL);
	AG_SetString(db, "password",		NULL);
	AG_SetString(db, "unix-socket",		NULL);
	AG_SetInt(db,    "compress",		0);
	AG_SetInt(db,    "local-files",		-1);
	AG_SetInt(db,    "ssl",			-1);
	AG_SetInt(db,    "ssl-verify-cert",	-1);
	AG_SetInt(db,    "secure-auth",		-1);
	AG_SetString(db, "cnf-file",		NULL);
	AG_SetString(db, "cnf-group",		NULL);
	AG_SetString(db, "protocol",		"default");
	AG_SetUint(db,   "read-timeout",	0);
	AG_SetInt(db,    "write-timeout",	-1);
	AG_SetInt(db,    "reconnect",		1);
	AG_SetString(db, "charset",		NULL);
	AG_SetString(db, "charset-dir",		NULL);
	
	AG_SetString(db, "init-cmd", NULL);
	AG_SetString(db, "get-cmd", "SELECT my_field FROM my_table "
                                    "WHERE my_field = '%s'");
	AG_SetString(db, "put-cmd", "INSERT INTO my_table VALUES('%s')");
}