summaryrefslogtreecommitdiff
path: root/Build/source/libs/t1lib/t1win32.c
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/libs/t1lib/t1win32.c')
-rw-r--r--Build/source/libs/t1lib/t1win32.c791
1 files changed, 0 insertions, 791 deletions
diff --git a/Build/source/libs/t1lib/t1win32.c b/Build/source/libs/t1lib/t1win32.c
deleted file mode 100644
index 2e1608b96fe..00000000000
--- a/Build/source/libs/t1lib/t1win32.c
+++ /dev/null
@@ -1,791 +0,0 @@
-/*--------------------------------------------------------------------------
- ----- File: t1win32.c
- ----- Author: Rainer Menzner (rmz@neuroinformatik.ruhr-uni-bochum.de)
- modified for win32 by Fabrice Popineau (Fabrice.Popineau@supelec.fr)
- ----- Date: 1999-06-24
- ----- Description: This file is part of the t1-library. It contains
- functions for generating glyphs with data in
- Win32 dib format.
- ----- Copyright: t1lib is copyrighted (c) Rainer Menzner, 1996-1998.
- As of version 0.5, t1lib is distributed under the
- GNU General Public Library Lincense. The
- conditions can be found in the files LICENSE and
- LGPL, which should reside in the toplevel
- directory of the distribution. Please note that
- there are parts of t1lib that are subject to
- other licenses:
- The parseAFM-package is copyrighted by Adobe Systems
- Inc.
- The type1 rasterizer is copyrighted by IBM and the
- X11-consortium.
- ----- Warranties: Of course, there's NO WARRANTY OF ANY KIND :-)
- ----- Credits: I want to thank IBM and the X11-consortium for making
- their rasterizer freely available.
- Also thanks to Piet Tutelaers for his ps2pk, from
- which I took the rasterizer sources in a format
- independent from X11.
- Thanks to all people who make free software living!
---------------------------------------------------------------------------*/
-
-#define T1WIN32_C
-
-
-#include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <stdlib.h>
-#include <math.h>
-
-#include <windows.h>
-
-#include "../type1/types.h"
-#include "parseAFM.h"
-#include "../type1/objects.h"
-#include "../type1/spaces.h"
-#include "../type1/util.h"
-#include "../type1/fontfcn.h"
-#include "../type1/regions.h"
-
-#include "t1types.h"
-#include "t1extern.h"
-#include "t1set.h"
-#include "t1aaset.h"
-#include "t1load.h"
-#include "t1finfo.h"
-#include "t1misc.h"
-#include "t1win32.h"
-#include "t1base.h"
-
-
-
-#define T1GCMASK GCForeground | GCBackground
-
-/* As a fall back */
-#ifndef T1_AA_TYPE16
-#define T1_AA_TYPE16 short
-#endif
-#ifndef T1_AA_TYPE32
-#define T1_AA_TYPE32 int
-#endif
-
-
-
-/* The three important X11 parameters t1lib has to deal with: */
-static HDC *T1_display=NULL; /* Must be accessible from t1delete.c */
-static Colormap T1_colormap;
-static unsigned int T1_depth;
-static int T1_byte_order;
-static int lastlevel=0;
-static unsigned long oldfg_n=0, oldbg_n=0, oldfg_l=0, oldbg_l=0;
-static unsigned long oldfg_h=0, oldbg_h=0, oldfg=0, oldbg=0;
-
-
-extern int T1aa_SmartOn; /* from t1aaset.c */
-extern float T1aa_smartlimit1;
-extern float T1aa_smartlimit2;
-
-
-
-static XColor aacolors[AAMAXPLANES];
-static unsigned long aapixels[AAMAXPLANES];
-
-
-/* The following parameter determines whether t1lib will use logical
- positioning of chars and string (place the origin at specified
- destination-point) or absolute positioning with respect to the
- origin (upper left corner) of the generated bitmap/pixmap. */
-static int T1_lposition=1;
-
-
-
-/* T1_SetX11Params(): Set X11-parameters which t1lib has to know in order
- to properly generate pixmaps from characters */
-int T1_SetWin32Params( HDC hDc,
- unsigned int depth,
- Colormap colormap)
-{
-
- T1_display =display;
- T1_visual =visual;
- T1_depth =depth;
- T1_colormap =colormap;
-
- if (T1_CheckEndian()==0)
- T1_byte_order=0;
- else
- T1_byte_order=1;
-
- /* For bug hunting: */
- if (ImageByteOrder( T1_display)==0)
- T1_PrintLog( "T1_SetX11Params()",
- "X-Server uses Little Endian data representation",
- T1LOG_DEBUG);
- else
- T1_PrintLog( "T1_SetX11Params()",
- "X-Server uses Big Endian data representation",
- T1LOG_DEBUG);
-
- return(0);
-}
-
-
-
-/* T1_SetCharX(): Generate an object of type GLYPH, i.e, a glyph with
- a pixmap ID instead of a pointer to a bitmap: */
-
-GLYPH *T1_SetCharX( HDC hDc, int mode, int x_dest, int y_dest,
- int FontID, char charcode,
- float size, T1_TMATRIX *transform)
-{
- GLYPH *pglyph;
- static GLYPH xglyph={NULL,{0,0,0,0,0,0},NULL,0};
-
- int height, width;
- Pixmap clipmask=0;
- int opaque;
-
-
- xglyph.metrics.leftSideBearing=0;
- xglyph.metrics.rightSideBearing=0;
- xglyph.metrics.advanceX=0;
- xglyph.metrics.advanceY=0;
- xglyph.metrics.ascent=0;
- xglyph.metrics.descent=0;
- xglyph.pFontCacheInfo=NULL;
-
-
- opaque=mode;
-
-
- if ((pglyph=T1_SetChar( FontID, charcode, size, transform))==NULL){
- T1_PrintLog( "T1_SetCharX()",
- "T1_SetChar() returned NULL-pointer!",
- T1LOG_WARNING);
- return(NULL);
- }
-
- /* Check for empty bitmap */
- if (pglyph->bits==NULL) {
- xglyph=*pglyph;
- return( &xglyph);
- }
-
- width=pglyph->metrics.rightSideBearing-pglyph->metrics.leftSideBearing;
- height=pglyph->metrics.ascent-pglyph->metrics.descent;
-
-
- clipmask=XCreateBitmapFromData( T1_display,
- d,
- (char *)pglyph->bits,
- PAD(width, pFontBase->bitmap_pad),
- height
- );
-
- /* Correct position */
- if (T1_lposition){
- x_dest += pglyph->metrics.leftSideBearing;
- y_dest -= pglyph->metrics.ascent;
- }
-
- if (opaque==0){
- XSetClipMask(T1_display, gc, clipmask);
- XSetClipOrigin(T1_display, gc, x_dest, y_dest);
- }
-
- XCopyPlane( T1_display, clipmask, d, gc, 0, 0,
- width, height, x_dest, y_dest, 0x01);
-
- if (clipmask){
- XFreePixmap( T1_display, clipmask);
- clipmask=0;
- XSetClipMask(T1_display, gc, None);
- XSetClipOrigin(T1_display, gc, 0, 0);
- }
-
- pglyph->bits=NULL; /* Since XDestroyImage() free's this also! */
- xglyph.metrics.leftSideBearing=pglyph->metrics.leftSideBearing;
- xglyph.metrics.rightSideBearing=pglyph->metrics.rightSideBearing;
- xglyph.metrics.advanceX=pglyph->metrics.advanceX;
- xglyph.metrics.advanceY=pglyph->metrics.advanceY;
- xglyph.metrics.ascent=pglyph->metrics.ascent;
- xglyph.metrics.descent=pglyph->metrics.descent;
- xglyph.bpp=pglyph->bpp;
-
- return( &xglyph);
-
-
-}
-
-
-
-/* T1_SetStringX(...): Draw a string of characters into an X11 drawable */
-GLYPH *T1_SetStringX( HDC hDc, int mode, int x_dest, int y_dest,
- int FontID, char *string, int len,
- long spaceoff, int modflag, float size,
- T1_TMATRIX *transform)
-{
- GLYPH *pglyph;
- static GLYPH xglyph={NULL,{0,0,0,0,0,0},NULL,0};
-
- int height, width;
- Pixmap clipmask=0;
- int opaque;
-
-
- xglyph.metrics.leftSideBearing=0;
- xglyph.metrics.rightSideBearing=0;
- xglyph.metrics.advanceX=0;
- xglyph.metrics.advanceY=0;
- xglyph.metrics.ascent=0;
- xglyph.metrics.descent=0;
- xglyph.pFontCacheInfo=NULL;
-
-
- opaque=mode;
-
-
- if ((pglyph=T1_SetString( FontID, string, len,
- spaceoff, modflag, size,
- transform))==NULL){
- T1_PrintLog( "T1_SetStringX()",
- "T1_SetString() returned NULL-pointer!",
- T1LOG_WARNING);
- return(NULL);
- }
-
- /* Check for empty bitmap */
- if (pglyph->bits==NULL) {
- xglyph=*pglyph;
- return( &xglyph);
- }
-
- width=pglyph->metrics.rightSideBearing-pglyph->metrics.leftSideBearing;
- height=pglyph->metrics.ascent-pglyph->metrics.descent;
-
- clipmask=XCreateBitmapFromData( T1_display,
- d,
- (char *)pglyph->bits,
- PAD(width, pFontBase->bitmap_pad), /* width */
- height
- );
-
- /* Correct position */
- if (T1_lposition){
- x_dest += pglyph->metrics.leftSideBearing;
- y_dest -= pglyph->metrics.ascent;
- }
-
- if (opaque==0){
- XSetClipMask(T1_display, gc, clipmask);
- XSetClipOrigin(T1_display, gc, x_dest, y_dest);
- }
-
- XCopyPlane( T1_display, clipmask, d, gc, 0, 0,
- width, height, x_dest, y_dest, 0x01);
-
- if (clipmask){
- XFreePixmap( T1_display, clipmask);
- clipmask=0;
- XSetClipMask(T1_display, gc, None);
- XSetClipOrigin(T1_display, gc, 0, 0);
- }
-
- pglyph->bits=NULL; /* Since XDestroyImage() free's this also! */
- xglyph.metrics.leftSideBearing=pglyph->metrics.leftSideBearing;
- xglyph.metrics.rightSideBearing=pglyph->metrics.rightSideBearing;
- xglyph.metrics.advanceX=pglyph->metrics.advanceX;
- xglyph.metrics.advanceY=pglyph->metrics.advanceY;
- xglyph.metrics.ascent=pglyph->metrics.ascent;
- xglyph.metrics.descent=pglyph->metrics.descent;
- xglyph.bpp=pglyph->bpp;
-
- return( &xglyph);
-
-
-}
-
-
-
-/* T1_AASetCharX(): Generate an object of type GLYPH, i.e, a glyph with
- a pixmap ID instead of a pointer to a bitmap: */
-
-GLYPH *T1_AASetCharX( HDC hDc, int mode, int x_dest, int y_dest,
- int FontID, char charcode,
- float size, T1_TMATRIX *transform)
-{
- int j, k;
-
- GLYPH *pglyph;
- XImage *ximage;
-
- static GLYPH xglyph={NULL,{0,0,0,0,0,0},NULL,0};
-
- int height, width, width_pad;
-
- XGCValues xgcvalues;
- static unsigned long fg, bg, oldfg=0, oldbg=0;
- static unsigned long oldfg_l=0, oldbg_l=0, oldfg_h=0, oldbg_h=0;
-
- Pixmap clipmask=0;
- int clipmask_h, clipmask_v, line_off;
- char *clipmask_ptr;
-
- int opaque;
-
-
-
- xglyph.metrics.leftSideBearing=0;
- xglyph.metrics.rightSideBearing=0;
- xglyph.metrics.advanceX=0;
- xglyph.metrics.advanceY=0;
- xglyph.metrics.ascent=0;
- xglyph.metrics.descent=0;
- xglyph.pFontCacheInfo=NULL;
-
-
- opaque=mode;
-
- xglyph.bpp=T1_depth;
-
- /* In order to be able to contruct the pixmap we need to know
- foreground and background color as well the copy function */
- XGetGCValues( T1_display, gc, T1GCMASK, &xgcvalues);
- fg=xgcvalues.foreground;
- bg=xgcvalues.background;
-
-
- /* At this point we must compute the colors that are needed to do
- antialiasing between fore- and background. The following function
- fills the static aacolors */
- if (T1aa_SmartOn==0)
- j=T1_AAGetLevel();
- else if (size>=T1aa_smartlimit2)
- j=1;
- else if (size>=T1aa_smartlimit1)
- j=2;
- else
- j=4;
- if ( j!=lastlevel || fg!=oldfg || bg!=oldbg ){
- switch ( j){
- case 1:
- if ( fg!=oldfg_n || bg!=oldbg_n){
- oldfg_n=fg;
- oldbg_n=bg;
- /* computing colors is not necessary here */
- T1_AANSetGrayValues( bg, fg);
- }
- break;
- case 2:
- if ( fg!=oldfg_l || bg!=oldbg_l){
- oldfg_l=fg;
- oldbg_l=bg;
- T1_ComputeAAColorsX( fg, bg, AAMAXPLANES);
- T1_AASetGrayValues(aapixels[0], /* white */
- aapixels[4],
- aapixels[8],
- aapixels[12],
- aapixels[16] ); /* black */
- }
- break;
- case 4:
- if ( fg!=oldfg_h || bg!=oldbg_h){
- oldfg_h=fg;
- oldbg_h=bg;
- T1_ComputeAAColorsX( fg, bg, AAMAXPLANES);
- T1_AAHSetGrayValues( aapixels);
- }
- break;
- }
- lastlevel=j;
- oldfg=fg;
- oldbg=bg;
- }
-
- if ((pglyph=T1_AASetChar( FontID, charcode, size,
- transform))==NULL){
- T1_PrintLog( "T1_AASetCharX()",
- "T1_AASetChar() returned NULL-pointer!",
- T1LOG_WARNING);
- return(NULL);
- }
-
- /* Check for empty bitmap */
- if (pglyph->bits==NULL) {
- xglyph=*pglyph;
- return( &xglyph);
- }
-
- width=pglyph->metrics.rightSideBearing-pglyph->metrics.leftSideBearing;
- height=pglyph->metrics.ascent-pglyph->metrics.descent;
-
-
- /* Correct position */
- if (T1_lposition){
- x_dest += pglyph->metrics.leftSideBearing;
- y_dest -= pglyph->metrics.ascent;
- }
-
- if (opaque==0){
- clipmask_v=height;
- clipmask_h=width;
- width_pad=PAD(width*T1aa_bpp, pFontBase->bitmap_pad)/T1aa_bpp;
- clipmask_ptr=(char *)calloc((PAD(clipmask_h, 8)>>3) * clipmask_v, sizeof( char));
- if (clipmask_ptr==NULL){
- T1_errno=T1ERR_ALLOC_MEM;
- return(NULL);
- }
- /* Note: We pad the clipmask always to byte boundary */
- if (pglyph->bpp==8)
- for ( k=0; k<clipmask_v; k++){
- line_off=k*(PAD(clipmask_h, 8)>>3);
- for (j=0; j<clipmask_h; j++){
- if (((char *)(pglyph->bits))[k*width_pad+j]!=bg)
- clipmask_ptr[line_off+(j>>3)] |= (0x01<<(j%8));
- }
- }
- else if (pglyph->bpp==16)
- for ( k=0; k<clipmask_v; k++){
- line_off=k*(PAD(clipmask_h, 8)>>3);
- for (j=0; j<clipmask_h; j++){
- if (((T1_AA_TYPE16 *)(pglyph->bits))[k*width_pad+j]!=(T1_AA_TYPE16)bg)
- clipmask_ptr[line_off+(j>>3)] |= (0x01<<(j%8));
- }
- }
- else
- for ( k=0; k<clipmask_v; k++){
- line_off=k*(PAD(clipmask_h, 8)>>3);
- for (j=0; j<clipmask_h; j++){
- if (((T1_AA_TYPE32 *)(pglyph->bits))[k*width_pad+j]!=(T1_AA_TYPE32)bg)
- clipmask_ptr[line_off+(j>>3)] |= (0x01<<(j%8));
- }
- }
-
- clipmask=XCreateBitmapFromData( T1_display,
- d,
- (char *)clipmask_ptr,
- width,
- height
- );
- free( clipmask_ptr);
- XSetClipMask(T1_display, gc, clipmask);
- XSetClipOrigin(T1_display, gc, x_dest, y_dest);
-
- }
- ximage=XCreateImage( T1_display,
- T1_visual,
- T1_depth,
- ZPixmap, /* XYBitmap or XYPixmap */
- 0, /* No offset */
- (char *)pglyph->bits,
- width,
- height,
- pFontBase->bitmap_pad,
- 0 /*PAD(width,8)/8*/ /* number of bytes per line */
- );
- ximage->byte_order=T1_byte_order;
- XPutImage(T1_display,
- d,
- gc,
- ximage,
- 0,
- 0,
- x_dest,
- y_dest,
- width,
- height
- );
- XDestroyImage(ximage);
- if (clipmask){
- XFreePixmap( T1_display, clipmask);
- clipmask=0;
- XSetClipMask(T1_display, gc, None);
- XSetClipOrigin(T1_display, gc, 0, 0);
- }
-
- pglyph->bits=NULL; /* Since XDestroyImage() free's this also! */
- xglyph.metrics.leftSideBearing=pglyph->metrics.leftSideBearing;
- xglyph.metrics.rightSideBearing=pglyph->metrics.rightSideBearing;
- xglyph.metrics.advanceX=pglyph->metrics.advanceX;
- xglyph.metrics.advanceY=pglyph->metrics.advanceY;
- xglyph.metrics.ascent=pglyph->metrics.ascent;
- xglyph.metrics.descent=pglyph->metrics.descent;
- xglyph.bpp=pglyph->bpp;
-
- return( &xglyph);
-
-
-}
-
-
-
-/* T1_AASetStringX(...): Draw a string of characters into an X11 drawable */
-GLYPH *T1_AASetStringX( HDC hDc, int mode, int x_dest, int y_dest,
- int FontID, char *string, int len,
- long spaceoff, int modflag, float size,
- T1_TMATRIX *transform)
-{
- int j, k;
-
- GLYPH *pglyph;
- XImage *ximage;
-
-
- static GLYPH xglyph={NULL,{0,0,0,0,0,0},NULL,0};
-
- int height, width, width_pad;
-
- XGCValues xgcvalues;
- static unsigned long fg, bg;
-
-
- Pixmap clipmask=0;
- int clipmask_h, clipmask_v, line_off;
- char *clipmask_ptr;
-
- int opaque;
-
-
- xglyph.metrics.leftSideBearing=0;
- xglyph.metrics.rightSideBearing=0;
- xglyph.metrics.advanceX=0;
- xglyph.metrics.advanceY=0;
- xglyph.metrics.ascent=0;
- xglyph.metrics.descent=0;
- xglyph.pFontCacheInfo=NULL;
-
-
- opaque=mode;
-
-
- /* In order to be able to contruct the pixmap we need to know
- foreground and background color as well the copy function */
- XGetGCValues( T1_display, gc, T1GCMASK, &xgcvalues);
- fg=xgcvalues.foreground;
- bg=xgcvalues.background;
-
- xglyph.bpp=T1_depth;
-
- /* At this point we must compute the colors that are needed to do
- antialiasing between fore- and background. The following function
- fills the static aacolors */
- if (T1aa_SmartOn==0)
- j=T1_AAGetLevel();
- else if (size>=T1aa_smartlimit2)
- j=1;
- else if (size>=T1aa_smartlimit1)
- j=2;
- else
- j=4;
- if ( j!=lastlevel || fg!=oldfg || bg!=oldbg ){
- switch ( j){
- case 1:
- if ( fg!=oldfg_n || bg!=oldbg_n){
- oldfg_n=fg;
- oldbg_n=bg;
- /* computing colors is not necessary here */
- T1_AANSetGrayValues( bg, fg);
- }
- break;
- case 2:
- if ( fg!=oldfg_l || bg!=oldbg_l){
- oldfg_l=fg;
- oldbg_l=bg;
- T1_ComputeAAColorsX( fg, bg, AAMAXPLANES);
- T1_AASetGrayValues(aapixels[0], /* white */
- aapixels[4],
- aapixels[8],
- aapixels[12],
- aapixels[16] ); /* black */
- }
- break;
- case 4:
- if ( fg!=oldfg_h || bg!=oldbg_h){
- oldfg_h=fg;
- oldbg_h=bg;
- T1_ComputeAAColorsX( fg, bg, AAMAXPLANES);
- T1_AAHSetGrayValues( aapixels);
- }
- break;
- }
- lastlevel=j;
- oldfg=fg;
- oldbg=bg;
- }
-
-
- if ((pglyph=T1_AASetString( FontID, string, len,
- spaceoff, modflag, size,
- transform))==NULL){
- T1_PrintLog( "T1_AASetStringX()",
- "T1_AASetString() returned NULL-pointer!",
- T1LOG_WARNING);
- return(NULL);
- }
-
- /* Check for empty bitmap */
- if (pglyph->bits==NULL) {
- xglyph=*pglyph;
- return( &xglyph);
- }
-
- width=pglyph->metrics.rightSideBearing-pglyph->metrics.leftSideBearing;
- height=pglyph->metrics.ascent-pglyph->metrics.descent;
-
-
- /* Correct position */
- if (T1_lposition){
- x_dest += pglyph->metrics.leftSideBearing;
- y_dest -= pglyph->metrics.ascent;
- }
-
- if (opaque==0){
- clipmask_v=height;
- clipmask_h=width;
- width_pad=PAD(width*T1aa_bpp, pFontBase->bitmap_pad)/T1aa_bpp;
- clipmask_ptr=(char *)calloc((PAD(clipmask_h, 8)>>3) * clipmask_v, sizeof( char));
- if (clipmask_ptr==NULL){
- T1_errno=T1ERR_ALLOC_MEM;
- return(NULL);
- }
- /* Note: We pad the clipmask always to byte boundary */
- if (pglyph->bpp==8)
- for ( k=0; k<clipmask_v; k++){
- line_off=k*(PAD(clipmask_h, 8)>>3);
- for (j=0; j<clipmask_h; j++){
- if (((char *)(pglyph->bits))[k*width_pad+j]!=bg)
- clipmask_ptr[line_off+(j>>3)] |= (0x01<<(j%8));
- }
- }
- else if (pglyph->bpp==16)
- for ( k=0; k<clipmask_v; k++){
- line_off=k*(PAD(clipmask_h, 8)>>3);
- for (j=0; j<clipmask_h; j++){
- if (((T1_AA_TYPE16 *)(pglyph->bits))[k*width_pad+j]!=(T1_AA_TYPE16)bg)
- clipmask_ptr[line_off+(j>>3)] |= (0x01<<(j%8));
- }
- }
- else
- for ( k=0; k<clipmask_v; k++){
- line_off=k*(PAD(clipmask_h, 8)>>3);
- for (j=0; j<clipmask_h; j++){
- if (((T1_AA_TYPE32 *)(pglyph->bits))[k*width_pad+j]!=(T1_AA_TYPE32)bg)
- clipmask_ptr[line_off+(j>>3)] |= (0x01<<(j%8));
- }
- }
-
- clipmask=XCreateBitmapFromData( T1_display,
- d,
- (char *)clipmask_ptr,
- width,
- height
- );
- free( clipmask_ptr);
- XSetClipMask(T1_display, gc, clipmask);
- XSetClipOrigin(T1_display, gc, x_dest, y_dest);
-
- }
- ximage=XCreateImage( T1_display,
- T1_visual,
- T1_depth,
- ZPixmap, /* XYBitmap or XYPixmap */
- 0, /* No offset */
- (char *)pglyph->bits,
- width,
- height,
- pFontBase->bitmap_pad, /* lines padded to bytes */
- 0 /*PAD(width,8)/8*/ /* number of bytes per line */
- );
- ximage->byte_order=T1_byte_order;
- XPutImage(T1_display,
- d,
- gc,
- ximage,
- 0,
- 0,
- x_dest,
- y_dest,
- width,
- height
- );
- XDestroyImage(ximage);
- if (clipmask){
- XFreePixmap( T1_display, clipmask);
- clipmask=0;
- XSetClipMask(T1_display, gc, None);
- XSetClipOrigin(T1_display, gc, 0, 0);
- }
-
- pglyph->bits=NULL; /* Since XDestroyImage() free's this also! */
- xglyph.metrics.leftSideBearing=pglyph->metrics.leftSideBearing;
- xglyph.metrics.rightSideBearing=pglyph->metrics.rightSideBearing;
- xglyph.metrics.advanceX=pglyph->metrics.advanceX;
- xglyph.metrics.advanceY=pglyph->metrics.advanceY;
- xglyph.metrics.ascent=pglyph->metrics.ascent;
- xglyph.metrics.descent=pglyph->metrics.descent;
- xglyph.bpp=pglyph->bpp;
-
- return( &xglyph);
-
-
-}
-
-
-
-/* T1_ComputeAAColorsX(): Compute the antialiasing colors in dependency
- of foreground and background */
-int T1_ComputeAAColorsX( unsigned long fg, unsigned long bg, int nolevels)
-{
-
- static unsigned long last_fg;
- static unsigned long last_bg;
- unsigned long delta_red, delta_green, delta_blue;
- int i;
- int nocolors=0;
-
-
- aacolors[0].pixel=bg;
- aacolors[nolevels-1].pixel=fg;
-
- if ((fg==last_fg)&&(bg==last_bg))
- return(nocolors);
-
- /* Get RGB values for fore- and background */
- XQueryColor( T1_display, T1_colormap, &aacolors[0]);
- XQueryColor( T1_display, T1_colormap, &aacolors[nolevels-1]);
- delta_red = (aacolors[nolevels-1].red - aacolors[0].red)/(nolevels-1);
- delta_green = (aacolors[nolevels-1].green - aacolors[0].green)/(nolevels-1);
- delta_blue = (aacolors[nolevels-1].blue - aacolors[0].blue)/(nolevels-1);
- aapixels[0]=aacolors[0].pixel;
- aapixels[nolevels-1]=aacolors[nolevels-1].pixel;
-
-
- for (i=1; i<nolevels-1; i++){
- aacolors[i].red = aacolors[i-1].red + delta_red;
- aacolors[i].green = aacolors[i-1].green + delta_green;
- aacolors[i].blue = aacolors[i-1].blue + delta_blue;
- /* Allocate color in current palette */
- if (XAllocColor( T1_display, T1_colormap, &aacolors[i])!=0){
- aapixels[i]=aacolors[i].pixel;
- nocolors++;
- }
-
- }
-
- return(nocolors);
-
-}
-
-
-
-/* Set the positioning switch */
-void T1_LogicalPositionX( int pos_switch)
-{
- if (pos_switch)
- T1_lposition=1;
- else
- T1_lposition=0;
- return;
-}
-