Example #1
0
Eina_Bool animator_rotate_dashes(animator_callback_gui_shared_info_s *common_data)
{
	int i;
	static int curr_step = 1;
	if (common_data->rotation.direction == LEFT){
		curr_step--;
	} else {
		curr_step++;
	}
	double angle = curr_step * common_data->game.rotation_degree * common_data->game.turning_speed * REFRESH_SPEED;
	Evas_Coord x,y,w,h;
	Evas_Object **dashes = common_data->gui.dashes; /* array! */
	Evas_Map *dashes_maps[DASHES_COUNT];
	for (i=0;i<DASHES_COUNT;i++)
	{
		dashes_maps[i] = evas_map_new(4);
		evas_object_geometry_get(dashes[i], &x, &y, &w, &h);
		evas_map_util_points_populate_from_object(dashes_maps[i], dashes[i]);
		evas_map_util_rotate(dashes_maps[i], DASHES_INIT[i].rotation, x + DASH_LEN/2, y + DASH_LEN/2);
		evas_map_util_rotate(dashes_maps[i], angle, CENTER_X, CENTER_Y);
		evas_object_map_set(dashes[i], dashes_maps[i]);
		evas_object_map_enable_set(dashes[i], EINA_TRUE);
		evas_map_free(dashes_maps[i]);
	}

	#ifdef does_not_want_inertion
		if (--common_data->steps == 0)
	#endif
			ecore_animator_freeze(common_data->dash_animator);

	return ECORE_CALLBACK_RENEW;
}
Example #2
0
void
efx_rotate_helper(EFX *e, Evas_Object *obj, Evas_Map *map, double degrees)
{

   if (e->map_data.rotate_center)
     evas_map_util_rotate(map, degrees, e->map_data.rotate_center->x, e->map_data.rotate_center->y);
   else
     {
        Evas_Coord x, y, w, h;
        evas_object_geometry_get(obj, &x, &y, &w, &h);
        evas_map_util_rotate(map, degrees, x + (w / 2), y + (h / 2));
     }
   //DBG("rotation: %g", degrees);
//   _size_debug(e->obj);
}
/* loop - do things */
static void _loop(double t, int f)
{
   int i;
   static Evas_Map *m = NULL;
   Evas_Coord x, y, w, h;
   if (!m) m = evas_map_new(4);
   evas_map_smooth_set(m, 0);
   for (i = 0; i < (OBNUM / 2); i++)
     {
        w = 120;
	h = 160;
	x = (win_w / 2) - (w / 2);
        x += sin((double)(f + (i * 13)) / (36.7 * SLOW)) * (w / 2);
	y = (win_h / 2) - (h / 2);
        y += cos((double)(f + (i * 28)) / (43.8 * SLOW)) * (h / 2);

	evas_map_util_points_populate_from_geometry(m, x, y, w, h, 0);

        evas_map_util_rotate(m, f, x + (w / 2), y + (h / 2));

        evas_object_map_enable_set(o_images[i], 1);
        evas_object_map_set(o_images[i], m);
     }
   FPS_STD(NAME);
}
Example #4
0
File: test.c Project: ixdu/caravan
int main(void)
{
  id_keeper = id_keeper_init(1000); //хеш хранения всех объектов по id

  struct ui_object wconf;
  wconf.h = 800;
  wconf.w = 1600;
  
  int64_t main_id = ui_frame_create_window(&wconf);
  //printf("id is %d\n", main_id);
  //struct ui_frame *main = (struct ui_frame*) id_keeper->id_array[main_id];

  //  printf("Hello %d\n", main->canvas);
  //Evas_Object *bg, *r1, *r2, *r3;
  //bg = evas_object_rectangle_add(main->canvas);
  //evas_object_color_set(bg, 255, 255, 255,150); // white bg
  //evas_object_move(bg, 100, 100);                    // at origin
  //evas_object_resize(bg, main->ui.w, main->ui.h);         // covers full canvas
  //evas_object_show(bg);

  //  Evas_Object *grid = evas_object_grid_add(main->canvas);
  //evas_object_grid_size_set(grid, 400, 400);
  //evas_object_show(grid);

  struct ui_object frame_ui;
  frame_ui.h = 600;
  frame_ui.w = 1000;
  int64_t main_f = ui_evas_frame_create(main_id, &frame_ui);
  //Evas_Object *main_f = evas_smart_frame_add(main->canvas);
					//evas_object_move(main_f, 20, 20);
					//  evas_object_resize(main_f, 100, 100);
					//evas_object_show(main_f);
  
  //rotate
  Evas_Map *m = evas_map_new(4);
  evas_map_util_points_populate_from_object(m, main_f);
  int cx, cy, cw, ch;
  evas_object_geometry_get(main_f, &cx, &cy, &cw, &ch);
  evas_map_util_rotate(m, 30, cx + cw, cy + ch);
  evas_object_map_enable_set(main_f, EINA_TRUE);
  evas_object_map_set(main_f, m);

  puts("initial scene, with just background:");


  /*
   //   Evas_Object *cube =  evas_object_rectangle_add(canvas_win);
      Evas_Object *cube =  evas_object_image_filled_add(main->canvas);
   evas_object_image_file_set(cube, "./balalaika.svg", NULL);
   evas_object_color_set(cube, 0, 255, 255, 200); // white bg
   evas_object_move(cube, 700, 400);                    // at origin
   
   int csize[2];
   csize[0] = 30;
   csize[1] = 20;
   
   int cpos[2];
   cpos[0] = 700;
   cpos[1] = 400;

   //   evas_object_resize(cube, csize[0], csize[1]);         // covers full canvas
   evas_object_resize(cube, 400, 300);         // covers full canvas
   evas_object_show(cube);
   //   evas_object_anti_alias_set(cube, 1);
   //      evas_object_render_op_set(cube, EVAS_RENDER_BLEND);
   //   evas_object_image_smooth_scale_set(cube, EINA_TRUE);
   
   int deg = 1;
   int cx, cy, cw, ch;
   Evas_Map *m = evas_map_new(4);
   
   //   evas_map_point_image_uv_set(m, 0, 0, 0);
   // evas_map_point_image_uv_set(m, 1, 150, 0);
   //evas_map_point_image_uv_set(m, 2, 150, 200);
   //evas_map_point_image_uv_set(m, 3, 0, 200);

   Ecore_Task_Cb _cube_anim(void *data){
     evas_map_util_points_populate_from_object(m, cube);
     evas_object_geometry_get(cube, &cx, &cy, &cw, &ch);
     evas_map_util_rotate(m, ++deg, cx + cw, cy + ch);
     evas_object_map_enable_set(cube, EINA_TRUE);
     evas_object_map_set(cube, m);
     
     
     evas_object_move(cube, (cpos[0] = cpos[0] - 5) >=0 ? cpos[0] : 0, (cpos[1] = cpos[1] - 5) >=0 ? cpos[1] : 0);
     evas_object_resize(cube, csize[0] = csize[0] + 1, csize[1] = csize[1] + 1);
     //evas_object_image_filled_set(cube, EINA_TRUE);
     //evas_render(canvas_win);
     return ECORE_CALLBACK_DONE;
	  //	  Ecore_Timer *timer1 = ecore_timer_loop_add(0.4, timer_func, NULL);
   }

   ecore_animator_frametime_set(1./30);
   Ecore_Animator *anim = ecore_animator_add(_cube_anim,cube);
   //   ecore_animator_timeline_add(20,_cube_anim, cube);
   
   ecore_animator_thaw(anim);
  */
   ecore_main_loop_begin();

   //ecore_animator_del(anim);
   //evas_map_free(m);
   //*/
   //   destroy_canvas(main->datacanvas);

   evas_shutdown();

   return 0;
}
Example #5
0
/* This function applies the information from the Photo_Object to the actual
 * evas objects. Zoom/rotate factors and etc. */
