m_pageNumber = 0;
- m_clipping = FALSE;
+ m_clipping = false;
m_underlinePosition = 0.0;
m_underlineThickness = 0.0;
m_pageNumber = 0;
- m_clipping = FALSE;
+ m_clipping = false;
m_underlinePosition = 0.0;
m_underlineThickness = 0.0;
m_printData = printData;
- m_ok = TRUE;
+ m_ok = true;
}
wxPostScriptDC::~wxPostScriptDC ()
{
wxPrintDialogData ddata( data );
wxPrintDialog dialog( parent, &data );
- dialog.GetPrintDialogData().SetSetupDialog(TRUE);
+ dialog.GetPrintDialogData().SetSetupDialog(true);
if (dialog.ShowModal() != wxID_OK)
{
- m_ok = FALSE;
- return FALSE;
+ m_ok = false;
+ return false;
}
data = dialog.GetPrintDialogData().GetPrintData();
}
- return TRUE;
+ return true;
}
#endif
wxDC::DoSetClippingRegion(x, y, w, h);
- m_clipping = TRUE;
+ m_clipping = true;
- PsPrintf( wxT("gsave\n newpath\n"
- "%d %d moveto\n"
- "%d %d lineto\n"
- "%d %d lineto\n"
- "%d %d lineto\n"
- "closepath clip newpath\n"),
+ PsPrintf( wxT("gsave\n newpath\n")
+ wxT("%d %d moveto\n")
+ wxT("%d %d lineto\n")
+ wxT("%d %d lineto\n")
+ wxT("%d %d lineto\n")
+ wxT("closepath clip newpath\n"),
LogicalToDeviceX(x), LogicalToDeviceY(y),
LogicalToDeviceX(x+w), LogicalToDeviceY(y),
LogicalToDeviceX(x+w), LogicalToDeviceY(y+h),
if (m_clipping)
{
- m_clipping = FALSE;
+ m_clipping = false;
PsPrint( "grestore\n" );
}
bool wxPostScriptDC::DoFloodFill (wxCoord WXUNUSED(x), wxCoord WXUNUSED(y), const wxColour &WXUNUSED(col), int WXUNUSED(style))
{
wxFAIL_MSG( wxT("wxPostScriptDC::FloodFill not implemented.") );
- return FALSE;
+ return false;
}
bool wxPostScriptDC::DoGetPixel (wxCoord WXUNUSED(x), wxCoord WXUNUSED(y), wxColour * WXUNUSED(col)) const
{
wxFAIL_MSG( wxT("wxPostScriptDC::GetPixel not implemented.") );
- return FALSE;
+ return false;
}
void wxPostScriptDC::DoCrossHair (wxCoord WXUNUSED(x), wxCoord WXUNUSED(y))
SetPen( m_pen );
- PsPrintf( wxT("newpath\n"
- "%d %d moveto\n"
- "%d %d lineto\n"
- "stroke\n"),
+ PsPrintf( wxT("newpath\n")
+ wxT("%d %d moveto\n")
+ wxT("%d %d lineto\n")
+ wxT("stroke\n"),
LogicalToDeviceX(x1), LogicalToDeviceY(y1),
LogicalToDeviceX(x2), LogicalToDeviceY (y2) );
{
SetBrush( m_brush );
- PsPrintf( wxT("newpath\n"
- "%d %d %d %d %d %d ellipse\n"
- "%d %d lineto\n"
- "closepath\n"
- "fill\n"),
+ PsPrintf( wxT("newpath\n")
+ wxT("%d %d %d %d %d %d ellipse\n")
+ wxT("%d %d lineto\n")
+ wxT("closepath\n")
+ wxT("fill\n"),
LogicalToDeviceX(xc), LogicalToDeviceY(yc), LogicalToDeviceXRel(radius), LogicalToDeviceYRel(radius), (wxCoord)alpha1, (wxCoord) alpha2,
LogicalToDeviceX(xc), LogicalToDeviceY(yc) );
{
SetPen( m_pen );
- PsPrintf( wxT("newpath\n"
- "%d %d %d %d %d %d ellipse\n"
- "%d %d lineto\n"
- "stroke\n"
- "fill\n"),
+ PsPrintf( wxT("newpath\n")
+ wxT("%d %d %d %d %d %d ellipse\n")
+ wxT("%d %d lineto\n")
+ wxT("stroke\n")
+ wxT("fill\n"),
LogicalToDeviceX(xc), LogicalToDeviceY(yc), LogicalToDeviceXRel(radius), LogicalToDeviceYRel(radius), (wxCoord)alpha1, (wxCoord) alpha2,
LogicalToDeviceX(xc), LogicalToDeviceY(yc) );
{
SetBrush( m_brush );
- PsPrintf( wxT("newpath\n"
- "%d %d %d %d %d %d true ellipticarc\n"),
+ PsPrintf( wxT("newpath\n")
+ wxT("%d %d %d %d %d %d true ellipticarc\n"),
LogicalToDeviceX(x+w/2), LogicalToDeviceY(y+h/2),
LogicalToDeviceXRel(w/2), LogicalToDeviceYRel(h/2),
(wxCoord)sa, (wxCoord)ea );
{
SetPen( m_pen );
- PsPrintf( wxT("newpath\n"
- "%d %d %d %d %d %d false ellipticarc\n"),
+ PsPrintf( wxT("newpath\n")
+ wxT("%d %d %d %d %d %d false ellipticarc\n"),
LogicalToDeviceX(x+w/2), LogicalToDeviceY(y+h/2),
LogicalToDeviceXRel(w/2), LogicalToDeviceYRel(h/2),
(wxCoord)sa, (wxCoord)ea );
SetPen (m_pen);
- PsPrintf( wxT("newpath\n"
- "%d %d moveto\n"
- "%d %d lineto\n"
- "stroke\n"),
+ PsPrintf( wxT("newpath\n")
+ wxT("%d %d moveto\n")
+ wxT("%d %d lineto\n")
+ wxT("stroke\n"),
LogicalToDeviceX(x), LogicalToDeviceY(y),
LogicalToDeviceX(x+1), LogicalToDeviceY(y) );
}
}
-void wxPostScriptDC::DoDrawPolyPolygon (int n, int start[], wxPoint points[], wxCoord xoffset, wxCoord yoffset, int fillStyle)
+void wxPostScriptDC::DoDrawPolyPolygon (int n, int count[], wxPoint points[], wxCoord xoffset, wxCoord yoffset, int fillStyle)
{
wxCHECK_RET( m_ok, wxT("invalid postscript dc") );
PsPrint( "newpath\n" );
int ofs = 0;
- for (int i = 0; i < n; ofs += start[i++])
+ for (int i = 0; i < n; ofs += count[i++])
{
wxCoord xx = LogicalToDeviceX(points[ofs].x + xoffset);
wxCoord yy = LogicalToDeviceY(points[ofs].y + yoffset);
CalcBoundingBox( points[ofs].x + xoffset, points[ofs].y + yoffset );
- for (int j = 1; j < start[i]; j++)
+ for (int j = 1; j < count[i]; j++)
{
xx = LogicalToDeviceX(points[ofs+j].x + xoffset);
yy = LogicalToDeviceY(points[ofs+j].y + yoffset);
PsPrint( "newpath\n" );
int ofs = 0;
- for (int i = 0; i < n; ofs += start[i++])
+ for (int i = 0; i < n; ofs += count[i++])
{
wxCoord xx = LogicalToDeviceX(points[ofs].x + xoffset);
wxCoord yy = LogicalToDeviceY(points[ofs].y + yoffset);
CalcBoundingBox( points[ofs].x + xoffset, points[ofs].y + yoffset );
- for (int j = 1; j < start[i]; j++)
+ for (int j = 1; j < count[i]; j++)
{
xx = LogicalToDeviceX(points[ofs+j].x + xoffset);
yy = LogicalToDeviceY(points[ofs+j].y + yoffset);
CalcBoundingBox( LogicalToDeviceX(points[i].x+xoffset), LogicalToDeviceY(points[i].y+yoffset));
}
- PsPrintf( wxT("newpath\n"
- "%d %d moveto\n"),
+ PsPrintf( wxT("newpath\n")
+ wxT("%d %d moveto\n"),
LogicalToDeviceX(points[0].x+xoffset),
LogicalToDeviceY(points[0].y+yoffset) );
-
+
for (i = 1; i < n; i++)
{
PsPrintf( wxT("%d %d lineto\n"),
LogicalToDeviceX(points[i].x+xoffset),
LogicalToDeviceY(points[i].y+yoffset) );
}
-
+
PsPrint( "stroke\n" );
}
{
SetBrush( m_brush );
- PsPrintf( wxT("newpath\n"
- "%d %d moveto\n"
- "%d %d lineto\n"
- "%d %d lineto\n"
- "%d %d lineto\n"
- "closepath\n"
- "fill\n"),
+ PsPrintf( wxT("newpath\n")
+ wxT("%d %d moveto\n")
+ wxT("%d %d lineto\n")
+ wxT("%d %d lineto\n")
+ wxT("%d %d lineto\n")
+ wxT("closepath\n")
+ wxT("fill\n"),
LogicalToDeviceX(x), LogicalToDeviceY(y),
LogicalToDeviceX(x + width), LogicalToDeviceY(y),
LogicalToDeviceX(x + width), LogicalToDeviceY(y + height),
{
SetPen (m_pen);
- PsPrintf( wxT("newpath\n"
- "%d %d moveto\n"
- "%d %d lineto\n"
- "%d %d lineto\n"
- "%d %d lineto\n"
- "closepath\n"
- "stroke\n"),
+ PsPrintf( wxT("newpath\n")
+ wxT("%d %d moveto\n")
+ wxT("%d %d lineto\n")
+ wxT("%d %d lineto\n")
+ wxT("%d %d lineto\n")
+ wxT("closepath\n")
+ wxT("stroke\n"),
LogicalToDeviceX(x), LogicalToDeviceY(y),
LogicalToDeviceX(x + width), LogicalToDeviceY(y),
LogicalToDeviceX(x + width), LogicalToDeviceY(y + height),
SetBrush( m_brush );
/* Draw rectangle anticlockwise */
- PsPrintf( wxT("newpath\n"
- "%d %d %d 90 180 arc\n"
- "%d %d moveto\n"
- "%d %d %d 180 270 arc\n"
- "%d %d lineto\n"
- "%d %d %d 270 0 arc\n"
- "%d %d lineto\n"
- "%d %d %d 0 90 arc\n"
- "%d %d lineto\n"
- "closepath\n"
- "fill\n"),
+ PsPrintf( wxT("newpath\n")
+ wxT("%d %d %d 90 180 arc\n")
+ wxT("%d %d moveto\n")
+ wxT("%d %d %d 180 270 arc\n")
+ wxT("%d %d lineto\n")
+ wxT("%d %d %d 270 0 arc\n")
+ wxT("%d %d lineto\n")
+ wxT("%d %d %d 0 90 arc\n")
+ wxT("%d %d lineto\n")
+ wxT("closepath\n")
+ wxT("fill\n"),
LogicalToDeviceX(x + rad), LogicalToDeviceY(y + rad), LogicalToDeviceXRel(rad),
LogicalToDeviceX(x), LogicalToDeviceY(y + rad),
LogicalToDeviceX(x + rad), LogicalToDeviceY(y + height - rad), LogicalToDeviceXRel(rad),
SetPen (m_pen);
/* Draw rectangle anticlockwise */
- PsPrintf( wxT("newpath\n"
- "%d %d %d 90 180 arc\n"
- "%d %d moveto\n"
- "%d %d %d 180 270 arc\n"
- "%d %d lineto\n"
- "%d %d %d 270 0 arc\n"
- "%d %d lineto\n"
- "%d %d %d 0 90 arc\n"
- "%d %d lineto\n"
- "closepath\n"
- "stroke\n"),
+ PsPrintf( wxT("newpath\n")
+ wxT("%d %d %d 90 180 arc\n")
+ wxT("%d %d moveto\n")
+ wxT("%d %d %d 180 270 arc\n")
+ wxT("%d %d lineto\n")
+ wxT("%d %d %d 270 0 arc\n")
+ wxT("%d %d lineto\n")
+ wxT("%d %d %d 0 90 arc\n")
+ wxT("%d %d lineto\n")
+ wxT("closepath\n")
+ wxT("stroke\n"),
LogicalToDeviceX(x + rad), LogicalToDeviceY(y + rad), LogicalToDeviceXRel(rad),
LogicalToDeviceX(x), LogicalToDeviceY(y + rad),
LogicalToDeviceX(x + rad), LogicalToDeviceY(y + height - rad), LogicalToDeviceXRel(rad),
{
SetBrush (m_brush);
- PsPrintf( wxT("newpath\n"
- "%d %d %d %d 0 360 ellipse\n"
- "fill\n"),
+ PsPrintf( wxT("newpath\n")
+ wxT("%d %d %d %d 0 360 ellipse\n")
+ wxT("fill\n"),
LogicalToDeviceX(x + width / 2), LogicalToDeviceY(y + height / 2),
LogicalToDeviceXRel(width / 2), LogicalToDeviceYRel(height / 2) );
{
SetPen (m_pen);
- PsPrintf( wxT("newpath\n"
- "%d %d %d %d 0 360 ellipse\n"
- "stroke\n"),
+ PsPrintf( wxT("newpath\n")
+ wxT("%d %d %d %d 0 360 ellipse\n")
+ wxT("stroke\n"),
LogicalToDeviceX(x + width / 2), LogicalToDeviceY(y + height / 2),
LogicalToDeviceXRel(width / 2), LogicalToDeviceYRel(height / 2) );
void wxPostScriptDC::DoDrawIcon( const wxIcon& icon, wxCoord x, wxCoord y )
{
- DrawBitmap( icon, x, y, TRUE );
+ DrawBitmap( icon, x, y, true );
}
/* this has to be char, not wxChar */
wxCoord xx = LogicalToDeviceX(x);
wxCoord yy = LogicalToDeviceY(y + bitmap.GetHeight());
- PsPrintf( wxT("/origstate save def\n"
- "20 dict begin\n"
- "/pix %d string def\n"
- "/grays %d string def\n"
- "/npixels 0 def\n"
- "/rgbindx 0 def\n"
- "%d %d translate\n"
- "%d %d scale\n"
- "%d %d 8\n"
- "[%d 0 0 %d 0 %d]\n"
- "{currentfile pix readhexstring pop}\n"
- "false 3 colorimage\n"),
+ PsPrintf( wxT("/origstate save def\n")
+ wxT("20 dict begin\n")
+ wxT("/pix %d string def\n")
+ wxT("/grays %d string def\n")
+ wxT("/npixels 0 def\n")
+ wxT("/rgbindx 0 def\n")
+ wxT("%d %d translate\n")
+ wxT("%d %d scale\n")
+ wxT("%d %d 8\n")
+ wxT("[%d 0 0 %d 0 %d]\n")
+ wxT("{currentfile pix readhexstring pop}\n")
+ wxT("false 3 colorimage\n"),
w, w, xx, yy, ww, hh, w, h, w, -h, h );
unsigned char* data = image.GetData();
}
}
+ // We may legitimately call SetFont before BeginDoc
+ if (!m_pstream)
+ return;
+
PsPrint( name );
PsPrint( " reencodeISO def\n" );
PsPrint( name );
PsPrint( " findfont\n" );
-
+
char buffer[100];
sprintf( buffer, "%f scalefont setfont\n", LogicalToDeviceYRel(m_font.GetPointSize() * 1000) / 1000.0F);
// this is a hack - we must scale font size (in pts) according to m_scaleY but
double redPS = (double)(red) / 255.0;
double bluePS = (double)(blue) / 255.0;
double greenPS = (double)(green) / 255.0;
-
+
char buffer[100];
sprintf( buffer,
"%.8f %.8f %.8f setrgbcolor\n",
if (buffer[i] == ',') buffer[i] = '.';
PsPrint( buffer );
-
+
m_currentRed = red;
m_currentBlue = blue;
m_currentGreen = green;
redPS, greenPS, bluePS );
for (int i = 0; i < 100; i++)
if (buffer[i] == ',') buffer[i] = '.';
-
+
PsPrint( buffer );
m_currentRed = red;
#include "wx/x11/private.h"
#endif
+#include <ft2build.h>
+#include FT_FREETYPE_H
+
#include "wx/fontutil.h"
#include <pango/pangoft2.h>
#include <freetype/ftglyph.h>
PsPrintf( wxT("%d %d moveto\n"), LogicalToDeviceX(x), LogicalToDeviceY(by) );
PsPrint( "(" );
-
+
const wxWX2MBbuf textbuf = text.mb_str();
size_t len = strlen(textbuf);
size_t i;
PsPrint(c);
}
}
-
+
PsPrint( ") show\n" );
-
+
if (m_font.GetUnderlined())
{
wxCoord uy = (wxCoord)(y + size - m_underlinePosition);
PsPrintf( wxT("%d %d moveto\n"),
LogicalToDeviceX(x), LogicalToDeviceY(y));
-
+
char buffer[100];
sprintf(buffer, "%.8f rotate\n", angle);
size_t i;
if (buffer[i] == ',') buffer[i] = '.';
}
PsPrint( buffer);
-
+
PsPrint( "(" );
const wxWX2MBbuf textbuf = text.mb_str();
size_t len = strlen(textbuf);
PsPrint(c);
}
}
-
+
PsPrint( ") show\n" );
-
+
sprintf( buffer, "%.8f rotate\n", -angle );
for (i = 0; i < 100; i++)
{
if (buffer[i] == ',') buffer[i] = '.';
}
PsPrint( buffer );
-
+
if (m_font.GetUnderlined())
{
wxCoord uy = (wxCoord)(y + size - m_underlinePosition);
}
PsPrint( buffer );
}
-
+
CalcBoundingBox( x, y );
CalcBoundingBox( x + size * text.Length() * 2/3 , y );
}
#endif
(double)(y1 + d) / 2;
- PsPrintf( wxT("newpath\n"
- "%d %d moveto\n"
- "%d %d lineto\n"),
+ PsPrintf( wxT("newpath\n")
+ wxT("%d %d moveto\n")
+ wxT("%d %d lineto\n"),
LogicalToDeviceX((wxCoord)x1), LogicalToDeviceY((wxCoord)y1),
LogicalToDeviceX((wxCoord)x3), LogicalToDeviceY((wxCoord)y3) );
next-to-last and last point respectively, in the point list
*/
- PsPrintf( wxT("%d %d lineto\n"
- "stroke\n"),
+ PsPrintf( wxT("%d %d lineto\n")
+ wxT("stroke\n"),
LogicalToDeviceX((wxCoord)c), LogicalToDeviceY((wxCoord)d) );
}
bool wxPostScriptDC::StartDoc( const wxString& message )
{
- wxCHECK_MSG( m_ok, FALSE, wxT("invalid postscript dc") );
+ wxCHECK_MSG( m_ok, false, wxT("invalid postscript dc") );
- if ( m_printData.GetPrintMode() == wxPRINT_MODE_FILE )
+ if ( m_printData.GetPrintMode() != wxPRINT_MODE_STREAM )
{
- if (m_printData.GetFilename() == wxT(""))
+ if (m_printData.GetFilename() == wxEmptyString)
{
wxString filename = wxGetTempFileName( wxT("ps") );
m_printData.SetFilename(filename);
if (!m_pstream)
{
wxLogError( _("Cannot open file for PostScript printing!"));
- m_ok = FALSE;
- return FALSE;
+ m_ok = false;
+ return false;
}
}
- m_ok = TRUE;
+ m_ok = true;
m_title = message;
PsPrint( "%!PS-Adobe-2.0\n" );
PsPrintf( wxT("%%%%Title: %s\n"), m_title.c_str() );
- PsPrint( "%%Creator: wxWindows PostScript renderer\n" );
+ PsPrint( "%%Creator: wxWidgets PostScript renderer\n" );
PsPrintf( wxT("%%%%CreationDate: %s\n"), wxNow().c_str() );
if (m_printData.GetOrientation() == wxLANDSCAPE)
PsPrint( "%%Orientation: Landscape\n" );
wxPageNumber = 1;
m_pageNumber = 1;
- return TRUE;
+ return true;
}
void wxPostScriptDC::EndDoc ()
if (m_clipping)
{
- m_clipping = FALSE;
+ m_clipping = false;
PsPrint( "grestore\n" );
}
command += wxT(" ");
command += m_printData.GetFilename();
- wxExecute( command, TRUE );
+ wxExecute( command, true );
wxRemoveFile( m_printData.GetFilename() );
}
#endif
wxCoord xsrc, wxCoord ysrc,
int rop, bool WXUNUSED(useMask), wxCoord WXUNUSED(xsrcMask), wxCoord WXUNUSED(ysrcMask) )
{
- wxCHECK_MSG( m_ok, FALSE, wxT("invalid postscript dc") );
+ wxCHECK_MSG( m_ok, false, wxT("invalid postscript dc") );
- wxCHECK_MSG( source, FALSE, wxT("invalid source dc") );
+ wxCHECK_MSG( source, false, wxT("invalid source dc") );
/* blit into a bitmap */
wxBitmap bitmap( (int)fwidth, (int)fheight );
/* draw bitmap. scaling and positioning is done there */
DrawBitmap( bitmap, xdest, ydest );
- return TRUE;
+ return true;
}
wxCoord wxPostScriptDC::GetCharHeight() const
/
/ example:
/
- / wxPostScriptDC dc(NULL, TRUE);
+ / wxPostScriptDC dc(NULL, true);
/ if (dc.Ok()){
/ wxSetAFMPath("d:\\wxw161\\afm\\");
/ dc.StartDoc("Test");
{
wxInitializePrintSetupData();
- return TRUE;
+ return true;
}
void wxPostScriptModule::OnExit()
{
- wxInitializePrintSetupData(FALSE);
+ wxInitializePrintSetupData(false);
}
#endif
// WXWIN_COMPATIBILITY_2_2