projects
/
xscreensaver
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
http://www.jwz.org/xscreensaver/xscreensaver-5.12.tar.gz
[xscreensaver]
/
hacks
/
glx
/
font-ximage.c
diff --git
a/hacks/glx/font-ximage.c
b/hacks/glx/font-ximage.c
index 1b95173ae8432e64095b47afeb1189efa2b9e76e..c7b0051d752664b6e0b1722c0a1392800acceb07 100644
(file)
--- a/
hacks/glx/font-ximage.c
+++ b/
hacks/glx/font-ximage.c
@@
-1,5
+1,5
@@
/* font-ximage.c --- renders text to an XImage for use with OpenGL.
/* font-ximage.c --- renders text to an XImage for use with OpenGL.
- * xscreensaver, Copyright (c) 2001 Jamie Zawinski <jwz@jwz.org>
+ * xscreensaver, Copyright (c) 2001
, 2003
Jamie Zawinski <jwz@jwz.org>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
@@
-17,13
+17,19
@@
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
-#include <GL/gl.h> /* only for GLfloat */
+
+#ifdef HAVE_COCOA
+# include "jwxyz.h"
+# include <OpenGL/gl.h>
+#else /* !HAVE_COCOA */
+# include <X11/Xlib.h>
+# include <X11/Xutil.h>
+# include <GL/gl.h> /* only for GLfloat */
+#endif /* !HAVE_COCOA */
extern char *progname;
extern char *progname;
-#include
<X11/Xutil.h>
+#include
"font-ximage.h"
#undef MAX
#define MAX(a,b) ((a)>(b)?(a):(b))
#undef MAX
#define MAX(a,b) ((a)>(b)?(a):(b))
@@
-31,6
+37,7
@@
extern char *progname;
#undef countof
#define countof(x) (sizeof((x))/sizeof((*x)))
#undef countof
#define countof(x) (sizeof((x))/sizeof((*x)))
+#if 0
static Bool
bigendian (void)
{
static Bool
bigendian (void)
{
@@
-38,13
+45,15
@@
bigendian (void)
u.i = 1;
return !u.c[0];
}
u.i = 1;
return !u.c[0];
}
+#endif
/* return the next larger power of 2. */
static int
to_pow2 (int i)
{
/* return the next larger power of 2. */
static int
to_pow2 (int i)
{
- static unsigned int pow2[] = { 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024,
- 2048, 4096, 8192, 16384, 32768, 65536 };
+ static const unsigned int pow2[] = {
+ 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024,
+ 2048, 4096, 8192, 16384, 32768, 65536 };
int j;
for (j = 0; j < countof(pow2); j++)
if (pow2[j] >= i) return pow2[j];
int j;
for (j = 0; j < countof(pow2); j++)
if (pow2[j] >= i) return pow2[j];
@@
-149,15
+158,11
@@
text_to_ximage (Screen *screen, Visual *visual,
while ((line = strtok(token, "\r\n")))
{
XCharStruct o2;
while ((line = strtok(token, "\r\n")))
{
XCharStruct o2;
- int ascent, descent, direction
, xoff2
;
+ int ascent, descent, direction;
token = 0;
XTextExtents(f, line, strlen(line),
&direction, &ascent, &descent, &o2);
token = 0;
XTextExtents(f, line, strlen(line),
&direction, &ascent, &descent, &o2);
- xoff2 = (xoff +
- ((overall.lbearing + overall.rbearing) -
- (o2.lbearing + o2.rbearing)) / 2);
-
XDrawString(dpy, bitmap, gc,
overall.lbearing + margin + xoff,
((f->ascent * (lines + 1)) +
XDrawString(dpy, bitmap, gc,
overall.lbearing + margin + xoff,
((f->ascent * (lines + 1)) +
@@
-199,9
+204,15
@@
text_to_ximage (Screen *screen, Visual *visual,
things as necessary) OpenGL pretends everything is client-side, so
we need to pack things in the right order for the client machine.
*/
things as necessary) OpenGL pretends everything is client-side, so
we need to pack things in the right order for the client machine.
*/
+#if 0
+ /* #### Cherub says that the little-endian case must be taken on MacOSX,
+ or else the colors/alpha are the wrong way around. How can
+ that be the case?
+ */
if (bigendian())
rpos = 24, gpos = 16, bpos = 8, apos = 0;
else
if (bigendian())
rpos = 24, gpos = 16, bpos = 8, apos = 0;
else
+#endif
rpos = 0, gpos = 8, bpos = 16, apos = 24;
fg = (((unsigned long) (texture_fg[0] * 255.0) << rpos) |
rpos = 0, gpos = 8, bpos = 16, apos = 24;
fg = (((unsigned long) (texture_fg[0] * 255.0) << rpos) |
@@
-222,8
+233,6
@@
text_to_ximage (Screen *screen, Visual *visual,
XGetPixel (ximage1, x, y2) ? fg : bg);
}
XGetPixel (ximage1, x, y2) ? fg : bg);
}
- free (ximage1->data);
- ximage1->data = 0;
XDestroyImage (ximage1);
#if 0
XDestroyImage (ximage1);
#if 0