mirror of
https://github.com/gryf/wmaker.git
synced 2026-01-04 04:44:16 +01:00
Added Xft support in WINGs (for drawing antialiased fonts with transparency)
Details in WINGs/ChangeLog and WINGs/NEWS
This commit is contained in:
@@ -16,6 +16,8 @@ Changes since version 0.80.1:
|
|||||||
- Removed obsoleted acconfig.h and implemented its functionality using
|
- Removed obsoleted acconfig.h and implemented its functionality using
|
||||||
AC_DEFINE and AC_DEFINE_UNQUOTED as autoconf 2.5x recommends.
|
AC_DEFINE and AC_DEFINE_UNQUOTED as autoconf 2.5x recommends.
|
||||||
This will definitely enforce the need to use autoconf 2.5x
|
This will definitely enforce the need to use autoconf 2.5x
|
||||||
|
- Added Xft support to WINGs, for rendering antialiased fonts with
|
||||||
|
transparency. Details in WINGs/ChangeLog.
|
||||||
|
|
||||||
|
|
||||||
Changes since version 0.80.0:
|
Changes since version 0.80.0:
|
||||||
|
|||||||
@@ -10,6 +10,12 @@ Changes since wmaker 0.80.1:
|
|||||||
- Added alpha channel to WMColor. 2 new functions also:
|
- Added alpha channel to WMColor. 2 new functions also:
|
||||||
WMCreateRGBAColor() and WMSetColorAlpha()
|
WMCreateRGBAColor() and WMSetColorAlpha()
|
||||||
- Miscelaneous code cleanups in wtext.c
|
- Miscelaneous code cleanups in wtext.c
|
||||||
|
- Added Xft support in WINGs (for drawing antialiased fonts with transparency).
|
||||||
|
- Added a new function: WMCreateAAFont() to create a font which will be
|
||||||
|
drawn antialiased using Xft (if available, else function returns NULL)
|
||||||
|
- New options in WMGLOBAL: AntialiasedText, AASystemFont and AABoldSystemFont.
|
||||||
|
Check NEWS for details.
|
||||||
|
- Fixed some improper calls to snprintf in wfont.c
|
||||||
|
|
||||||
|
|
||||||
Changes since wmaker 0.80.0:
|
Changes since wmaker 0.80.0:
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ noinst_PROGRAMS = connect server fontl puzzle
|
|||||||
|
|
||||||
|
|
||||||
LDADD= $(top_builddir)/WINGs/libWINGs.a $(top_builddir)/wrlib/libwraster.la \
|
LDADD= $(top_builddir)/WINGs/libWINGs.a $(top_builddir)/wrlib/libwraster.la \
|
||||||
@INTLIBS@
|
@XFTLIBS@ @INTLIBS@
|
||||||
|
|
||||||
|
|
||||||
fontl_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.a
|
fontl_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.a
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ INCLUDES = -I$(top_srcdir)/wrlib -I$(top_srcdir)/WINGs \
|
|||||||
-DRESOURCE_PATH=\"$(datadir)/WINGs\" @HEADER_SEARCH_PATH@ -DDEBUG
|
-DRESOURCE_PATH=\"$(datadir)/WINGs\" @HEADER_SEARCH_PATH@ -DDEBUG
|
||||||
|
|
||||||
LDADD= $(top_builddir)/WINGs/libWINGs.a $(top_builddir)/wrlib/libwraster.la \
|
LDADD= $(top_builddir)/WINGs/libWINGs.a $(top_builddir)/wrlib/libwraster.la \
|
||||||
@INTLIBS@
|
@XFTLIBS@ @INTLIBS@
|
||||||
|
|
||||||
test_LDADD = wtableview.o wtabledelegates.o $(LDADD)
|
test_LDADD = wtableview.o wtabledelegates.o $(LDADD)
|
||||||
|
|
||||||
|
|||||||
44
WINGs/NEWS
44
WINGs/NEWS
@@ -1,3 +1,47 @@
|
|||||||
|
*** Wed Oct 9 07:10:04 EEST 2002 - Dan
|
||||||
|
|
||||||
|
Xft support in WINGs
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
If Xft is detected when configure it is run, support for drawing antialiased
|
||||||
|
fonts with transparency will be compiled into WINGs.
|
||||||
|
You need at least Xfree86 version 4.0.x for this but at least 4.1.x is
|
||||||
|
recommended.
|
||||||
|
|
||||||
|
For Xft support there is a new function to create a font that will render
|
||||||
|
using antialiasing and transparency: WMCreateAAFont().
|
||||||
|
Passing such a font to WMDrawString() or WMDrawImageString() will result
|
||||||
|
in antialiased text displayed on screen. Modifying the alpha value for the
|
||||||
|
WMColor passed to WMDrawString() or WMDrawImageString() will result in text
|
||||||
|
being displayed with the appropriate transparency.
|
||||||
|
|
||||||
|
To control antialiased font behavior, there are 3 new options that go into
|
||||||
|
WMGLOBAL. Two of them are to set the system font used when an antialiased
|
||||||
|
font is required. They operate in a similar way as SystemFont and
|
||||||
|
BoldSystemFont, just they are used when antialiased fonts are requested.
|
||||||
|
They are named AASystemFont respectively AABoldSystemFont. They are kept
|
||||||
|
separate from SystemFont and BoldSystemFont because the same fonts don't
|
||||||
|
render well as both normal and antialiased if they are not TrueType fonts.
|
||||||
|
Even though you can specify any font in the XLFD format for these new
|
||||||
|
options, it is recomended to use TrueType fonts for the antialiased case
|
||||||
|
since other fonts (standard X fonts) don't render well and give ugly
|
||||||
|
results.
|
||||||
|
|
||||||
|
The third option is an option that globally controls if WINGs uses or not
|
||||||
|
antialiased fonts. It is named AntialiasedText and it has a boolean Yes/No
|
||||||
|
value. If set to Yes, WINGs will try to use antialiased fonts (if support
|
||||||
|
was compiled in, and antialiased fonts can be found) then revert to normal
|
||||||
|
fonts if not possible. Note that this applies if WMCreateFont(),
|
||||||
|
WMSystemFont(), WMSystemFontOfSize(), WMBoldSystemFont() or
|
||||||
|
WMBoldSystemFontOFize() are used. If any of the direct creation functions
|
||||||
|
are used, such as WMCreateAAFont() or WMCreateNormalFont(), then that kind
|
||||||
|
of font is returned independently of the value of AntialiasedText.
|
||||||
|
(However note that an antialiased font cannot be created if Xft support was
|
||||||
|
no compiled into WINGs, even if you call WMCreateAAFont() directly. In this
|
||||||
|
case WMCreateAAFont() will always return NULL)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
*** Mon Sep 09 06:58:30 EEST 2002 - Dan
|
*** Mon Sep 09 06:58:30 EEST 2002 - Dan
|
||||||
|
|
||||||
New delegate for the WMConnection class
|
New delegate for the WMConnection class
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ AUTOMAKE_OPTIONS = no-dependencies
|
|||||||
noinst_PROGRAMS = wtest wmquery wmfile testmywidget
|
noinst_PROGRAMS = wtest wmquery wmfile testmywidget
|
||||||
|
|
||||||
LDADD= $(top_builddir)/WINGs/libWINGs.a $(top_builddir)/wrlib/libwraster.la \
|
LDADD= $(top_builddir)/WINGs/libWINGs.a $(top_builddir)/wrlib/libwraster.la \
|
||||||
@INTLIBS@
|
@XFTLIBS@ @INTLIBS@
|
||||||
|
|
||||||
|
|
||||||
testmywidget_SOURCES = testmywidget.c mywidget.c mywidget.h
|
testmywidget_SOURCES = testmywidget.c mywidget.c mywidget.h
|
||||||
|
|||||||
@@ -1292,6 +1292,7 @@ main(int argc, char **argv)
|
|||||||
|
|
||||||
testDragAndDrop(scr);
|
testDragAndDrop(scr);
|
||||||
testText(scr);
|
testText(scr);
|
||||||
|
testFontPanel(scr);
|
||||||
#if 0
|
#if 0
|
||||||
testColorPanel(scr);
|
testColorPanel(scr);
|
||||||
testScrollView(scr);
|
testScrollView(scr);
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
#include <WINGs/WUtil.h>
|
#include <WINGs/WUtil.h>
|
||||||
#include <X11/Xlib.h>
|
#include <X11/Xlib.h>
|
||||||
|
|
||||||
#define WINGS_H_VERSION 20020104
|
#define WINGS_H_VERSION 20021008
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
@@ -699,6 +699,8 @@ WMFont* WMCreateFontSet(WMScreen *scrPtr, char *fontName);
|
|||||||
|
|
||||||
WMFont* WMCreateNormalFont(WMScreen *scrPtr, char *fontName);
|
WMFont* WMCreateNormalFont(WMScreen *scrPtr, char *fontName);
|
||||||
|
|
||||||
|
WMFont* WMCreateAAFont(WMScreen *scrPtr, char *fontName);
|
||||||
|
|
||||||
WMFont* WMCreateFont(WMScreen *scrPtr, char *fontName);
|
WMFont* WMCreateFont(WMScreen *scrPtr, char *fontName);
|
||||||
|
|
||||||
WMFont* WMRetainFont(WMFont *font);
|
WMFont* WMRetainFont(WMFont *font);
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
#include <WINGs/WINGs.h>
|
#include <WINGs/WINGs.h>
|
||||||
|
|
||||||
#if WINGS_H_VERSION < 20020104
|
#if WINGS_H_VERSION < 20021008
|
||||||
#error There_is_an_old_WINGs.h_file_somewhere_in_your_system._Please_remove_it.
|
#error There_is_an_old_WINGs.h_file_somewhere_in_your_system._Please_remove_it.
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -32,11 +32,11 @@ extern "C" {
|
|||||||
|
|
||||||
#define SCROLLER_WIDTH 20
|
#define SCROLLER_WIDTH 20
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define XDND_VERSION 4
|
#define XDND_VERSION 4
|
||||||
|
|
||||||
|
|
||||||
typedef struct W_Application {
|
typedef struct W_Application {
|
||||||
char *applicationName;
|
char *applicationName;
|
||||||
int argc;
|
int argc;
|
||||||
@@ -50,13 +50,15 @@ typedef struct W_Font {
|
|||||||
|
|
||||||
union {
|
union {
|
||||||
XFontSet set;
|
XFontSet set;
|
||||||
XFontStruct *normal;
|
XFontStruct *normal;
|
||||||
|
struct _XftFont *xft;
|
||||||
} font;
|
} font;
|
||||||
short height;
|
short height;
|
||||||
short y;
|
short y;
|
||||||
short refCount;
|
short refCount;
|
||||||
char *name;
|
char *name;
|
||||||
unsigned int notFontSet:1;
|
unsigned int notFontSet:1;
|
||||||
|
unsigned int antialiased:1;
|
||||||
} W_Font;
|
} W_Font;
|
||||||
|
|
||||||
|
|
||||||
@@ -197,12 +199,14 @@ typedef struct W_Screen {
|
|||||||
WMHashTable *fontSetCache;
|
WMHashTable *fontSetCache;
|
||||||
|
|
||||||
Bool useMultiByte;
|
Bool useMultiByte;
|
||||||
|
|
||||||
|
Bool antialiasedText;
|
||||||
|
|
||||||
unsigned int ignoredModifierMask; /* modifiers to ignore when typing txt */
|
unsigned int ignoredModifierMask; /* modifiers to ignore when typing txt */
|
||||||
|
|
||||||
struct W_Balloon *balloon;
|
struct W_Balloon *balloon;
|
||||||
|
|
||||||
|
|
||||||
struct W_Pixmap *checkButtonImageOn;
|
struct W_Pixmap *checkButtonImageOn;
|
||||||
struct W_Pixmap *checkButtonImageOff;
|
struct W_Pixmap *checkButtonImageOff;
|
||||||
|
|
||||||
@@ -404,7 +408,10 @@ typedef struct W_EventHandler {
|
|||||||
typedef struct _WINGsConfiguration {
|
typedef struct _WINGsConfiguration {
|
||||||
char *systemFont;
|
char *systemFont;
|
||||||
char *boldSystemFont;
|
char *boldSystemFont;
|
||||||
|
char *aaSystemFont;
|
||||||
|
char *aaBoldSystemFont;
|
||||||
int defaultFontSize;
|
int defaultFontSize;
|
||||||
|
Bool antialiasedText;
|
||||||
Bool useMultiByte;
|
Bool useMultiByte;
|
||||||
char *floppyPath;
|
char *floppyPath;
|
||||||
unsigned doubleClickDelay;
|
unsigned doubleClickDelay;
|
||||||
@@ -428,10 +435,10 @@ extern _WINGsConfiguration WINGsConfiguration;
|
|||||||
#define W_VIEW_DISPLAY(view) (view)->screen->display
|
#define W_VIEW_DISPLAY(view) (view)->screen->display
|
||||||
#define W_VIEW_SCREEN(view) (view)->screen
|
#define W_VIEW_SCREEN(view) (view)->screen
|
||||||
#define W_VIEW_DRAWABLE(view) (view)->window
|
#define W_VIEW_DRAWABLE(view) (view)->window
|
||||||
|
|
||||||
#define W_VIEW_WIDTH(view) (view)->size.width
|
#define W_VIEW_WIDTH(view) (view)->size.width
|
||||||
#define W_VIEW_HEIGHT(view) (view)->size.height
|
#define W_VIEW_HEIGHT(view) (view)->size.height
|
||||||
|
|
||||||
|
|
||||||
#define W_PIXEL(c) (c)->color.pixel
|
#define W_PIXEL(c) (c)->color.pixel
|
||||||
|
|
||||||
@@ -480,7 +487,7 @@ void W_ResizeView(W_View *view, unsigned int width, unsigned int height);
|
|||||||
void W_SetViewBackgroundColor(W_View *view, WMColor *color);
|
void W_SetViewBackgroundColor(W_View *view, WMColor *color);
|
||||||
|
|
||||||
void W_SetViewCursor(W_View *view, Cursor cursor);
|
void W_SetViewCursor(W_View *view, Cursor cursor);
|
||||||
|
|
||||||
void W_DrawRelief(W_Screen *scr, Drawable d, int x, int y, unsigned int width,
|
void W_DrawRelief(W_Screen *scr, Drawable d, int x, int y, unsigned int width,
|
||||||
unsigned int height, WMReliefType relief);
|
unsigned int height, WMReliefType relief);
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
|
|
||||||
|
|
||||||
#include "WINGsP.h"
|
#include "WINGsP.h"
|
||||||
|
#include "wconfig.h"
|
||||||
|
|
||||||
#include <X11/Xlocale.h>
|
#include <X11/Xlocale.h>
|
||||||
|
|
||||||
@@ -13,6 +14,10 @@ _WINGsConfiguration WINGsConfiguration;
|
|||||||
|
|
||||||
#define BOLD_SYSTEM_FONT "-*-helvetica-bold-r-normal-*-%d-*-*-*-*-*-*-*,-*-*-bold-r-*-*-%d-*-*-*-*-*-*-*"
|
#define BOLD_SYSTEM_FONT "-*-helvetica-bold-r-normal-*-%d-*-*-*-*-*-*-*,-*-*-bold-r-*-*-%d-*-*-*-*-*-*-*"
|
||||||
|
|
||||||
|
#define AASYSTEM_FONT "-*-arial-medium-r-normal-*-%d-*-*-*-*-*-*-*"
|
||||||
|
|
||||||
|
#define AABOLD_SYSTEM_FONT "-*-arial-bold-r-normal-*-%d-*-*-*-*-*-*-*"
|
||||||
|
|
||||||
#define FLOPPY_PATH "/floppy"
|
#define FLOPPY_PATH "/floppy"
|
||||||
|
|
||||||
|
|
||||||
@@ -60,6 +65,19 @@ W_ReadConfigurations(void)
|
|||||||
WINGsConfiguration.boldSystemFont =
|
WINGsConfiguration.boldSystemFont =
|
||||||
WMGetUDStringForKey(defaults, "BoldSystemFont");
|
WMGetUDStringForKey(defaults, "BoldSystemFont");
|
||||||
|
|
||||||
|
WINGsConfiguration.aaSystemFont =
|
||||||
|
WMGetUDStringForKey(defaults, "AASystemFont");
|
||||||
|
|
||||||
|
WINGsConfiguration.aaBoldSystemFont =
|
||||||
|
WMGetUDStringForKey(defaults, "AABoldSystemFont");
|
||||||
|
|
||||||
|
#ifdef XFT
|
||||||
|
WINGsConfiguration.antialiasedText =
|
||||||
|
WMGetUDBoolForKey(defaults, "AntialiasedText");
|
||||||
|
#else
|
||||||
|
WINGsConfiguration.antialiasedText = False;
|
||||||
|
#endif
|
||||||
|
|
||||||
WINGsConfiguration.useMultiByte = False;
|
WINGsConfiguration.useMultiByte = False;
|
||||||
str = WMGetUDStringForKey(defaults, "MultiByteText");
|
str = WMGetUDStringForKey(defaults, "MultiByteText");
|
||||||
if (str) {
|
if (str) {
|
||||||
@@ -121,6 +139,12 @@ W_ReadConfigurations(void)
|
|||||||
if (!WINGsConfiguration.boldSystemFont) {
|
if (!WINGsConfiguration.boldSystemFont) {
|
||||||
WINGsConfiguration.boldSystemFont = BOLD_SYSTEM_FONT;
|
WINGsConfiguration.boldSystemFont = BOLD_SYSTEM_FONT;
|
||||||
}
|
}
|
||||||
|
if (!WINGsConfiguration.aaSystemFont) {
|
||||||
|
WINGsConfiguration.aaSystemFont = AASYSTEM_FONT;
|
||||||
|
}
|
||||||
|
if (!WINGsConfiguration.aaBoldSystemFont) {
|
||||||
|
WINGsConfiguration.aaBoldSystemFont = AABOLD_SYSTEM_FONT;
|
||||||
|
}
|
||||||
if (!WINGsConfiguration.floppyPath) {
|
if (!WINGsConfiguration.floppyPath) {
|
||||||
WINGsConfiguration.floppyPath = FLOPPY_PATH;
|
WINGsConfiguration.floppyPath = FLOPPY_PATH;
|
||||||
}
|
}
|
||||||
|
|||||||
368
WINGs/wfont.c
368
WINGs/wfont.c
@@ -1,19 +1,25 @@
|
|||||||
|
|
||||||
|
#include "wconfig.h"
|
||||||
|
|
||||||
|
#ifdef XFT
|
||||||
|
# include <X11/Xft/Xft.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "WINGsP.h"
|
#include "WINGsP.h"
|
||||||
#include "wconfig.h"
|
|
||||||
|
|
||||||
|
|
||||||
#include <wraster.h>
|
#include <wraster.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <X11/Xlocale.h>
|
#include <X11/Xlocale.h>
|
||||||
|
|
||||||
|
|
||||||
static char *makeFontSetOfSize(char *fontset, int size);
|
static char *makeFontSetOfSize(char *fontset, int size);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* XLFD pattern matching */
|
/* XLFD pattern matching */
|
||||||
static char*
|
static char*
|
||||||
xlfd_get_element (const char *xlfd, int index)
|
getElementFromXLFD(const char *xlfd, int index)
|
||||||
{
|
{
|
||||||
const char *p = xlfd;
|
const char *p = xlfd;
|
||||||
while (*p != 0) {
|
while (*p != 0) {
|
||||||
@@ -33,15 +39,16 @@ xlfd_get_element (const char *xlfd, int index)
|
|||||||
return strdup("*");
|
return strdup("*");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* XLFD pattern matching */
|
/* XLFD pattern matching */
|
||||||
static char*
|
static char*
|
||||||
generalize_xlfd (const char *xlfd)
|
generalizeXLFD(const char *xlfd)
|
||||||
{
|
{
|
||||||
char *buf;
|
char *buf;
|
||||||
int len;
|
int len;
|
||||||
char *weight = xlfd_get_element(xlfd, 3);
|
char *weight = getElementFromXLFD(xlfd, 3);
|
||||||
char *slant = xlfd_get_element(xlfd, 4);
|
char *slant = getElementFromXLFD(xlfd, 4);
|
||||||
char *pxlsz = xlfd_get_element(xlfd, 7);
|
char *pxlsz = getElementFromXLFD(xlfd, 7);
|
||||||
|
|
||||||
#define Xstrlen(A) ((A)?strlen(A):0)
|
#define Xstrlen(A) ((A)?strlen(A):0)
|
||||||
len = Xstrlen(xlfd)+Xstrlen(weight)+Xstrlen(slant)+Xstrlen(pxlsz)*2+60;
|
len = Xstrlen(xlfd)+Xstrlen(weight)+Xstrlen(slant)+Xstrlen(pxlsz)*2+60;
|
||||||
@@ -85,7 +92,7 @@ W_CreateFontSetWithGuess(Display *dpy, char *xlfd, char ***missing,
|
|||||||
xlfd = fontnames[0];
|
xlfd = fontnames[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
xlfd = generalize_xlfd (xlfd);
|
xlfd = generalizeXLFD(xlfd);
|
||||||
|
|
||||||
if (*nmissing != 0) XFreeStringList(*missing);
|
if (*nmissing != 0) XFreeStringList(*missing);
|
||||||
if (fs != NULL) XFreeFontSet(dpy, fs);
|
if (fs != NULL) XFreeFontSet(dpy, fs);
|
||||||
@@ -96,6 +103,7 @@ W_CreateFontSetWithGuess(Display *dpy, char *xlfd, char ***missing,
|
|||||||
return fs;
|
return fs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
WMFont*
|
WMFont*
|
||||||
WMCreateFontSet(WMScreen *scrPtr, char *fontName)
|
WMCreateFontSet(WMScreen *scrPtr, char *fontName)
|
||||||
{
|
{
|
||||||
@@ -118,11 +126,12 @@ WMCreateFontSet(WMScreen *scrPtr, char *fontName)
|
|||||||
memset(font, 0, sizeof(WMFont));
|
memset(font, 0, sizeof(WMFont));
|
||||||
|
|
||||||
font->notFontSet = 0;
|
font->notFontSet = 0;
|
||||||
|
font->antialiased = 0;
|
||||||
|
|
||||||
font->screen = scrPtr;
|
font->screen = scrPtr;
|
||||||
|
|
||||||
font->font.set = W_CreateFontSetWithGuess(display, fontName, &missing,
|
font->font.set = W_CreateFontSetWithGuess(display, fontName, &missing,
|
||||||
&nmissing, &defaultString);
|
&nmissing, &defaultString);
|
||||||
if (nmissing > 0 && font->font.set) {
|
if (nmissing > 0 && font->font.set) {
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@@ -185,18 +194,18 @@ WMCreateNormalFont(WMScreen *scrPtr, char *fontName)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
memset(font, 0, sizeof(WMFont));
|
memset(font, 0, sizeof(WMFont));
|
||||||
|
|
||||||
font->notFontSet = 1;
|
font->notFontSet = 1;
|
||||||
|
font->antialiased = 0;
|
||||||
|
|
||||||
font->screen = scrPtr;
|
font->screen = scrPtr;
|
||||||
|
|
||||||
font->font.normal = XLoadQueryFont(display, fname);
|
font->font.normal = XLoadQueryFont(display, fname);
|
||||||
if (!font->font.normal) {
|
if (!font->font.normal) {
|
||||||
wfree(font);
|
wfree(font);
|
||||||
wfree(fname);
|
wfree(fname);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
font->height = font->font.normal->ascent+font->font.normal->descent;
|
font->height = font->font.normal->ascent+font->font.normal->descent;
|
||||||
font->y = font->font.normal->ascent;
|
font->y = font->font.normal->ascent;
|
||||||
|
|
||||||
@@ -210,18 +219,86 @@ WMCreateNormalFont(WMScreen *scrPtr, char *fontName)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
WMFont*
|
||||||
|
WMCreateAAFont(WMScreen *scrPtr, char *fontName)
|
||||||
|
{
|
||||||
|
#ifdef XFT
|
||||||
|
WMFont *font;
|
||||||
|
Display *display = scrPtr->display;
|
||||||
|
char *fname, *ptr;
|
||||||
|
|
||||||
|
if ((ptr = strchr(fontName, ','))) {
|
||||||
|
fname = wmalloc(ptr - fontName + 1);
|
||||||
|
strncpy(fname, fontName, ptr - fontName);
|
||||||
|
fname[ptr - fontName] = 0;
|
||||||
|
} else {
|
||||||
|
fname = wstrdup(fontName);
|
||||||
|
}
|
||||||
|
|
||||||
|
font = WMHashGet(scrPtr->fontCache, fname);
|
||||||
|
if (font) {
|
||||||
|
WMRetainFont(font);
|
||||||
|
wfree(fname);
|
||||||
|
return font;
|
||||||
|
}
|
||||||
|
|
||||||
|
font = malloc(sizeof(WMFont));
|
||||||
|
if (!font) {
|
||||||
|
wfree(fname);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
memset(font, 0, sizeof(WMFont));
|
||||||
|
|
||||||
|
font->notFontSet = 1;
|
||||||
|
font->antialiased = 1;
|
||||||
|
|
||||||
|
font->screen = scrPtr;
|
||||||
|
|
||||||
|
/* // Xft sux */
|
||||||
|
font->font.normal = XLoadQueryFont(display, fname);
|
||||||
|
if (!font->font.normal) {
|
||||||
|
wfree(font);
|
||||||
|
wfree(fname);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
XFreeFont(display, font->font.normal);
|
||||||
|
|
||||||
|
font->font.xft = XftFontOpenXlfd(display, scrPtr->screen, fname);
|
||||||
|
if (!font->font.xft) {
|
||||||
|
wfree(font);
|
||||||
|
wfree(fname);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
font->height = font->font.xft->ascent+font->font.xft->descent;
|
||||||
|
font->y = font->font.xft->ascent;
|
||||||
|
|
||||||
|
font->refCount = 1;
|
||||||
|
|
||||||
|
font->name = fname;
|
||||||
|
|
||||||
|
assert(WMHashInsert(scrPtr->fontCache, font->name, font)==NULL);
|
||||||
|
|
||||||
|
return font;
|
||||||
|
#else
|
||||||
|
return NULL;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
WMFont*
|
WMFont*
|
||||||
WMCreateFont(WMScreen *scrPtr, char *fontName)
|
WMCreateFont(WMScreen *scrPtr, char *fontName)
|
||||||
{
|
{
|
||||||
if (scrPtr->useMultiByte)
|
if (scrPtr->useMultiByte) {
|
||||||
return WMCreateFontSet(scrPtr, fontName);
|
return WMCreateFontSet(scrPtr, fontName);
|
||||||
else
|
} else if (scrPtr->antialiasedText) {
|
||||||
return WMCreateNormalFont(scrPtr, fontName);
|
/*// should revert to normal if this fails? */
|
||||||
|
return WMCreateAAFont(scrPtr, fontName);
|
||||||
|
} else {
|
||||||
|
return WMCreateNormalFont(scrPtr, fontName);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
WMFont*
|
WMFont*
|
||||||
WMRetainFont(WMFont *font)
|
WMRetainFont(WMFont *font)
|
||||||
{
|
{
|
||||||
@@ -240,9 +317,17 @@ WMReleaseFont(WMFont *font)
|
|||||||
|
|
||||||
font->refCount--;
|
font->refCount--;
|
||||||
if (font->refCount < 1) {
|
if (font->refCount < 1) {
|
||||||
if (font->notFontSet)
|
if (font->notFontSet) {
|
||||||
XFreeFont(font->screen->display, font->font.normal);
|
if (font->antialiased) {
|
||||||
else {
|
#ifdef XFT
|
||||||
|
XftFontClose(font->screen->display, font->font.xft);
|
||||||
|
#else
|
||||||
|
assert(False);
|
||||||
|
#endif
|
||||||
|
} else {
|
||||||
|
XFreeFont(font->screen->display, font->font.normal);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
XFreeFontSet(font->screen->display, font->font.set);
|
XFreeFontSet(font->screen->display, font->font.set);
|
||||||
}
|
}
|
||||||
if (font->name) {
|
if (font->name) {
|
||||||
@@ -282,75 +367,79 @@ WMDefaultBoldSystemFont(WMScreen *scrPtr)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
WMFont*
|
static WMFont*
|
||||||
WMSystemFontOfSize(WMScreen *scrPtr, int size)
|
makeSystemFontOfSize(WMScreen *scrPtr, int size, Bool bold)
|
||||||
{
|
{
|
||||||
WMFont *font;
|
WMFont *font;
|
||||||
char *fontSpec;
|
char *fontSpec, *aaFontSpec;
|
||||||
|
|
||||||
fontSpec = makeFontSetOfSize(WINGsConfiguration.systemFont, size);
|
if (bold) {
|
||||||
|
fontSpec = makeFontSetOfSize(WINGsConfiguration.boldSystemFont, size);
|
||||||
|
aaFontSpec = makeFontSetOfSize(WINGsConfiguration.aaBoldSystemFont, size);
|
||||||
|
} else {
|
||||||
|
fontSpec = makeFontSetOfSize(WINGsConfiguration.systemFont, size);
|
||||||
|
aaFontSpec = makeFontSetOfSize(WINGsConfiguration.aaSystemFont, size);
|
||||||
|
}
|
||||||
|
|
||||||
if (scrPtr->useMultiByte)
|
if (scrPtr->useMultiByte) {
|
||||||
font = WMCreateFontSet(scrPtr, fontSpec);
|
font = WMCreateFontSet(scrPtr, fontSpec);
|
||||||
else
|
} else if (scrPtr->antialiasedText) {
|
||||||
font = WMCreateNormalFont(scrPtr, fontSpec);
|
font = WMCreateAAFont(scrPtr, aaFontSpec);
|
||||||
|
} else {
|
||||||
|
font = WMCreateNormalFont(scrPtr, fontSpec);
|
||||||
|
}
|
||||||
|
|
||||||
if (!font) {
|
if (!font) {
|
||||||
if (scrPtr->useMultiByte) {
|
if (scrPtr->useMultiByte) {
|
||||||
wwarning(_("could not load font set %s. Trying fixed."), fontSpec);
|
wwarning(_("could not load font set %s. Trying fixed."), fontSpec);
|
||||||
font = WMCreateFontSet(scrPtr, "fixed");
|
font = WMCreateFontSet(scrPtr, "fixed");
|
||||||
if (!font) {
|
if (!font) {
|
||||||
font = WMCreateFontSet(scrPtr, "-*-fixed-medium-r-normal-*-14-*-*-*-*-*-*-*");
|
font = WMCreateFontSet(scrPtr, "-*-fixed-medium-r-normal-*-14-*-*-*-*-*-*-*");
|
||||||
}
|
}
|
||||||
} else {
|
} else if (scrPtr->antialiasedText) {
|
||||||
wwarning(_("could not load font %s. Trying fixed."), fontSpec);
|
wwarning(_("could not load font %s. Trying arial."), aaFontSpec);
|
||||||
font = WMCreateNormalFont(scrPtr, "fixed");
|
if (bold) {
|
||||||
}
|
font = WMCreateAAFont(scrPtr, "-*-arial-bold-r-normal-*-12-*-*-*-*-*-*-*");
|
||||||
if (!font) {
|
} else {
|
||||||
wwarning(_("could not load fixed font!"));
|
font = WMCreateAAFont(scrPtr, "-*-arial-medium-r-normal-*-12-*-*-*-*-*-*-*");
|
||||||
wfree(fontSpec);
|
}
|
||||||
return NULL;
|
if (!font) {
|
||||||
}
|
wwarning(_("could not load antialiased fonts. Reverting to normal fonts."));
|
||||||
|
font = WMCreateNormalFont(scrPtr, fontSpec);
|
||||||
|
if (!font) {
|
||||||
|
wwarning(_("could not load font %s. Trying fixed."), fontSpec);
|
||||||
|
font = WMCreateNormalFont(scrPtr, "fixed");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
wwarning(_("could not load font %s. Trying fixed."), fontSpec);
|
||||||
|
font = WMCreateNormalFont(scrPtr, "fixed");
|
||||||
|
}
|
||||||
|
if (!font) {
|
||||||
|
wwarning(_("could not load fixed font!"));
|
||||||
|
wfree(fontSpec);
|
||||||
|
wfree(aaFontSpec);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
wfree(fontSpec);
|
wfree(fontSpec);
|
||||||
|
wfree(aaFontSpec);
|
||||||
|
|
||||||
return font;
|
return font;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
WMFont*
|
||||||
|
WMSystemFontOfSize(WMScreen *scrPtr, int size)
|
||||||
|
{
|
||||||
|
return makeSystemFontOfSize(scrPtr, size, False);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
WMFont*
|
WMFont*
|
||||||
WMBoldSystemFontOfSize(WMScreen *scrPtr, int size)
|
WMBoldSystemFontOfSize(WMScreen *scrPtr, int size)
|
||||||
{
|
{
|
||||||
WMFont *font;
|
return makeSystemFontOfSize(scrPtr, size, True);
|
||||||
char *fontSpec;
|
|
||||||
|
|
||||||
fontSpec = makeFontSetOfSize(WINGsConfiguration.boldSystemFont, size);
|
|
||||||
|
|
||||||
if (scrPtr->useMultiByte)
|
|
||||||
font = WMCreateFontSet(scrPtr, fontSpec);
|
|
||||||
else
|
|
||||||
font = WMCreateNormalFont(scrPtr, fontSpec);
|
|
||||||
|
|
||||||
if (!font) {
|
|
||||||
if (scrPtr->useMultiByte) {
|
|
||||||
wwarning(_("could not load font set %s. Trying fixed."), fontSpec);
|
|
||||||
font = WMCreateFontSet(scrPtr, "fixed");
|
|
||||||
if (!font) {
|
|
||||||
font = WMCreateFontSet(scrPtr, "-*-fixed-medium-r-normal-*-14-*-*-*-*-*-*-*");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
wwarning(_("could not load font %s. Trying fixed."), fontSpec);
|
|
||||||
font = WMCreateNormalFont(scrPtr, "fixed");
|
|
||||||
}
|
|
||||||
if (!font) {
|
|
||||||
wwarning(_("could not load fixed font!"));
|
|
||||||
wfree(fontSpec);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
wfree(fontSpec);
|
|
||||||
|
|
||||||
return font;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -371,10 +460,22 @@ WMWidthOfString(WMFont *font, char *text, int length)
|
|||||||
{
|
{
|
||||||
wassertrv(font!=NULL, 0);
|
wassertrv(font!=NULL, 0);
|
||||||
wassertrv(text!=NULL, 0);
|
wassertrv(text!=NULL, 0);
|
||||||
|
|
||||||
if (font->notFontSet)
|
if (font->notFontSet) {
|
||||||
return XTextWidth(font->font.normal, text, length);
|
if (font->antialiased) {
|
||||||
else {
|
#ifdef XFT
|
||||||
|
XGlyphInfo extents;
|
||||||
|
|
||||||
|
XftTextExtents8(font->screen->display, font->font.xft,
|
||||||
|
(XftChar8 *)text, length, &extents);
|
||||||
|
return extents.xOff; /* don't ask :P */
|
||||||
|
#else
|
||||||
|
assert(False);
|
||||||
|
#endif
|
||||||
|
} else {
|
||||||
|
return XTextWidth(font->font.normal, text, length);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
XRectangle rect;
|
XRectangle rect;
|
||||||
XRectangle AIXsucks;
|
XRectangle AIXsucks;
|
||||||
|
|
||||||
@@ -392,12 +493,36 @@ WMDrawString(WMScreen *scr, Drawable d, WMColor *color, WMFont *font,
|
|||||||
{
|
{
|
||||||
wassertr(font!=NULL);
|
wassertr(font!=NULL);
|
||||||
|
|
||||||
XSetForeground(scr->display, scr->drawStringGC, W_PIXEL(color));
|
|
||||||
if (font->notFontSet) {
|
if (font->notFontSet) {
|
||||||
XSetFont(scr->display, scr->drawStringGC, font->font.normal->fid);
|
if (font->antialiased) {
|
||||||
XDrawString(scr->display, d, scr->drawStringGC, x, y + font->y, text,
|
#ifdef XFT
|
||||||
length);
|
XftColor xftcolor;
|
||||||
|
XftDraw *xftdraw;
|
||||||
|
|
||||||
|
xftcolor.color.red = color->color.red;
|
||||||
|
xftcolor.color.green = color->color.green;
|
||||||
|
xftcolor.color.blue = color->color.blue;
|
||||||
|
xftcolor.color.alpha = color->alpha;;
|
||||||
|
xftcolor.pixel = W_PIXEL(color);
|
||||||
|
|
||||||
|
/* //share if possible */
|
||||||
|
xftdraw = XftDrawCreate(scr->display, d, scr->visual, scr->colormap);
|
||||||
|
|
||||||
|
XftDrawString8(xftdraw, &xftcolor, font->font.xft,
|
||||||
|
x, y + font->y, text, length);
|
||||||
|
|
||||||
|
XftDrawDestroy(xftdraw);
|
||||||
|
#else
|
||||||
|
assert(False);
|
||||||
|
#endif
|
||||||
|
} else {
|
||||||
|
XSetFont(scr->display, scr->drawStringGC, font->font.normal->fid);
|
||||||
|
XSetForeground(scr->display, scr->drawStringGC, W_PIXEL(color));
|
||||||
|
XDrawString(scr->display, d, scr->drawStringGC, x, y + font->y,
|
||||||
|
text, length);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
|
XSetForeground(scr->display, scr->drawStringGC, W_PIXEL(color));
|
||||||
XmbDrawString(scr->display, d, font->font.set, scr->drawStringGC,
|
XmbDrawString(scr->display, d, font->font.set, scr->drawStringGC,
|
||||||
x, y + font->y, text, length);
|
x, y + font->y, text, length);
|
||||||
}
|
}
|
||||||
@@ -410,13 +535,48 @@ WMDrawImageString(WMScreen *scr, Drawable d, WMColor *color, WMColor *background
|
|||||||
{
|
{
|
||||||
wassertr(font != NULL);
|
wassertr(font != NULL);
|
||||||
|
|
||||||
XSetForeground(scr->display, scr->drawImStringGC, W_PIXEL(color));
|
|
||||||
XSetBackground(scr->display, scr->drawImStringGC, W_PIXEL(background));
|
|
||||||
if (font->notFontSet) {
|
if (font->notFontSet) {
|
||||||
XSetFont(scr->display, scr->drawImStringGC, font->font.normal->fid);
|
if (font->antialiased) {
|
||||||
XDrawImageString(scr->display, d, scr->drawImStringGC, x, y + font->y,
|
#ifdef XFT
|
||||||
text, length);
|
XftColor textColor;
|
||||||
|
XftColor bgColor;
|
||||||
|
XftDraw *xftdraw;
|
||||||
|
|
||||||
|
textColor.color.red = color->color.red;
|
||||||
|
textColor.color.green = color->color.green;
|
||||||
|
textColor.color.blue = color->color.blue;
|
||||||
|
textColor.color.alpha = color->alpha;;
|
||||||
|
textColor.pixel = W_PIXEL(color);
|
||||||
|
|
||||||
|
bgColor.color.red = background->color.red;
|
||||||
|
bgColor.color.green = background->color.green;
|
||||||
|
bgColor.color.blue = background->color.blue;
|
||||||
|
bgColor.color.alpha = background->alpha;;
|
||||||
|
bgColor.pixel = W_PIXEL(background);
|
||||||
|
|
||||||
|
/* //share if possible */
|
||||||
|
xftdraw = XftDrawCreate(scr->display, d, scr->visual, scr->colormap);
|
||||||
|
|
||||||
|
XftDrawRect(xftdraw, &bgColor, x, y,
|
||||||
|
WMWidthOfString(font, text, length), font->height);
|
||||||
|
|
||||||
|
XftDrawString8(xftdraw, &textColor, font->font.xft, x, y + font->y,
|
||||||
|
text, length);
|
||||||
|
|
||||||
|
XftDrawDestroy(xftdraw);
|
||||||
|
#else
|
||||||
|
assert(False);
|
||||||
|
#endif
|
||||||
|
} else {
|
||||||
|
XSetForeground(scr->display, scr->drawImStringGC, W_PIXEL(color));
|
||||||
|
XSetBackground(scr->display, scr->drawImStringGC, W_PIXEL(background));
|
||||||
|
XSetFont(scr->display, scr->drawImStringGC, font->font.normal->fid);
|
||||||
|
XDrawImageString(scr->display, d, scr->drawImStringGC,
|
||||||
|
x, y + font->y, text, length);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
|
XSetForeground(scr->display, scr->drawImStringGC, W_PIXEL(color));
|
||||||
|
XSetBackground(scr->display, scr->drawImStringGC, W_PIXEL(background));
|
||||||
XmbDrawImageString(scr->display, d, font->font.set, scr->drawImStringGC,
|
XmbDrawImageString(scr->display, d, font->font.set, scr->drawImStringGC,
|
||||||
x, y + font->y, text, length);
|
x, y + font->y, text, length);
|
||||||
}
|
}
|
||||||
@@ -482,7 +642,7 @@ changeFontProp(char *fname, char *newprop, int which)
|
|||||||
char *ptr, *bptr;
|
char *ptr, *bptr;
|
||||||
int part=0;
|
int part=0;
|
||||||
|
|
||||||
if(!fname || !prop)
|
if (!fname || !prop)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ptr = fname;
|
ptr = fname;
|
||||||
@@ -490,9 +650,9 @@ changeFontProp(char *fname, char *newprop, int which)
|
|||||||
while (*ptr) {
|
while (*ptr) {
|
||||||
if(*ptr == '-') {
|
if(*ptr == '-') {
|
||||||
*bptr = 0;
|
*bptr = 0;
|
||||||
if(part==which)
|
if (part==which)
|
||||||
bptr = prop;
|
bptr = prop;
|
||||||
else if(part==which+1)
|
else if (part==which+1)
|
||||||
bptr = after;
|
bptr = after;
|
||||||
*bptr++ = *ptr;
|
*bptr++ = *ptr;
|
||||||
part++;
|
part++;
|
||||||
@@ -512,15 +672,15 @@ WMNormalizeFont(WMScreen *scr, WMFont *font)
|
|||||||
WMFont *newfont=NULL;
|
WMFont *newfont=NULL;
|
||||||
char fname[256];
|
char fname[256];
|
||||||
|
|
||||||
if(!scr || !font)
|
if (!scr || !font)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
snprintf(fname, 255, font->name);
|
snprintf(fname, 255, "%s", font->name);
|
||||||
changeFontProp(fname, "medium", 2);
|
changeFontProp(fname, "medium", 2);
|
||||||
changeFontProp(fname, "r", 3);
|
changeFontProp(fname, "r", 3);
|
||||||
newfont = WMCreateNormalFont(scr, fname);
|
newfont = WMCreateNormalFont(scr, fname);
|
||||||
|
|
||||||
if(!newfont)
|
if (!newfont)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
return newfont;
|
return newfont;
|
||||||
@@ -533,14 +693,14 @@ WMStrengthenFont(WMScreen *scr, WMFont *font)
|
|||||||
WMFont *newfont=NULL;
|
WMFont *newfont=NULL;
|
||||||
char fname[256];
|
char fname[256];
|
||||||
|
|
||||||
if(!scr || !font)
|
if (!scr || !font)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
snprintf(fname, 255, font->name);
|
snprintf(fname, 255, "%s", font->name);
|
||||||
changeFontProp(fname, "bold", 2);
|
changeFontProp(fname, "bold", 2);
|
||||||
newfont = WMCreateNormalFont(scr, fname);
|
newfont = WMCreateNormalFont(scr, fname);
|
||||||
|
|
||||||
if(!newfont)
|
if (!newfont)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
return newfont;
|
return newfont;
|
||||||
@@ -553,14 +713,14 @@ WMUnstrengthenFont(WMScreen *scr, WMFont *font)
|
|||||||
WMFont *newfont=NULL;
|
WMFont *newfont=NULL;
|
||||||
char fname[256];
|
char fname[256];
|
||||||
|
|
||||||
if(!scr || !font)
|
if (!scr || !font)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
snprintf(fname, 255, font->name);
|
snprintf(fname, 255, "%s", font->name);
|
||||||
changeFontProp(fname, "medium", 2);
|
changeFontProp(fname, "medium", 2);
|
||||||
newfont = WMCreateNormalFont(scr, fname);
|
newfont = WMCreateNormalFont(scr, fname);
|
||||||
|
|
||||||
if(!newfont)
|
if (!newfont)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
return newfont;
|
return newfont;
|
||||||
@@ -573,14 +733,14 @@ WMEmphasizeFont(WMScreen *scr, WMFont *font)
|
|||||||
WMFont *newfont=NULL;
|
WMFont *newfont=NULL;
|
||||||
char fname[256];
|
char fname[256];
|
||||||
|
|
||||||
if(!scr || !font)
|
if (!scr || !font)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
snprintf(fname, 255, font->name);
|
snprintf(fname, 255, "%s", font->name);
|
||||||
changeFontProp(fname, "o", 3);
|
changeFontProp(fname, "o", 3);
|
||||||
newfont = WMCreateNormalFont(scr, fname);
|
newfont = WMCreateNormalFont(scr, fname);
|
||||||
|
|
||||||
if(!newfont)
|
if (!newfont)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
return newfont;
|
return newfont;
|
||||||
@@ -593,14 +753,14 @@ WMUnemphasizeFont(WMScreen *scr, WMFont *font)
|
|||||||
WMFont *newfont=NULL;
|
WMFont *newfont=NULL;
|
||||||
char fname[256];
|
char fname[256];
|
||||||
|
|
||||||
if(!scr || !font)
|
if (!scr || !font)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
snprintf(fname, 255, font->name);
|
snprintf(fname, 255, "%s", font->name);
|
||||||
changeFontProp(fname, "r", 3);
|
changeFontProp(fname, "r", 3);
|
||||||
newfont = WMCreateNormalFont(scr, fname);
|
newfont = WMCreateNormalFont(scr, fname);
|
||||||
|
|
||||||
if(!newfont)
|
if (!newfont)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
return newfont;
|
return newfont;
|
||||||
|
|||||||
@@ -749,6 +749,8 @@ WMCreateScreenWithRContext(Display *display, int screen, RContext *context)
|
|||||||
|
|
||||||
scrPtr->useMultiByte = WINGsConfiguration.useMultiByte;
|
scrPtr->useMultiByte = WINGsConfiguration.useMultiByte;
|
||||||
|
|
||||||
|
scrPtr->antialiasedText = WINGsConfiguration.antialiasedText;
|
||||||
|
|
||||||
scrPtr->normalFont = WMSystemFontOfSize(scrPtr,
|
scrPtr->normalFont = WMSystemFontOfSize(scrPtr,
|
||||||
WINGsConfiguration.defaultFontSize);
|
WINGsConfiguration.defaultFontSize);
|
||||||
|
|
||||||
|
|||||||
@@ -51,5 +51,6 @@ WPrefs_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.a
|
|||||||
WPrefs_LDADD = \
|
WPrefs_LDADD = \
|
||||||
$(top_builddir)/WINGs/libWINGs.a\
|
$(top_builddir)/WINGs/libWINGs.a\
|
||||||
$(top_builddir)/wrlib/libwraster.la \
|
$(top_builddir)/wrlib/libwraster.la \
|
||||||
|
@XFTLIBS@ \
|
||||||
@INTLIBS@
|
@INTLIBS@
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
{
|
{
|
||||||
SystemFont = "-*-helvetica-medium-r-normal-*-%d-*-*-*-*-*-*-*,-*-*-medium-r-normal-*-%d-*,-*-*-medium-r-normal-*-*-*";
|
SystemFont = "-*-helvetica-medium-r-normal-*-%d-*-*-*-*-*-*-*,-*-*-medium-r-normal-*-%d-*,-*-*-medium-r-normal-*-*-*";
|
||||||
BoldSystemFont = "-*-helvetica-bold-r-normal-*-%d-*-*-*-*-*-*-*,-*-*-bold-r-normal-*-%d-*,-*-*-medium-r-normal-*-*-*";
|
BoldSystemFont = "-*-helvetica-bold-r-normal-*-%d-*-*-*-*-*-*-*,-*-*-bold-r-normal-*-%d-*,-*-*-medium-r-normal-*-*-*";
|
||||||
|
AASystemFont = "-*-arial-medium-r-normal-*-%d-*-*-*-*-*-*-*";
|
||||||
|
AABoldSystemFont = "-*-arial-bold-r-normal-*-%d-*-*-*-*-*-*-*";
|
||||||
DefaultFontSize = 12;
|
DefaultFontSize = 12;
|
||||||
FloppyPath = "/floppy";
|
AntialiasedText = NO;
|
||||||
MultiByteText = AUTO;
|
MultiByteText = AUTO;
|
||||||
|
FloppyPath = "/floppy";
|
||||||
DoubleClickTime = 250;
|
DoubleClickTime = 250;
|
||||||
MouseWheelUp = Button4;
|
MouseWheelUp = Button4;
|
||||||
MouseWheelDown = Button5;
|
MouseWheelDown = Button5;
|
||||||
|
|||||||
47
configure.ac
47
configure.ac
@@ -85,11 +85,11 @@ dnl
|
|||||||
dnl Specify paths to look for libraries and headers
|
dnl Specify paths to look for libraries and headers
|
||||||
dnl ===============================================
|
dnl ===============================================
|
||||||
AC_ARG_WITH(libs-from,
|
AC_ARG_WITH(libs-from,
|
||||||
[ --with-libs-from pass compiler flags to look for libraries],
|
[ --with-libs-from pass compiler flags to look for libraries],
|
||||||
[lib_search_path="$withval $lib_search_path"])
|
[lib_search_path="$withval $lib_search_path"])
|
||||||
|
|
||||||
AC_ARG_WITH(incs-from,
|
AC_ARG_WITH(incs-from,
|
||||||
[ --with-incs-from pass compiler flags to look for header files],
|
[ --with-incs-from pass compiler flags to look for header files],
|
||||||
[inc_search_path="$withval $inc_search_path"])
|
[inc_search_path="$withval $inc_search_path"])
|
||||||
|
|
||||||
|
|
||||||
@@ -369,7 +369,7 @@ dnl ===============================
|
|||||||
|
|
||||||
|
|
||||||
AC_ARG_ENABLE(gnome,
|
AC_ARG_ENABLE(gnome,
|
||||||
[ --enable-gnome enable stuff needed for GNOME ],
|
[ --enable-gnome enable stuff needed for GNOME ],
|
||||||
[if test x$enableval = xyes; then
|
[if test x$enableval = xyes; then
|
||||||
AC_DEFINE(GNOME_STUFF, 1, [define if you want GNOME stuff support])
|
AC_DEFINE(GNOME_STUFF, 1, [define if you want GNOME stuff support])
|
||||||
gnome_on=yes
|
gnome_on=yes
|
||||||
@@ -377,7 +377,7 @@ AC_ARG_ENABLE(gnome,
|
|||||||
|
|
||||||
|
|
||||||
AC_ARG_ENABLE(kde,
|
AC_ARG_ENABLE(kde,
|
||||||
[ --enable-kde enable support for KDE window manager (kwm) hints ],
|
[ --enable-kde enable support for KDE window manager (kwm) hints ],
|
||||||
[if test x$enableval = xyes; then
|
[if test x$enableval = xyes; then
|
||||||
AC_DEFINE(KWM_HINTS, 1, [define if you want KDE hint support])
|
AC_DEFINE(KWM_HINTS, 1, [define if you want KDE hint support])
|
||||||
kde_on=yes
|
kde_on=yes
|
||||||
@@ -385,7 +385,7 @@ AC_ARG_ENABLE(kde,
|
|||||||
|
|
||||||
|
|
||||||
AC_ARG_ENABLE(openlook,
|
AC_ARG_ENABLE(openlook,
|
||||||
[ --enable-openlook enable support for OPEN LOOK(tm) (olwm) hints ],
|
[ --enable-openlook enable support for OPEN LOOK(tm) (olwm) hints ],
|
||||||
[if test x$enableval = xyes; then
|
[if test x$enableval = xyes; then
|
||||||
AC_DEFINE(OLWM_HINTS, 1, [define if you want OPEN LOOK(tm) hint support])
|
AC_DEFINE(OLWM_HINTS, 1, [define if you want OPEN LOOK(tm) hint support])
|
||||||
openlook_on=yes
|
openlook_on=yes
|
||||||
@@ -396,7 +396,7 @@ dnl
|
|||||||
dnl Disable some stuff that are duplicated in kde
|
dnl Disable some stuff that are duplicated in kde
|
||||||
dnl ---------------------------------------------
|
dnl ---------------------------------------------
|
||||||
AC_ARG_ENABLE(lite,
|
AC_ARG_ENABLE(lite,
|
||||||
[ --enable-lite disable some stuff (dont use it) ],
|
[ --enable-lite disable some stuff (dont use it) ],
|
||||||
[if test x$enableval = xyes; then
|
[if test x$enableval = xyes; then
|
||||||
LITE=yes
|
LITE=yes
|
||||||
AC_DEFINE(LITE, 1, [define if you want the 'lite' version])
|
AC_DEFINE(LITE, 1, [define if you want the 'lite' version])
|
||||||
@@ -460,7 +460,7 @@ dnl by MANOME Tomonori
|
|||||||
dnl ===========================================
|
dnl ===========================================
|
||||||
use_locale=yes
|
use_locale=yes
|
||||||
AC_ARG_ENABLE(locale,
|
AC_ARG_ENABLE(locale,
|
||||||
[ --disable-locale disable use of X locale support],
|
[ --disable-locale disable use of X locale support],
|
||||||
use_locale=no)
|
use_locale=no)
|
||||||
|
|
||||||
if test "$use_locale" = yes; then
|
if test "$use_locale" = yes; then
|
||||||
@@ -486,7 +486,7 @@ AC_CHECK_LIB(X11, XConvertCase,
|
|||||||
dnl XKB keyboard language status
|
dnl XKB keyboard language status
|
||||||
dnl ============================
|
dnl ============================
|
||||||
AC_ARG_ENABLE(modelock,
|
AC_ARG_ENABLE(modelock,
|
||||||
[ --enable-modelock XKB keyboard language status support],
|
[ --enable-modelock XKB keyboard language status support],
|
||||||
AC_DEFINE(XKB_MODELOCK, 1, [whether XKB language MODELOCK should be enabled]))
|
AC_DEFINE(XKB_MODELOCK, 1, [whether XKB language MODELOCK should be enabled]))
|
||||||
|
|
||||||
|
|
||||||
@@ -495,7 +495,7 @@ dnl Shape support
|
|||||||
dnl =============
|
dnl =============
|
||||||
shape=yes
|
shape=yes
|
||||||
AC_ARG_ENABLE(shape,
|
AC_ARG_ENABLE(shape,
|
||||||
[ --disable-shape disable shaped window extension support],
|
[ --disable-shape disable shaped window extension support],
|
||||||
shape=$enableval, shape=yes)
|
shape=$enableval, shape=yes)
|
||||||
|
|
||||||
added_xext=no
|
added_xext=no
|
||||||
@@ -508,11 +508,27 @@ if test "$shape" = yes; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
dnl Xft antialiased font support
|
||||||
|
dnl ============================
|
||||||
|
xft=yes
|
||||||
|
XFTLIBS=""
|
||||||
|
AC_ARG_ENABLE(xft,
|
||||||
|
[ --disable-xft disable Xft antialiased font support],
|
||||||
|
xft=$enableval, xft=yes)
|
||||||
|
|
||||||
|
if test "$xft" = yes; then
|
||||||
|
AC_CHECK_LIB(Xft, XftDrawCreate, [XFTLIBS="-lXft"
|
||||||
|
AC_SUBST(XFTLIBS)
|
||||||
|
AC_DEFINE(XFT, 1, [define if you want support for antialiased fonts (set by configure)])],
|
||||||
|
xft=no, $XLFLAGS $XLIBS)
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
dnl XINERAMA support
|
dnl XINERAMA support
|
||||||
dnl ================
|
dnl ================
|
||||||
xinerama=no
|
xinerama=no
|
||||||
#AC_ARG_ENABLE(xinerama,
|
#AC_ARG_ENABLE(xinerama,
|
||||||
#[ --disable-xinerama disable XInerama extension support],
|
#[ --disable-xinerama disable XInerama extension support],
|
||||||
# xinerama=$enableval, xinerama=yes)
|
# xinerama=$enableval, xinerama=yes)
|
||||||
|
|
||||||
if test "$xinerama" = yes; then
|
if test "$xinerama" = yes; then
|
||||||
@@ -568,7 +584,7 @@ dnl XPM Support
|
|||||||
dnl ===========
|
dnl ===========
|
||||||
xpm=yes
|
xpm=yes
|
||||||
AC_ARG_ENABLE(xpm,
|
AC_ARG_ENABLE(xpm,
|
||||||
[ --disable-xpm disable use of XPM pixmaps through libXpm],
|
[ --disable-xpm disable use of XPM pixmaps through libXpm],
|
||||||
xpm=$enableval, xpm=yes)
|
xpm=$enableval, xpm=yes)
|
||||||
|
|
||||||
if test "$xpm" = yes; then
|
if test "$xpm" = yes; then
|
||||||
@@ -604,7 +620,7 @@ dnl PNG Support
|
|||||||
dnl ===========
|
dnl ===========
|
||||||
png=yes
|
png=yes
|
||||||
AC_ARG_ENABLE(png,
|
AC_ARG_ENABLE(png,
|
||||||
[ --disable-png disable PNG support through libpng],
|
[ --disable-png disable PNG support through libpng],
|
||||||
png=$enableval, png=yes, png=no)
|
png=$enableval, png=yes, png=no)
|
||||||
|
|
||||||
|
|
||||||
@@ -627,7 +643,7 @@ dnl ============
|
|||||||
jpeg=yes
|
jpeg=yes
|
||||||
ljpeg=""
|
ljpeg=""
|
||||||
AC_ARG_ENABLE(jpeg,
|
AC_ARG_ENABLE(jpeg,
|
||||||
[ --disable-jpeg disable JPEG support through libjpeg],
|
[ --disable-jpeg disable JPEG support through libjpeg],
|
||||||
jpeg=$enableval, jpeg=yes, jpeg=no)
|
jpeg=$enableval, jpeg=yes, jpeg=no)
|
||||||
|
|
||||||
if test "$jpeg" = yes; then
|
if test "$jpeg" = yes; then
|
||||||
@@ -685,7 +701,7 @@ fi
|
|||||||
dnl TIFF Support
|
dnl TIFF Support
|
||||||
dnl ============
|
dnl ============
|
||||||
AC_ARG_ENABLE(tiff,
|
AC_ARG_ENABLE(tiff,
|
||||||
[ --disable-tiff disable use of TIFF images through libtiff],
|
[ --disable-tiff disable use of TIFF images through libtiff],
|
||||||
tif=$enableval, tif=yes, tif=no)
|
tif=$enableval, tif=yes, tif=no)
|
||||||
|
|
||||||
#
|
#
|
||||||
@@ -906,7 +922,7 @@ cat <<EOF >get-wings-flags
|
|||||||
|
|
||||||
WCFLAGS="$inc_search_path"
|
WCFLAGS="$inc_search_path"
|
||||||
WLFLAGS="$lib_search_path"
|
WLFLAGS="$lib_search_path"
|
||||||
WLIBS="-lWINGs -lwraster $GFXLIBS $XLIBS -lm $NETLIBS $INTLIBS"
|
WLIBS="-lWINGs -lwraster $GFXLIBS $XFTLIBS $XLIBS -lm $NETLIBS $INTLIBS"
|
||||||
|
|
||||||
usage="Usage: get-wings-flags #lp#--cflags#rp# #lp#--ldflags#rp# #lp#--libs#rp#"
|
usage="Usage: get-wings-flags #lp#--cflags#rp# #lp#--ldflags#rp# #lp#--libs#rp#"
|
||||||
|
|
||||||
@@ -1002,6 +1018,7 @@ echo "Installation path prefix: $prefix"
|
|||||||
echo "Installation path prefix for binaries: $_bindir"
|
echo "Installation path prefix for binaries: $_bindir"
|
||||||
echo "Installation path for WPrefs.app: $wprefsdir" | sed -e 's|\$(prefix)|'"$prefix|"
|
echo "Installation path for WPrefs.app: $wprefsdir" | sed -e 's|\$(prefix)|'"$prefix|"
|
||||||
echo "Graphic format libraries: $supported_gfx"
|
echo "Graphic format libraries: $supported_gfx"
|
||||||
|
echo "Antialiased font support for WINGs: $xft"
|
||||||
echo "Use assembly routines for wrlib: $asm_support"
|
echo "Use assembly routines for wrlib: $asm_support"
|
||||||
echo "Use inline MMX(tm) x86 assembly: $mmx_support"
|
echo "Use inline MMX(tm) x86 assembly: $mmx_support"
|
||||||
dnl echo "Sound support: yes"
|
dnl echo "Sound support: yes"
|
||||||
|
|||||||
@@ -116,6 +116,7 @@ wmaker_LDADD = \
|
|||||||
$(top_builddir)/WINGs/libWINGs.a\
|
$(top_builddir)/WINGs/libWINGs.a\
|
||||||
$(top_builddir)/wrlib/libwraster.la\
|
$(top_builddir)/wrlib/libwraster.la\
|
||||||
@XLIBS@ \
|
@XLIBS@ \
|
||||||
|
@XFTLIBS@ \
|
||||||
@INTLIBS@ \
|
@INTLIBS@ \
|
||||||
@DLLIBS@
|
@DLLIBS@
|
||||||
|
|
||||||
|
|||||||
@@ -38,17 +38,17 @@ geticonset_LDADD= $(top_builddir)/WINGs/libWUtil.a $(liblist)
|
|||||||
wmagnify_LDADD = \
|
wmagnify_LDADD = \
|
||||||
$(top_builddir)/WINGs/libWINGs.a \
|
$(top_builddir)/WINGs/libWINGs.a \
|
||||||
$(top_builddir)/wrlib/libwraster.la \
|
$(top_builddir)/wrlib/libwraster.la \
|
||||||
@INTLIBS@ @DLLIBS@
|
@XFTLIBS@ @INTLIBS@ @DLLIBS@
|
||||||
|
|
||||||
wmsetup_LDADD = \
|
wmsetup_LDADD = \
|
||||||
$(top_builddir)/WINGs/libWINGs.a \
|
$(top_builddir)/WINGs/libWINGs.a \
|
||||||
$(top_builddir)/wrlib/libwraster.la \
|
$(top_builddir)/wrlib/libwraster.la \
|
||||||
@INTLIBS@ @DLLIBS@
|
@XFTLIBS@ @INTLIBS@ @DLLIBS@
|
||||||
|
|
||||||
wmsetbg_LDADD = \
|
wmsetbg_LDADD = \
|
||||||
$(top_builddir)/WINGs/libWINGs.a \
|
$(top_builddir)/WINGs/libWINGs.a \
|
||||||
$(top_builddir)/wrlib/libwraster.la \
|
$(top_builddir)/wrlib/libwraster.la \
|
||||||
@INTLIBS@ @DLLIBS@
|
@XFTLIBS@ @INTLIBS@ @DLLIBS@
|
||||||
|
|
||||||
CLEANFILES = wmaker.inst wmchlocale
|
CLEANFILES = wmaker.inst wmchlocale
|
||||||
|
|
||||||
|
|||||||
@@ -79,11 +79,11 @@ extern "C" {
|
|||||||
/* standard colormap usage */
|
/* standard colormap usage */
|
||||||
#define RC_StandardColormap (1<<7)
|
#define RC_StandardColormap (1<<7)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* std colormap usage/creation modes */
|
/* std colormap usage/creation modes */
|
||||||
enum {
|
enum {
|
||||||
RUseStdColormap, /* default. fallbacks to RIgnore.. if
|
RUseStdColormap, /* default. fallbacks to RIgnore.. if
|
||||||
@@ -91,7 +91,7 @@ enum {
|
|||||||
RCreateStdColormap,
|
RCreateStdColormap,
|
||||||
RIgnoreStdColormap
|
RIgnoreStdColormap
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct RContextAttributes {
|
typedef struct RContextAttributes {
|
||||||
|
|||||||
Reference in New Issue
Block a user