Back to index

gcompris  8.2.2
Typedefs | Enumerations | Functions
timer.h File Reference
#include <ctype.h>
#include <math.h>
#include <assert.h>
#include "gcompris.h"
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Typedefs

typedef void(* GcomprisTimerEnd )()

Enumerations

enum  TimerList { GCOMPRIS_TIMER_TEXT, GCOMPRIS_TIMER_SAND, GCOMPRIS_TIMER_BALLOON, GCOMPRIS_TIMER_CLOCK }

Functions

void gc_timer_display (int x, int y, TimerList type, int second, GcomprisTimerEnd gcomprisTimerEnd)
void gc_timer_add (int second)
void gc_timer_end (void)
guint gc_timer_get_remaining ()
void gc_timer_pause (gboolean pause)

Typedef Documentation

typedef void(* GcomprisTimerEnd)()

Definition at line 39 of file timer.h.


Enumeration Type Documentation

enum TimerList
Enumerator:
GCOMPRIS_TIMER_TEXT 
GCOMPRIS_TIMER_SAND 
GCOMPRIS_TIMER_BALLOON 
GCOMPRIS_TIMER_CLOCK 

Definition at line 30 of file timer.h.


Function Documentation

void gc_timer_add ( int  second)

Definition at line 159 of file timer.c.

{
  timer +=second;
}

Here is the caller graph for this function:

void gc_timer_display ( int  x,
int  y,
TimerList  type,
int  second,
GcomprisTimerEnd  gcomprisTimerEnd 
)

Definition at line 45 of file timer.c.

{
  GdkFont *gdk_font;
  GdkPixbuf *pixmap = NULL;
  GcomprisProperties *properties = gc_prop_get();

  /* Timer is not requested */
  if(properties->timer==0)
    return;

  gdk_font = gdk_font_load (FONT_BOARD_MEDIUM);

  gc_timer_end();

  paused = FALSE;

  boardRootItem = GNOME_CANVAS_GROUP(
                                 gnome_canvas_item_new (gnome_canvas_root(gc_get_canvas()),
                                                     gnome_canvas_group_get_type (),
                                                     "x", (double) 0,
                                                     "y", (double) 0,
                                                     NULL));

  x = ax;
  y = ay;
  second = second / properties->timer;
  timer = second;

  type = atype;
  gcomprisTimerEnd = agcomprisTimerEnd;

  switch(type)
    {
    case GCOMPRIS_TIMER_SAND:
    case GCOMPRIS_TIMER_CLOCK:
      {
       gchar         *filefull = NULL;
       gchar         *filename = NULL;
       gint          fileid;
       
       fileid = (gint)timer;
       if(type==GCOMPRIS_TIMER_SAND)
         filename = g_strdup_printf("gcompris/timers/sablier%d.png", fileid);
       else
         filename = g_strdup_printf("gcompris/timers/clock%d.png", fileid);
       
       filefull = g_strdup_printf("%s/%s", properties->package_data_dir, filename);
       if (g_file_test ((filefull), G_FILE_TEST_EXISTS))
         {
           pixmap = gc_pixmap_load(filename);

           gc_timer_item = gnome_canvas_item_new (boardRootItem,
                                             gnome_canvas_pixbuf_get_type (),
                                             "pixbuf", pixmap, 
                                             "x", x,
                                             "y", y,
                                             NULL);
           
           gdk_pixbuf_unref(pixmap);
         }
       g_free(filename);
       g_free(filefull);
      }
      break;
    case GCOMPRIS_TIMER_TEXT:
      {
       gchar *tmpstr = g_strdup_printf("Remaining Time = %d", timer);
       /* Display the value for this timer */
       gc_timer_item = gnome_canvas_item_new (boardRootItem,
                                          gnome_canvas_text_get_type (),
                                          "text", tmpstr,
                                          "font_gdk", gdk_font,
                                          "x", x,
                                          "y", y,
                                          "anchor", GTK_ANCHOR_CENTER,
                                          "fill_color", "white",
                                          NULL);
       g_free(tmpstr);
      }
      break;
    case GCOMPRIS_TIMER_BALLOON:
      pixmap = gc_pixmap_load("gcompris/misc/tuxballoon.png");
      gc_timer_item = gnome_canvas_item_new (boardRootItem,
                                        gnome_canvas_pixbuf_get_type (),
                                        "pixbuf", pixmap, 
                                        "x", x,
                                        "y", y,
                                        NULL);

      /* Calc the number of step needed to reach the sea based on user y and second */
      ystep = (BOARDHEIGHT-y-gdk_pixbuf_get_height(pixmap))/second;

      gdk_pixbuf_unref(pixmap);

      pixmap = gc_pixmap_load("gcompris/misc/sea.png");
      gnome_canvas_item_new (boardRootItem,
                          gnome_canvas_pixbuf_get_type (),
                          "pixbuf", pixmap, 
                          "x", (double) 0,
                          "y", (double) BOARDHEIGHT - gdk_pixbuf_get_height(pixmap),
                          "width", (double) gdk_pixbuf_get_width(pixmap),
                          "height", (double) gdk_pixbuf_get_height(pixmap),
                          NULL);
      gdk_pixbuf_unref(pixmap);

      break;
    default:
      break;
    }

  start_animation();
}

Here is the call graph for this function:

Here is the caller graph for this function:

void gc_timer_end ( void  )

Definition at line 165 of file timer.c.

{
  if(boardRootItem!=NULL)
    gtk_object_destroy (GTK_OBJECT(boardRootItem));
  boardRootItem = NULL;

  paused = TRUE;

  if (animate_id)
    gtk_timeout_remove (animate_id);
  animate_id = 0;

  if (subanimate_id)
    gtk_timeout_remove (subanimate_id);
  subanimate_id = 0;
}

Here is the caller graph for this function:

Definition at line 208 of file timer.c.

{
  return(timer);
}

Here is the caller graph for this function:

void gc_timer_pause ( gboolean  pause)

Definition at line 183 of file timer.c.

{
  if(boardRootItem==NULL)
    return;

  paused = pause;

  if(pause)
    {
      if (animate_id)
       gtk_timeout_remove (animate_id);
      animate_id = 0;
      
      if (subanimate_id)
       gtk_timeout_remove (subanimate_id);
      subanimate_id = 0;
    }
  else
    {
      start_animation();
    }

}

Here is the call graph for this function:

Here is the caller graph for this function: