Update of /cvsroot/netrek/client/cow
In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv20304
Modified Files:
system.mk.in x11window.c
Added Files:
camera.c
Log Message:
tactical camera, based on Imlib2
--- NEW FILE: camera.c ---
/* prototype camera support */
#include <stdio.h>
#include <X11/Xlib.h>
#include <Imlib2.h>
#include "defs.h"
/* internal context */
static Display *disp = NULL;
static Visual *vis = NULL;
static Screen *scr = NULL;
static Colormap cm;
static Window rw, tw;
static int rx, ry;
static unsigned int rdx, rdy;
/* set the display used by the camera */
void camera_set_display(Display *arg_disp)
{
int depth;
disp = arg_disp;
scr = ScreenOfDisplay(disp, DefaultScreen(disp));
vis = DefaultVisual(disp, XScreenNumberOfScreen(scr));
depth = DefaultDepth(disp, XScreenNumberOfScreen(scr));
cm = DefaultColormap(disp, XScreenNumberOfScreen(scr));
rw = RootWindow(disp, XScreenNumberOfScreen(scr));
imlib_context_set_display(disp);
imlib_context_set_visual(vis);
imlib_context_set_colormap(cm);
imlib_context_set_color_modifier(NULL);
imlib_context_set_operation(IMLIB_OP_COPY);
}
/* 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);
}
void camera_snap()
{
Imlib_Image image;
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");
imlib_free_image_and_decache();
}
Index: x11window.c
===================================================================
RCS file: /cvsroot/netrek/client/cow/x11window.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- x11window.c 16 May 2006 06:25:25 -0000 1.7
+++ x11window.c 16 May 2006 12:59:38 -0000 1.8
@@ -4,6 +4,9 @@
* Kevin P. Smith 6/11/89 Much modified by Jerry Frain and Joe Young
*
* $Log$
+ * Revision 1.8 2006/05/16 12:59:38 quozl
+ * tactical camera, based on Imlib2
+ *
* Revision 1.7 2006/05/16 06:25:25 quozl
* some compilation fixes
*
@@ -456,6 +459,7 @@
/* tmp */
/* XSynchronize(W_Display, True); */
/* XSetErrorHandler(_myerror); */
+ camera_set_display(W_Display);
W_Root = DefaultRootWindow(W_Display);
@@ -1006,6 +1010,9 @@
CWBorderPixel,
&attrs),
WIN_GRAPH);
+ if (strcmp(name, "netrek") == 0) {
+ camera_set_window(newwin->window, width, height);
+ }
/* top window */
sz_hints = XAllocSizeHints();
if (strcmp(name, "netrek") == 0 || strcmp(name, "wait") == 0 ||
Index: system.mk.in
===================================================================
RCS file: /cvsroot/netrek/client/cow/system.mk.in,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- system.mk.in 31 Jan 2006 18:34:06 -0000 1.7
+++ system.mk.in 16 May 2006 12:59:38 -0000 1.8
@@ -72,7 +72,7 @@
netstat.o netstatopt.o spopt.o dashboard.o dashboard3.o \
short.o distress.o senddist.o defwin.o tools.o sound.o\
docwin.o cflags.o beeplite.o feature.o\
- string_util.o local.o censor.o cowmain.o
+ string_util.o local.o censor.o cowmain.o camera.o
RSRC = check.c colors.c data.c death.c defaults.c dmessage.c\
enter.c findslot.c getname.c getship.c helpwin.c inform.c\
@@ -83,7 +83,7 @@
lagmeter.c netstat.c netstatopt.c spopt.c dashboard.c dashboard3.c \
short.c distress.c senddist.c defwin.c tools.c sound.c\
docwin.c cflags.c beeplite.c feature.c reserved.c\
- string_util.c local.c censor.c cowmain.c
+ string_util.c local.c censor.c cowmain.c camera.c
INCLUDES = struct.h packets.h defs.h copyright.h bitmaps.h data.h\
@@ -113,7 +113,7 @@
netrek: $(RSAOBJ) $(PMAKE) null $(ROBJ) $(MAINOBJ) $(INPUTOBJ) $(X11OBJ) $(WIN32OBJ) $(RANDOMOBJ) cflags.c randomize
$(CC) $(LFLAGS) -o netrek `./randomize $(ROBJ) $(RSAOBJ) $(INPUTOBJ) \
- $(MAINOBJ) $(X11OBJ) $(WIN32OBJ) $(RANDOMOBJ)` $(LIBRARIES)
+ $(MAINOBJ) $(X11OBJ) $(WIN32OBJ) $(RANDOMOBJ)` $(LIBRARIES) -lImlib2
netrek.shared: done.libcow $(MAINOBJ) $(COWAPI)
$(CC) $(LFLAGS) $(MAINOBJ) -L. -lcow $(LIBS) -o netrek.shared