示例#1
0
文件: lakka.c 项目: Mbcpro/RetroArch
static void *lakka_init(void)
{
   int i, j;
   rgui_handle_t *rgui = (rgui_handle_t*)calloc(1, sizeof(*rgui));
   gl_t *gl = (gl_t*)driver.video_data;
   if (!rgui || !gl)
      return NULL;

   init_font(gl, g_settings.video.font_path, g_settings.video.font_size, gl->win_width, gl->win_height);

   lakka_init_core_info(rgui);
   categories = (menu_category_t*)calloc(num_categories, sizeof(menu_category_t));

   lakka_init_settings();

   for (i = 1; i < num_categories; i++)
   {
      core_info_t *info;
      core_info_list_t *info_list;
      menu_category_t *category = (menu_category_t*)&categories[i];

      info_list = (core_info_list_t*)rgui->core_info;
      info = NULL;

      if (info_list)
         info = (core_info_t*)&info_list->list[i-1];

      strlcpy(category->name, info->display_name, sizeof(category->name));
      strlcpy(category->libretro, info->path, sizeof(category->libretro));
      category->alpha       = 0.5;
      category->zoom        = C_PASSIVE_ZOOM;
      category->active_item = 0;
      category->num_items   = 0;
      category->items       = (menu_item_t*)calloc(category->num_items, sizeof(menu_item_t));

      lakka_init_items(i, category, info, g_settings.content_directory);
   }

   return rgui;
}
示例#2
0
static void *lakka_init(void)
{
   int i, j;
   menu_handle_t *menu = (menu_handle_t*)calloc(1, sizeof(*menu));
   gl_t *gl = (gl_t*)driver.video_data;
   if (!menu || !gl)
      return NULL;

   lakka_responsive();

   lakka_init_core_info(menu);
   categories = (menu_category_t*)calloc(num_categories, sizeof(menu_category_t));

   lakka_init_settings();

   for (i = 1; i < num_categories; i++)
   {
      core_info_t *info;
      core_info_list_t *info_list;
      menu_category_t *category = (menu_category_t*)&categories[i];

      info_list = (core_info_list_t*)menu->core_info;
      info = NULL;

      if (info_list)
         info = (core_info_t*)&info_list->list[i-1];

      strlcpy(category->name, info->display_name, sizeof(category->name));
      strlcpy(category->libretro, info->path, sizeof(category->libretro));
      category->alpha       = 0.5;
      category->zoom        = c_passive_zoom;
      category->active_item = 0;
      category->num_items   = 0;
      category->items       = (menu_item_t*)calloc(category->num_items, sizeof(menu_item_t));

      lakka_init_items(i, category, info, g_settings.content_directory);
   }

   return menu;
}
示例#3
0
static void *lakka_init(void)
{
   menu_handle_t *menu = NULL;
   lakka_handle_t *lakka = NULL;
   const video_driver_t *video_driver = NULL;
   gl_t *gl = (gl_t*)driver_video_resolve(&video_driver);

   if (video_driver != &video_gl || !gl)
   {
      RARCH_ERR("Cannot initialize Lakka menu driver: gl video driver is not active.\n");
      return NULL;
   }

   menu = (menu_handle_t*)calloc(1, sizeof(*menu));

   if (!menu)
      return NULL;


   lakka_init_core_info(menu);

   menu->userdata = (lakka_handle_t*)calloc(1, sizeof(lakka_handle_t));

   if (!menu->userdata)
      return NULL;

   lakka = (lakka_handle_t*)menu->userdata;

   if (!lakka)
      return NULL;

   lakka->num_categories       = g_extern.core_info ? (g_extern.core_info->count + 1) : 1;

   lakka->categories = (menu_category_t*)
      calloc(lakka->num_categories, sizeof(menu_category_t));

   if (!lakka->categories)
   {
      free(menu);
      return NULL;
   }

   lakka->c_active_zoom   = 1.0;
   lakka->c_passive_zoom  = 0.5;
   lakka->i_active_zoom   = 1.0;
   lakka->i_passive_zoom  = 0.5;

   lakka->c_active_alpha  = 1.0;
   lakka->c_passive_alpha = 0.5;
   lakka->i_active_alpha  = 1.0;
   lakka->i_passive_alpha = 0.5;

   lakka->above_subitem_offset = 1.5;
   lakka->above_item_offset    = -1.0;
   lakka->active_item_factor   = 2.75;
   lakka->under_item_offset    = 4.0;

   if (gl->win_width >= 3840)
   {
      lakka->icon_size = 256;
      lakka->hspacing = 400;
      lakka->vspacing = 128;
      lakka->margin_left = 672.0;
      lakka->margin_top = 512;
      lakka->title_margin_left = 20.0;
      lakka->title_margin_top = 50.0;
      lakka->label_margin_left = 192;
      lakka->label_margin_top = 15;
      lakka->setting_margin_left = 1200;
      strcpy(lakka->icon_dir, "256");
   }
   else if (gl->win_width >= 2560)
   {
      lakka->icon_size = 192;
      lakka->hspacing = 300;
      lakka->vspacing = 96;
      lakka->margin_left = 448.0;
      lakka->margin_top = 384;
      lakka->title_margin_left = 15.0;
      lakka->title_margin_top = 40.0;
      lakka->label_margin_left = 144;
      lakka->label_margin_top = 11.0;
      lakka->setting_margin_left = 800;
      strcpy(lakka->icon_dir, "192");
   }
   else if (gl->win_width >= 1920)
   {
      lakka->icon_size = 128;
      lakka->hspacing = 200.0;
      lakka->vspacing = 64.0;
      lakka->margin_left = 336.0;
      lakka->margin_top = 256;
      lakka->title_margin_left = 15.0;
      lakka->title_margin_top = 35.0;
      lakka->label_margin_left = 85;
      lakka->label_margin_top = 8.0;
      lakka->setting_margin_left = 600;
      strcpy(lakka->icon_dir, "128");
   }
   else if (gl->win_width <= 640)
   {
      lakka->icon_size = 64;
      lakka->hspacing = 100.0;
      lakka->vspacing = 32.0;
      lakka->margin_left = 60.0;
      lakka->margin_top = 128.0;
      lakka->title_margin_left = 10.0;
      lakka->title_margin_top = 24.0;
      lakka->label_margin_left = 48;
      lakka->label_margin_top = 6.0;
      lakka->setting_margin_left = 250;
      strcpy(lakka->icon_dir, "64");
   }
   else
   {
      lakka->icon_size = 96;
      lakka->hspacing = 150.0;
      lakka->vspacing = 48.0;
      lakka->margin_left = 224;
      lakka->margin_top = 192;
      lakka->title_margin_left = 15.0;
      lakka->title_margin_top = 30.0;
      lakka->label_margin_left = 64;
      lakka->label_margin_top = 6.0;
      lakka->setting_margin_left = 400;
      strcpy(lakka->icon_dir, "96");
   }

   lakka->depth                = 0;
   lakka->menu_active_category = 0;
   lakka->all_categories_x     = 0;
   lakka->global_alpha         = 0.0f;
   lakka->global_scale         = 2.0f;
   lakka->arrow_alpha          = 0;

   lakka->fbo_depth            = 0;

   return menu;
}