static void
apply_changes(Photo_Object *po)
{
   Evas_Map *map;

   map = evas_map_new(4);
   evas_map_point_coord_set(map, 0, po->bx, po->by, 0);
   evas_map_point_coord_set(map, 1, po->bx + po->bw, po->by, 0);
   evas_map_point_coord_set(map, 2, po->bx + po->bw, po->by + po->bh, 0);
   evas_map_point_coord_set(map, 3, po->bx, po->by + po->bh, 0);
   evas_map_point_image_uv_set(map, 0, 0, 0);
   evas_map_point_image_uv_set(map, 1, po->bw, 0);
   evas_map_point_image_uv_set(map, 2, po->bw, po->bh);
   evas_map_point_image_uv_set(map, 3, 0, po->bh);
   evas_map_util_rotate(map, po->rotate,
         po->bx + po->bw / 2, po->by + po->bh /2);
   evas_map_util_zoom(map, po->zoom, po->zoom,
         po->bx + po->bw / 2, po->by + po->bh /2);
   evas_object_map_enable_set(po->ic, EINA_TRUE);
   evas_object_map_set(po->ic, map);

     {
        Evas_Map *shadow_map = evas_map_new(4);
        evas_map_point_coord_set(shadow_map, 0, po->bx, po->by, 0);
        evas_map_point_coord_set(shadow_map, 1, po->bx + po->bw, po->by, 0);
        evas_map_point_coord_set(shadow_map, 2,
              po->bx + po->bw, po->by + po->bh, 0);
        evas_map_point_coord_set(shadow_map, 3, po->bx, po->by + po->bh, 0);
        evas_map_point_image_uv_set(shadow_map, 0, 0, 0);
        evas_map_point_image_uv_set(shadow_map, 1, SHADOW_W, 0);
        evas_map_point_image_uv_set(shadow_map, 2, SHADOW_W, SHADOW_H);
        evas_map_point_image_uv_set(shadow_map, 3, 0, SHADOW_H);
        evas_map_util_rotate(shadow_map, po->rotate,
              po->bx + po->bw / 2, po->by + po->bh /2);
        evas_map_util_zoom(shadow_map, po->zoom * po->shadow_zoom,
              po->zoom * po->shadow_zoom,
              po->bx + (po->bw / 2), po->by + (po->bh / 2));
        evas_object_map_enable_set(po->shadow, EINA_TRUE);
        evas_object_map_set(po->shadow, shadow_map);
        evas_map_free(shadow_map);
     }

   /* Update the position of the hit box */
     {
        Evas_Coord minx, miny, maxx, maxy;
        int i;
        evas_object_polygon_points_clear(po->hit);
        evas_map_point_coord_get(map, 0, &minx, &miny, NULL);
        maxx = minx;
        maxy = miny;
        evas_object_polygon_point_add(po->hit, minx, miny);
        for (i = 1 ; i <= 3 ; i++)
          {
             Evas_Coord x, y;
             evas_map_point_coord_get(map, i, &x, &y, NULL);
             evas_object_polygon_point_add(po->hit, x, y);
             if (x < minx)
                minx = x;
             else if (x > maxx)
                maxx = x;

             if (y < miny)
                miny = y;
             else if (y > maxy)
                maxy = y;
          }
     }

   evas_object_raise(po->shadow);
   evas_object_raise(po->ic);
   evas_object_raise(po->hit);
   evas_map_free(map);
}
Example #6
0
static Eina_Bool
_anim_cb(void *data)
{
   App_Data *ad = data;
   Evas_Map *m;
   Evas_Object *o;
   int r, g, b, a;
   int win_w, win_h, img_w, img_h;
   Evas_Coord x, y, w, h;

   evas_output_size_get(ad->canvas, &win_w, &win_h);

   m = evas_map_new(4);
   evas_map_smooth_set(m, ad->smooth);
   evas_map_alpha_set(m, ad->alpha);

   r = ad->colors[ad->colors_index].r;
   g = ad->colors[ad->colors_index].g;
   b = ad->colors[ad->colors_index].b;
   a = ad->colors[ad->colors_index].a;
   evas_map_util_points_color_set(m, r, g, b, a);

   o = evas_object_name_find(ad->canvas, "obj1");
   evas_object_geometry_get(o, &x, &y, &w, &h);

   evas_map_util_points_populate_from_object(m, o);
   evas_map_util_rotate(m, 3 * ad->frame, x + (w / 2), y + (h / 2));
   evas_object_map_set(o, m);
   evas_object_map_enable_set(o, EINA_TRUE);

   o = evas_object_name_find(ad->canvas, "obj2");
   evas_object_geometry_get(o, &x, &y, &w, &h);
   evas_object_image_size_get(o, &img_w, &img_h);

   evas_map_util_points_populate_from_object_full(m, o, 100);
   evas_map_point_image_uv_set(m, 0, 0, 0);
   evas_map_point_image_uv_set(m, 1, img_w, 0);
   evas_map_point_image_uv_set(m, 2, img_w, img_h);
   evas_map_point_image_uv_set(m, 3, 0, img_h);
   evas_map_util_3d_rotate(m, ad->frame * 6, ad->frame * 6, ad->frame * 6,
                           x + (w / 3), y + 10, 0);
   if (ad->apply_lighting)
     evas_map_util_3d_lighting(m, win_w / 2, win_h / 2, -100,
                               255, 255, 255, 0, 0, 0);
   evas_object_map_set(o, m);
   evas_object_map_enable_set(o, EINA_TRUE);

   o = evas_object_name_find(ad->canvas, "obj3");
   evas_object_geometry_get(o, &x, &y, &w, &h);
   evas_object_image_size_get(o, &img_w, &img_h);

   evas_map_util_points_populate_from_geometry(m, x, y + (h / 2), w, h, -20);
   evas_map_point_image_uv_set(m, 0, 0, 0);
   evas_map_point_image_uv_set(m, 1, img_w, 0);
   evas_map_point_image_uv_set(m, 2, img_w, img_h);
   evas_map_point_image_uv_set(m, 3, 0, img_h);
   evas_map_util_3d_rotate(m, 20, ad->frame * 6, 0,
                           x + (w / 2), y + (w / 2), w / 2);

   if (ad->apply_perspective)
     evas_map_util_3d_perspective(m, x + (w / 2), y + (h / 2), 0, 256);
   if (ad->apply_lighting)
     {
        Evas_Coord mx, my;
        evas_pointer_canvas_xy_get(ad->canvas, &mx, &my);
        evas_map_util_3d_lighting(m, mx, my, -256,
                                  255, 255, 255, 0, 0, 0);
     }
   if (ad->backface_culling)
     {
        if (evas_map_util_clockwise_get(m))
          evas_object_show(o);
        else
          evas_object_hide(o);
     }
   else
     evas_object_show(o);
   evas_object_map_set(o, m);
   evas_object_map_enable_set(o, EINA_TRUE);

   evas_map_free(m);

   o = evas_object_name_find(ad->canvas, "obj4");
   evas_object_geometry_get(o, &x, &y, &w, &h);
   evas_object_image_size_get(o, &img_w, &img_h);

   m = evas_map_new(4);
   evas_map_point_coord_set(m, 0, x, y + h, 0);
   evas_map_point_coord_set(m, 1, x + w, y + h, 0);
   evas_map_point_coord_set(m, 2, win_w - 10, win_h - 30, 0);
   evas_map_point_coord_set(m, 3, (win_w / 2) + 10, win_h - 30, 0);
   evas_map_point_image_uv_set(m, 0, 0, img_h);
   evas_map_point_image_uv_set(m, 1, img_w, img_h);
   evas_map_point_image_uv_set(m, 2, img_w, 2 * (img_h / 3));
   evas_map_point_image_uv_set(m, 3, 0, 2 * (img_h / 3));
   evas_map_point_color_set(m, 0, 200, 200, 200, 150);
   evas_map_point_color_set(m, 1, 200, 200, 200, 150);
   evas_map_point_color_set(m, 2, 0, 0, 0, 0);
   evas_map_point_color_set(m, 3, 0, 0, 0, 0);
   evas_object_map_set(o, m);
   evas_object_map_enable_set(o, EINA_TRUE);

   evas_map_free(m);

   ad->frame = (ad->frame + 1) % 60;

   return EINA_TRUE;
}