Пример #1
0
static void lakka_frame(void)
{
   struct font_output_list *msg;
   gl_t *gl = (gl_t*)driver.video_data;
   menu_category_t *active_category = (menu_category_t*)&categories[menu_active_category];
   menu_item_t *active_item;

   if (!driver.menu || !gl || !active_category)
      return;

   active_item = (menu_item_t*)&active_category->items[active_category->active_item];

   update_tweens(0.002);

   glViewport(0, 0, gl->win_width, gl->win_height);

   lakka_draw_background();

   lakka_draw_categories();

   if (depth == 0 && active_category)
      lakka_draw_text(active_category->name, title_margin_left, title_margin_top, 1, 1.0);
   else if (active_item)
      lakka_draw_text(active_item->name, title_margin_left, title_margin_top, 1, 1.0);

   lakka_draw_icon(textures[TEXTURE_ARROW].id,
        margin_left + hspacing*(menu_active_category+1) + all_categories_x + icon_size/2.0,
        margin_top + vspacing*active_item_factor + icon_size/2.0, arrow_alpha, 0, i_active_zoom);

   gl_set_viewport(gl, gl->win_width, gl->win_height, false, false);
}
Пример #2
0
static void lakka_frame(void)
{
   menu_item_t *active_item = NULL;
   menu_category_t *active_category = NULL;
   lakka_handle_t *lakka = NULL;
   gl_t *gl = (gl_t*)driver_video_resolve(NULL);

   if (!gl)
      return;

   if (!driver.menu)
      return;

   lakka = (lakka_handle_t*)driver.menu->userdata;

   if (!lakka)
      return;

   active_category = (menu_category_t*)
      &lakka->categories[lakka->menu_active_category];

   if (!active_category)
      return;

   active_item = (menu_item_t*)
      &active_category->items[active_category->active_item];

   update_tweens(0.002);

#if defined(HAVE_FBO) && defined(LAKKA_EFFECTS)
   glBindFramebuffer(GL_FRAMEBUFFER, fbo);
   glClearColor(0.0, 0.0, 0.0, 0.0);
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
   lakka_draw_categories(lakka);
   lakka_draw_arrow(lakka);
   glBindFramebuffer(GL_FRAMEBUFFER, 0);
   glViewport(0, 0, gl->win_width, gl->win_height);
   lakka_draw_background();
   lakka_draw_fbo();
#else
   glViewport(0, 0, gl->win_width, gl->win_height);
   lakka_draw_background();
   lakka_draw_categories(lakka);
   lakka_draw_arrow(lakka);
#endif

   if (lakka->depth == 0)
      lakka_draw_text(lakka, active_category->name,
            lakka->title_margin_left, lakka->title_margin_top, 1, 1.0);
   else if (active_item)
      lakka_draw_text(lakka, active_item->name,
            lakka->title_margin_left, lakka->title_margin_top, 1, 1.0);

   gl_set_viewport(gl, gl->win_width, gl->win_height, false, false);

   glDisable(GL_BLEND);
}
Пример #3
0
static void lakka_draw_subitems(int i, int j)
{
   int k;
   menu_category_t *category = (menu_category_t*)&categories[i];
   menu_item_t *item = (menu_item_t*)&category->items[j];
   menu_category_t *active_category = (menu_category_t*)&categories[menu_active_category];
   menu_item_t *active_item = (menu_item_t*)&active_category->items[active_category->active_item];

   for(k = 0; k < item->num_subitems; k++)
   {
      menu_subitem_t *subitem = (menu_subitem_t*)&item->subitems[k];

      if (!subitem)
         continue;

      if (k == 0 && g_extern.main_is_init
            && !g_extern.libretro_dummy
            && strcmp(g_extern.fullpath, &active_item->rom) == 0)
      {
         lakka_draw_icon(textures[TEXTURE_RESUME].id, 
            156 + HSPACING*(i+2) + all_categories_x - dim/2.0, 
            300 + subitem->y + dim/2.0, 
            subitem->alpha, 
            0, 
            subitem->zoom);
         lakka_draw_text(&resume_label, 
            156 + HSPACING*(i+2) + all_categories_x + dim/2.0, 
            300 + subitem->y + 15, 
            1, 
            subitem->alpha);
      }
      else if(k == 0 ||
            menu_active_category == 0 ||
            (g_extern.main_is_init && 
            !g_extern.libretro_dummy &&
            strcmp(g_extern.fullpath, &active_item->rom) == 0))
      {
         lakka_draw_icon(subitem->icon, 
               156 + HSPACING*(i+2) + all_categories_x - dim/2.0, 
               300 + subitem->y + dim/2.0, 
               subitem->alpha, 
               0, 
               subitem->zoom);
         lakka_draw_text(&subitem->out, 
               156 + HSPACING * (i+2) + all_categories_x + dim/2.0, 
               300 + subitem->y + 15, 
               1, 
               subitem->alpha);
      }

   }
}
Пример #4
0
static void lakka_draw_subitems(int i, int j)
{
   int k;
   menu_category_t *category = (menu_category_t*)&categories[i];
   menu_item_t *item = (menu_item_t*)&category->items[j];
   menu_category_t *active_category = (menu_category_t*)&categories[menu_active_category];
   menu_item_t *active_item = (menu_item_t*)&active_category->items[active_category->active_item];

   for(k = 0; k < item->num_subitems; k++)
   {
      menu_subitem_t *subitem = (menu_subitem_t*)&item->subitems[k];

      if (!subitem)
         continue;

      if (k == 0 && g_extern.main_is_init
            && !g_extern.libretro_dummy
            && strcmp(g_extern.fullpath, &active_item->rom) == 0)
      {
         lakka_draw_icon(textures[TEXTURE_RESUME].id, 
            margin_left + hspacing*(i+2.25) + all_categories_x - icon_size/2.0, 
            margin_top + subitem->y + icon_size/2.0, 
            subitem->alpha, 
            0, 
            subitem->zoom);
         lakka_draw_text("Resume", 
            margin_left + hspacing*(i+2.25) + all_categories_x + label_margin_left, 
            margin_top + subitem->y + label_margin_top, 
            1, 
            subitem->alpha);
      }
      else if(k == 0 ||
            menu_active_category == 0 ||
            (g_extern.main_is_init && 
            !g_extern.libretro_dummy &&
            strcmp(g_extern.fullpath, &active_item->rom) == 0))
      {
         lakka_draw_icon(subitem->icon, 
               margin_left + hspacing*(i+2.25) + all_categories_x - icon_size/2.0, 
               margin_top + subitem->y + icon_size/2.0, 
               subitem->alpha, 
               0, 
               subitem->zoom);
         lakka_draw_text(subitem->name, 
               margin_left + hspacing * (i+2.25) + all_categories_x + label_margin_left, 
               margin_top + subitem->y + label_margin_top, 
               1, 
               subitem->alpha);
      }

   }
}
Пример #5
0
static void lakka_frame(void)
{
   struct font_output_list *msg;
   gl_t *gl = (gl_t*)driver.video_data;
   menu_category_t *active_category = (menu_category_t*)&categories[menu_active_category];
   menu_item_t *active_item;

   if (!driver.menu || !gl || !active_category)
      return;

   active_item = (menu_item_t*)&active_category->items[active_category->active_item];

   update_tweens(0.002);

   glViewport(0, 0, gl->win_width, gl->win_height);

   lakka_draw_background();

   lakka_draw_categories();

   if (depth == 0)
   {
      if (active_category)
         lakka_draw_text(&active_category->out, 15.0, 40.0, 1, 1.0);
   }
   else
   {
      if (active_item)
         lakka_draw_text(&active_item->out, 15.0, 40.0, 1, 1.0);

      lakka_draw_icon(textures[TEXTURE_ARROW].id,
            156 + HSPACING*(menu_active_category+1) + all_categories_x + 150 +-dim/2.0,
            300 + VSPACING*2.4 + (dim/2.0), 1, 0, I_ACTIVE_ZOOM);
   }

   gl_set_viewport(gl, gl->win_width, gl->win_height, false, false);
}
Пример #6
0
static void lakka_draw_items(lakka_handle_t *lakka, int i)
{
   int j;
   menu_category_t *category = (menu_category_t*)&lakka->categories[i];
   menu_category_t *active_category = (menu_category_t*)
      &lakka->categories[lakka->menu_active_category];
   menu_item_t *active_item = (menu_item_t*)
      &active_category->items[active_category->active_item];
    
   (void)active_item;

   if (!lakka)
      return;

   for(j = 0; j < category->num_items; j++)
   {
      menu_item_t *item = (menu_item_t*)&category->items[j];

      if (!item)
         continue;

      if ((i >= (lakka->menu_active_category - 1)) &&
         (i <= (lakka->menu_active_category + 1))) /* performance improvement */
      {
         lakka_draw_icon(lakka, category->item_icon,
            lakka->margin_left + lakka->hspacing * (i+1) +
            lakka->all_categories_x - lakka->icon_size / 2.0, 
            lakka->margin_top + item->y + lakka->icon_size / 2.0, 
            item->alpha, 
            0, 
            item->zoom);

         if (lakka->depth == 0)
            lakka_draw_text(lakka, item->name,
               lakka->margin_left + lakka->hspacing * (i+1) +
               lakka->all_categories_x + lakka->label_margin_left, 
               lakka->margin_top + item->y + lakka->label_margin_top, 
               1, 
               item->alpha);
      }

      /* performance improvement */
      if (i == lakka->menu_active_category && j == category->active_item)
         lakka_draw_subitems(lakka, i, j);
   }
}
Пример #7
0
static void lakka_draw_items(int i)
{
   int j;
   menu_category_t *category = (menu_category_t*)&categories[i];
   menu_category_t *active_category = (menu_category_t*)&categories[menu_active_category];
   menu_item_t *active_item = (menu_item_t*)&active_category->items[active_category->active_item];

   for(j = 0; j < category->num_items; j++)
   {
      menu_item_t *item = (menu_item_t*)&category->items[j];

      if (!item)
         continue;

      if (i == menu_active_category &&
         j > active_category->active_item - 4 &&
         j < active_category->active_item + 10) // performance improvement
      {
         lakka_draw_icon(category->item_icon, 
            156 + HSPACING*(i+1) + all_categories_x - dim/2.0, 
            300 + item->y + dim/2.0, 
            item->alpha, 
            0, 
            item->zoom);

         if (depth == 0)
            lakka_draw_text(&item->out, 
               156 + HSPACING * (i+1) + all_categories_x + dim/2.0, 
               300 + item->y + 15, 
               1, 
               item->alpha);
      }

      if (i == menu_active_category && j == category->active_item && depth == 1) // performance improvement
         lakka_draw_subitems(i, j);
   }
}
Пример #8
0
static void lakka_draw_items(int i)
{
   int j;
   menu_category_t *category = (menu_category_t*)&categories[i];
   menu_category_t *active_category = (menu_category_t*)&categories[menu_active_category];
   menu_item_t *active_item = (menu_item_t*)&active_category->items[active_category->active_item];

   for(j = 0; j < category->num_items; j++)
   {
      menu_item_t *item = (menu_item_t*)&category->items[j];

      if (!item)
         continue;

      if (i >= menu_active_category - 1 &&
	 i <= menu_active_category + 1) // performance improvement
      {
         lakka_draw_icon(category->item_icon,
            margin_left + hspacing*(i+1) + all_categories_x - icon_size/2.0, 
            margin_top + item->y + icon_size/2.0, 
            item->alpha, 
            0, 
            item->zoom);

         if (depth == 0)
            lakka_draw_text(item->name,
               margin_left + hspacing * (i+1) + all_categories_x + label_margin_left, 
               margin_top + item->y + label_margin_top, 
               1, 
               item->alpha);
      }

      if (i == menu_active_category && j == category->active_item && depth == 1) // performance improvement
         lakka_draw_subitems(i, j);
   }
}
Пример #9
0
static void lakka_draw_subitems(lakka_handle_t *lakka, int i, int j)
{
   int k;
   menu_category_t *category = (menu_category_t*)&lakka->categories[i];
   menu_item_t *item = (menu_item_t*)&category->items[j];
   menu_category_t *active_category = (menu_category_t*)
      &lakka->categories[lakka->menu_active_category];
   menu_item_t *active_item = (menu_item_t*)
      &active_category->items[active_category->active_item];

   for(k = 0; k < item->num_subitems; k++)
   {
      menu_subitem_t *subitem = (menu_subitem_t*)&item->subitems[k];

      if (!subitem)
         continue;

      if (i && k == 0 && g_extern.main_is_init
            && !g_extern.libretro_dummy
            && strcmp(g_extern.fullpath, active_item->rom) == 0)
      {
         lakka_draw_icon(lakka, lakka->textures[TEXTURE_RESUME].id, 
            lakka->margin_left + lakka->hspacing * (i+1) + lakka->icon_size * 2 +
            lakka->all_categories_x - lakka->icon_size / 2.0,
            lakka->margin_top + subitem->y + lakka->icon_size/2.0,
            subitem->alpha,
            0, 
            subitem->zoom);
         lakka_draw_text(lakka, "Resume",
            lakka->margin_left + lakka->hspacing * (i+2.25) +
            lakka->all_categories_x + lakka->label_margin_left,
            lakka->margin_top + subitem->y + lakka->label_margin_top,
            1, 
            subitem->alpha);
      }
      else if (k == 0 ||
            lakka->menu_active_category == 0 ||
            (g_extern.main_is_init && 
            !g_extern.libretro_dummy &&
            strcmp(g_extern.fullpath, active_item->rom) == 0))
      {
         lakka_draw_icon(lakka, subitem->icon, 
               lakka->margin_left + lakka->hspacing * (i+1) + lakka->icon_size * 2 +
               lakka->all_categories_x - lakka->icon_size/2.0, 
               lakka->margin_top + subitem->y + lakka->icon_size/2.0, 
               subitem->alpha, 
               0, 
               subitem->zoom);

         lakka_draw_text(lakka, subitem->name, 
               lakka->margin_left + lakka->hspacing * (i+2.25) +
               lakka->all_categories_x + lakka->label_margin_left, 
               lakka->margin_top + subitem->y + lakka->label_margin_top, 
               1, 
               subitem->alpha);

         if (i && (k == 1 || k == 2))
         {
            char slot[PATH_MAX];

            if (g_settings.state_slot == -1)
               snprintf(slot, sizeof(slot), "%d (auto)", g_settings.state_slot);
            else
               snprintf(slot, sizeof(slot), "%d", g_settings.state_slot);
            lakka_draw_text(lakka, slot, 
                  lakka->margin_left + lakka->hspacing * (i+2.25) +
                  lakka->all_categories_x + lakka->label_margin_left + lakka->setting_margin_left, 
                  lakka->margin_top + subitem->y + lakka->label_margin_top, 
                  1, 
                  subitem->alpha);
         }
      }

      if (subitem->setting)
      {
         char val[PATH_MAX];
         setting_data_get_string_representation(subitem->setting, val,
               sizeof(val));
         lakka_draw_text(lakka, val, 
               lakka->margin_left + lakka->hspacing * (i+2.25) +
               lakka->all_categories_x + lakka->label_margin_left + lakka->setting_margin_left, 
               lakka->margin_top + subitem->y + lakka->label_margin_top, 
               1, 
               subitem->alpha);
      }
   }
}