Update of /cvsroot/netrek/client/cow
In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv28402

Modified Files:
	camera.c input.c playback.c 
Added Files:
	camera.h 
Log Message:
add camera frame counter

Index: camera.c
===================================================================
RCS file: /cvsroot/netrek/client/cow/camera.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- camera.c	16 May 2006 12:59:38 -0000	1.1
+++ camera.c	22 May 2006 13:12:48 -0000	1.2
@@ -1,6 +1,7 @@
 /* prototype camera support */
 
 #include <stdio.h>
+#include <stdlib.h>
 #include <X11/Xlib.h>
 #include <Imlib2.h>
 #include "defs.h"
@@ -13,13 +14,27 @@
 static Window rw, tw;
 static int rx, ry;
 static unsigned int rdx, rdy;
+static int frame;
+static int initialised = 0;
+
+/* maximum file name size */
+#define MAXFRAMEFILENAMESIZE 80
 
 /* set the display used by the camera */
 void camera_set_display(Display *arg_disp)
 {
-  int depth;
-
   disp = arg_disp;
+}
+
+/* set the window used by the camera */
+void camera_set_window(Window *arg_window)
+{
+  tw = *arg_window;
+}
+
+void camera_init() {
+  if (initialised) return;
+  int depth;
   scr = ScreenOfDisplay(disp, DefaultScreen(disp));
   vis = DefaultVisual(disp, XScreenNumberOfScreen(scr));
   depth = DefaultDepth(disp, XScreenNumberOfScreen(scr));
@@ -31,26 +46,30 @@
   imlib_context_set_colormap(cm);
   imlib_context_set_color_modifier(NULL);
   imlib_context_set_operation(IMLIB_OP_COPY);
-}
+  frame = 0;
 
-/* set the window used by the camera */
-void camera_set_window(Window arg_window, int arg_width, int arg_height)
-{
-  tw = arg_window;
   rx = 0;
   ry = 0;
   rdx = TWINSIDE;	/* restrict to tactical */
   rdy = TWINSIDE;
   imlib_context_set_drawable(tw);
+
+  initialised++;
 }
 
 void camera_snap()
 {
   Imlib_Image image;
+  char *name;
 
+  camera_init();
   image = imlib_create_image_from_drawable(rw, rx, ry, rdx, rdy, 0);
   imlib_context_set_image(image);
   imlib_image_attach_data_value("quality", NULL, 15, NULL);
-  imlib_save_image("cow-camera-frame.png");
+  name = malloc(MAXFRAMEFILENAMESIZE);
+  snprintf(name, MAXFRAMEFILENAMESIZE-1, "netrek-%03d.png", frame++);
+  imlib_save_image(name);
   imlib_free_image_and_decache();
+  fprintf(stderr, "camera_snap: %s\n", name);
+  free(name);
 }

Index: input.c
===================================================================
RCS file: /cvsroot/netrek/client/cow/input.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- input.c	16 May 2006 06:25:25 -0000	1.12
+++ input.c	22 May 2006 13:12:48 -0000	1.13
@@ -2,6 +2,9 @@
 /* input.c
  *
  * $Log$
+ * Revision 1.13  2006/05/22 13:12:48  quozl
+ * add camera frame counter
+ *
  * Revision 1.12  2006/05/16 06:25:25  quozl
  * some compilation fixes
  *
@@ -1107,6 +1110,7 @@
 	case 'R':
         case 'j':
         case 'J':
+        case 's':
 	  pbsetspeed(key);
 	  return;
 	  break;
@@ -1981,6 +1985,7 @@
 Key67(void)
 {
   sendCoupReq();
+  camera_snap();
 }
 
 Key68(void)

--- NEW FILE: camera.h ---
/* camera.c */
void camera_set_display(Display *arg_disp);
void camera_set_window(Window *arg_window);
void camera_init(void);
void camera_snap(void);

Index: playback.c
===================================================================
RCS file: /cvsroot/netrek/client/cow/playback.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- playback.c	27 Jan 2006 09:57:27 -0000	1.13
+++ playback.c	22 May 2006 13:12:48 -0000	1.14
@@ -5,6 +5,9 @@
  * Routines neccessary to playback a game recording.
  *
  * $Log$
+ * Revision 1.14  2006/05/22 13:12:48  quozl
+ * add camera frame counter
+ *
  * Revision 1.13  2006/01/27 09:57:27  quozl
  * *** empty log message ***
  *
@@ -189,6 +192,7 @@
 int pb_num_fast_forward = 0;
 int pb_sequence_count = 0;
 int pb_stepping = 0;			/* non-zero if doing a step	*/
+int pb_snapping = 0;			/* non-zero if taking camera snapshots	*/
 
 const char *INDEX_FORMAT = "%d,%d,%d";
 const int INDEX_GRANULARITY = 100;
@@ -215,14 +219,6 @@
 struct player *packetsme;
 struct player *displayme;
 
-/* We want reverse-playback!!! */
-#define REVERSE_PLAYBACK
-
-/* Forward declarations for reverse playback */
-void rpb_init(void);
-void rpb_analyze(int diskpos, void *packet);
-void rpb_dorev(char *buf);
-
 int
         pbmain(char *name)
 {
@@ -496,6 +492,7 @@
       intrupt();
       W_Flush();
       if (!pb_stepping) usleep(pbdelay);
+      if (pb_snapping) camera_snap();
     }
 }
 
@@ -639,6 +636,10 @@
       jump_idx = 0;
       jump_str[0] = '\0';
       break;
+    case 's':
+      fprintf(stderr, "toggle-snap\n");
+      pb_snapping = ~pb_snapping;
+      break;
     }
 
  end: