#include "wx/app.h"
#include "wx/image.h"
#include "wx/log.h"
-
-#include <math.h>
+#include "wx/math.h"
#ifdef __VMS__
#pragma message disable nosimpint
#ifndef IS_HATCH
// IS_HATCH exists for WXWIN_COMPATIBILITY_2_4 only
// but wxMotif needs it for its internals here
- #define IS_HATCH(s) ((s)>=wxBDIAGONAL_HATCH && (s)<=wxVERTICAL_HATCH)
+ #define IS_HATCH(s) ((s)>=wxFIRST_HATCH && (s)<=wxLAST_HATCH)
#endif
+// FIXME: left over after removal of wxDC::GetOptimization()
+#define GET_OPTIMIZATION false
+
// ----------------------------------------------------------------------------
// prototypes
// ----------------------------------------------------------------------------
if (m_brush.Ok() && m_brush.GetStyle () != wxTRANSPARENT)
{
- m_autoSetting = TRUE; // must be reset
+ m_autoSetting = true; // must be reset
SetBrush (m_brush);
XFillArc ((Display*) m_display, (Pixmap) m_pixmap, (GC) m_gc, xd, yd, wd, hd, start, end);
source->LogicalToDeviceXRel(width),
source->LogicalToDeviceYRel(height),
XLOG2DEV_2 (xdest), YLOG2DEV_2 (ydest),
- TRUE, &cache);
+ True, &cache);
if ( useMask && source->IsKindOf(CLASSINFO(wxMemoryDC)) )
{
source->LogicalToDeviceXRel(width),
source->LogicalToDeviceYRel(height),
XLOG2DEV (xdest), YLOG2DEV (ydest),
- FALSE, &cache);
+ False, &cache);
if ( useMask )
{
int cx = 0;
int cy = 0;
int ascent = 0;
- int slen;
+ int slen = text.length();
// Set FillStyle, otherwise X will use current stipple!
XGCValues gcV, gcBackingV;
XSetFillStyle ((Display*) m_display, (GC) m_gcBacking, FillSolid);
}
- slen = strlen(text);
-
if (m_font.Ok())
- {
- WXFontStructPtr pFontStruct = m_font.GetFontStruct(m_userScaleY*m_logicalScaleY, m_display);
- int direction, descent;
- XCharStruct overall_return;
-#if 0
- if (use16)
- (void)XTextExtents16((XFontStruct*) pFontStruct, (XChar2b *)(const char*) text, slen, &direction,
- &ascent, &descent, &overall_return);
- else
-#endif // 0
- (void)XTextExtents((XFontStruct*) pFontStruct,
- wxConstCast(text.c_str(), char),
- slen, &direction,
- &ascent, &descent, &overall_return);
-
- cx = overall_return.width;
- cy = ascent + descent;
- }
+ wxGetTextExtent (m_display, m_font, m_userScaleY * m_logicalScaleY,
+ text, &cx, &cy, &ascent, NULL);
// First draw a rectangle representing the text background, if a text
// background is specified
sameColour = (sameColour &&
(oldPenColour.GetPixel() == m_textBackgroundColour.GetPixel()));
- if (!sameColour || !GetOptimization())
+ if (!sameColour || !GET_OPTIMIZATION)
{
int pixel = m_textBackgroundColour.AllocColour(m_display);
m_currentColour = m_textBackgroundColour;
(oldPenColour.Green () == m_currentColour.Green ()) &&
(oldPenColour.GetPixel() == m_currentColour.GetPixel()));
- if (!sameColour || !GetOptimization())
+ if (!sameColour || !GET_OPTIMIZATION)
{
int pixel = CalculatePixel(m_textForegroundColour,
m_currentColour, false);
(XChar2b *)(char*) (const char*) text, slen);
else
#endif // 0
+#if wxMOTIF_NEW_FONT_HANDLING
+ XFontSet fset = (XFontSet) m_font.GetFontSet (m_userScaleY * m_logicalScaleY, m_display);
+ XmbDrawString((Display*) m_display, (Pixmap) m_pixmap, fset, (GC) m_gc, XLOG2DEV (x), YLOG2DEV (y) + ascent, text, slen);
+#else
XDrawString((Display*) m_display, (Pixmap) m_pixmap, (GC) m_gc, XLOG2DEV (x), YLOG2DEV (y) + ascent, text, slen);
+#endif
if (m_window && m_window->GetBackingPixmap()) {
#if 0
(XChar2b *)(char*) (const char*) text, slen);
else
#endif // 0
+#if wxMOTIF_NEW_FONT_HANDLING
+ XmbDrawString((Display*) m_display, (Pixmap) m_window->GetBackingPixmap(), fset, (GC) m_gcBacking,
+ XLOG2DEV_2 (x), YLOG2DEV_2 (y) + ascent,
+ wxConstCast(text.c_str(), char), slen);
+#else
XDrawString((Display*) m_display, (Pixmap) m_window->GetBackingPixmap(), (GC) m_gcBacking,
XLOG2DEV_2 (x), YLOG2DEV_2 (y) + ascent,
wxConstCast(text.c_str(), char), slen);
+#endif
}
// restore fill style
int cx = 0;
int cy = 0;
int ascent = 0;
- int slen = text.length();
if (m_font.Ok())
- {
- // Calculate text extent.
- WXFontStructPtr pFontStruct =
- m_font.GetFontStruct(m_userScaleY*m_logicalScaleY, m_display);
- int direction, descent;
- XCharStruct overall_return;
-#if 0
- if (use16)
- (void)XTextExtents16((XFontStruct*) pFontStruct,
- (XChar2b *)(const char*) text,
- slen, &direction,
- &ascent, &descent, &overall_return);
- else
-#endif // 0
- (void)XTextExtents((XFontStruct*) pFontStruct,
- wxConstCast(text.c_str(), char),
- slen, &direction,
- &ascent, &descent, &overall_return);
-
- cx = overall_return.width;
- cy = ascent + descent;
- }
+ wxGetTextExtent (m_display, m_font, m_userScaleY * m_logicalScaleY,
+ text, &cx, &cy, &ascent, NULL);
wxBitmap src(cx, cy);
wxMemoryDC dc;
{
wxCHECK_RET( Ok(), "invalid dc" );
- wxFont* theFont = font;
- if (!theFont)
- theFont = (wxFont *)&m_font; // const_cast
+ const wxFont* theFont = font ? font : &m_font;
if (!theFont->Ok())
{
return;
}
- WXFontStructPtr pFontStruct = theFont->GetFontStruct(m_userScaleY*m_logicalScaleY, m_display);
-
- int direction, ascent, descent2;
- XCharStruct overall;
- int slen;
-
-#if 0
- if (use16)
- slen = str16len(string);
- else
-#endif // 0
- slen = strlen(string);
+ wxGetTextExtent(m_display, *theFont, m_userScaleY * m_logicalScaleY,
+ string, width, height, NULL, descent);
-#if 0
- if (use16)
- XTextExtents16((XFontStruct*) pFontStruct, (XChar2b *) (char*) (const char*) string, slen, &direction,
- &ascent, &descent2, &overall);
- else
-#endif // 0
- XTextExtents((XFontStruct*) pFontStruct,
- wxConstCast(string.c_str(), char), slen, &direction,
- &ascent, &descent2, &overall);
-
- if (width) *width = XDEV2LOGREL (overall.width);
- if (height) *height = YDEV2LOGREL (ascent + descent2);
- if (descent)
- *descent = descent2;
+ if (width) *width = XDEV2LOGREL (*width);
+ if (height) *height = YDEV2LOGREL (*height);
if (externalLeading)
*externalLeading = 0;
}
{
wxCHECK_MSG( Ok(), 0, "invalid dc" );
wxCHECK_MSG( m_font.Ok(), 0, "invalid font" );
+
+ int width;
- WXFontStructPtr pFontStruct = m_font.GetFontStruct(m_userScaleY * m_logicalScaleY, m_display);
+ wxGetTextExtent (m_display, m_font, m_userScaleY * m_logicalScaleY,
+ "x", &width, NULL, NULL, NULL);
- int direction, ascent, descent;
- XCharStruct overall;
- XTextExtents ((XFontStruct*) pFontStruct, "x", 1, &direction, &ascent,
- &descent, &overall);
- return XDEV2LOGREL(overall.width);
+ return XDEV2LOGREL(width);
}
wxCoord wxWindowDC::GetCharHeight() const
wxCHECK_MSG( Ok(), 0, "invalid dc" );
wxCHECK_MSG( m_font.Ok(), 0, "invalid font" );
- WXFontStructPtr pFontStruct = m_font.GetFontStruct(m_userScaleY*m_logicalScaleY, m_display);
+ int height;
- int direction, ascent, descent;
- XCharStruct overall;
- XTextExtents ((XFontStruct*) pFontStruct, "x", 1, &direction, &ascent,
- &descent, &overall);
- // return XDEV2LOGREL(overall.ascent + overall.descent);
- return XDEV2LOGREL(ascent + descent);
+ wxGetTextExtent (m_display, m_font, m_userScaleY * m_logicalScaleY,
+ "x", NULL, &height, NULL, NULL);
+
+ return XDEV2LOGREL(height);
}
void wxWindowDC::DoGetSize( int *width, int *height ) const
return;
}
+#if !wxMOTIF_NEW_FONT_HANDLING
WXFontStructPtr pFontStruct = m_font.GetFontStruct(m_userScaleY*m_logicalScaleY, m_display);
Font fontId = ((XFontStruct*)pFontStruct)->fid;
if (m_window && m_window->GetBackingPixmap())
XSetFont ((Display*) m_display,(GC) m_gcBacking, fontId);
+#endif
}
void wxWindowDC::SetForegroundPixelWithLogicalFunction(int pixel)
(oldPenColour.Green () == m_currentColour.Green ()) &&
(oldPenColour.GetPixel() == m_currentColour.GetPixel()));
- if (!sameStyle || !GetOptimization())
+ if (!sameStyle || !GET_OPTIMIZATION)
{
int scaled_width = (int) XLOG2DEVREL (m_pen.GetWidth ());
if (scaled_width < 0)
XSetLineAttributes ((Display*) m_display,(GC) m_gcBacking, scaled_width, style, cap, join);
}
- if (IS_HATCH(m_currentFill) && ((m_currentFill != oldFill) || !GetOptimization()))
+ if (IS_HATCH(m_currentFill) && ((m_currentFill != oldFill) || !GET_OPTIMIZATION))
{
Pixmap myStipple;
XSetStipple ((Display*) m_display,(GC) m_gcBacking, myStipple);
}
else if (m_currentStipple.Ok()
- && ((m_currentStipple != oldStipple) || !GetOptimization()))
+ && ((m_currentStipple != oldStipple) || !GET_OPTIMIZATION))
{
XSetStipple ((Display*) m_display, (GC) m_gc, (Pixmap) m_currentStipple.GetDrawable());
XSetStipple ((Display*) m_display,(GC) m_gcBacking, (Pixmap) m_currentStipple.GetDrawable());
}
- if ((m_currentFill != oldFill) || !GetOptimization())
+ if ((m_currentFill != oldFill) || !GET_OPTIMIZATION)
{
int fill_style;
}
// must test m_logicalFunction, because it involves background!
- if (!sameColour || !GetOptimization()
+ if (!sameColour || !GET_OPTIMIZATION
|| ((m_logicalFunction == wxXOR) || (m_autoSetting & 0x2)))
{
int pixel = -1;
int stippleDepth = -1;
- if ((oldFill != m_brush.GetStyle ()) || !GetOptimization())
+ if ((oldFill != m_brush.GetStyle ()) || !GET_OPTIMIZATION)
{
switch (brush.GetStyle ())
{
}
}
- if (IS_HATCH(m_currentFill) && ((m_currentFill != oldFill) || !GetOptimization()))
+ if (IS_HATCH(m_currentFill) && ((m_currentFill != oldFill) || !GET_OPTIMIZATION))
{
Pixmap myStipple;
}
// must test m_logicalFunction, because it involves background!
- if (!sameColour || !GetOptimization() || m_logicalFunction == wxXOR)
+ if (!sameColour || !GET_OPTIMIZATION || m_logicalFunction == wxXOR)
{
int pixel = CalculatePixel(m_brush.GetColour(), m_currentColour, true);
destcm = (Colormap) wxTheApp->GetMainColormap((WXDisplay*) dest_display);
cache_pos = 0;
- all_cache = FALSE;
+ all_cache = False;
for (i = 0; i < w; i++)
for (j = 0; j < h; j++) {
if (++cache_pos >= CACHE_SIZE) {
cache_pos = 0;
- all_cache = TRUE;
+ all_cache = true;
}
install: