/////////////////////////////////////////////////////////////////////////////
// Name: printing.cpp
-// Purpose: Printing demo for wxWindows
+// Purpose: Printing demo for wxWidgets
// Author: Julian Smart
// Modified by:
// Created: 1995
#include "wx/metafile.h"
#include "wx/print.h"
#include "wx/printdlg.h"
-
+#include "wx/image.h"
#include "wx/accel.h"
#if wxTEST_POSTSCRIPT_IN_MSW
// Writes a header on a page. Margin units are in millimetres.
bool WritePageHeader(wxPrintout *printout, wxDC *dc, wxChar *text, float mmToLogical);
-MyApp::MyApp()
-{
-}
-
// The `main program' equivalent, creating the windows and returning the
// main frame
+
bool MyApp::OnInit(void)
{
+ wxInitAllImageHandlers();
+
m_testFont.Create(10, wxSWISS, wxNORMAL, wxNORMAL);
g_printData = new wxPrintData;
g_pageSetupData = new wxPageSetupDialogData;
// Create the main frame window
- frame = new MyFrame((wxFrame *) NULL, _T("wxWindows Printing Demo"), wxPoint(0, 0), wxSize(400, 400));
+ frame = new MyFrame((wxFrame *) NULL, _T("wxWidgets Printing Demo"), wxPoint(0, 0), wxSize(400, 400));
+#if wxUSE_STATUSBAR
// Give it a status line
frame->CreateStatusBar(2);
+#endif // wxUSE_STATUSBAR
// Load icon and bitmap
frame->SetIcon( wxICON( mondrian) );
wxMenu *file_menu = new wxMenu;
file_menu->Append(WXPRINT_PRINT, _T("&Print..."), _T("Print"));
- file_menu->Append(WXPRINT_PRINT_SETUP, _T("Print &Setup..."), _T("Setup printer properties"));
file_menu->Append(WXPRINT_PAGE_SETUP, _T("Page Set&up..."), _T("Page setup"));
file_menu->Append(WXPRINT_PREVIEW, _T("Print Pre&view"), _T("Preview"));
#if defined(__WXMSW__) && wxTEST_POSTSCRIPT_IN_MSW
file_menu->AppendSeparator();
file_menu->Append(WXPRINT_PRINT_PS, _T("Print PostScript..."), _T("Print (PostScript)"));
- file_menu->Append(WXPRINT_PRINT_SETUP_PS, _T("Print Setup PostScript..."), _T("Setup printer properties (PostScript)"));
file_menu->Append(WXPRINT_PAGE_SETUP_PS, _T("Page Setup PostScript..."), _T("Page setup (PostScript)"));
file_menu->Append(WXPRINT_PREVIEW_PS, _T("Print Preview PostScript"), _T("Preview (PostScript)"));
#endif
+ file_menu->AppendSeparator();
+ file_menu->Append(WXPRINT_ANGLEUP, _T("Angle up\tAlt-U"), _T("Raise rotated text angle"));
+ file_menu->Append(WXPRINT_ANGLEDOWN, _T("Angle down\tAlt-D"), _T("Lower rotated text angle"));
file_menu->AppendSeparator();
file_menu->Append(WXPRINT_QUIT, _T("E&xit"), _T("Exit program"));
frame->Centre(wxBOTH);
frame->Show();
+#if wxUSE_STATUSBAR
frame->SetStatusText(_T("Printing demo"));
+#endif // wxUSE_STATUSBAR
SetTopWindow(frame);
EVT_MENU(WXPRINT_QUIT, MyFrame::OnExit)
EVT_MENU(WXPRINT_PRINT, MyFrame::OnPrint)
EVT_MENU(WXPRINT_PREVIEW, MyFrame::OnPrintPreview)
-EVT_MENU(WXPRINT_PRINT_SETUP, MyFrame::OnPrintSetup)
EVT_MENU(WXPRINT_PAGE_SETUP, MyFrame::OnPageSetup)
EVT_MENU(WXPRINT_ABOUT, MyFrame::OnPrintAbout)
#if defined(__WXMSW__) && wxTEST_POSTSCRIPT_IN_MSW
EVT_MENU(WXPRINT_PRINT_PS, MyFrame::OnPrintPS)
EVT_MENU(WXPRINT_PREVIEW_PS, MyFrame::OnPrintPreviewPS)
-EVT_MENU(WXPRINT_PRINT_SETUP_PS, MyFrame::OnPrintSetupPS)
EVT_MENU(WXPRINT_PAGE_SETUP_PS, MyFrame::OnPageSetupPS)
#endif
+EVT_MENU(WXPRINT_ANGLEUP, MyFrame::OnAngleUp)
+EVT_MENU(WXPRINT_ANGLEDOWN, MyFrame::OnAngleDown)
END_EVENT_TABLE()
// Define my frame constructor
wxFrame(frame, wxID_ANY, title, pos, size)
{
canvas = NULL;
+ m_angle = 30;
+#if 0
+ wxImage image( wxT("test.jpg") );
+ image.SetAlpha();
+ int i,j;
+ for (i = 0; i < image.GetWidth(); i++)
+ for (j = 0; j < image.GetHeight(); j++)
+ image.SetAlpha( i, j, 50 );
+ m_bitmap = image;
+#endif
}
void MyFrame::OnExit(wxCommandEvent& WXUNUSED(event))
frame->Show();
}
-void MyFrame::OnPrintSetup(wxCommandEvent& WXUNUSED(event))
-{
- wxPrintDialogData printDialogData(* g_printData);
- wxPrintDialog printerDialog(this, & printDialogData);
-
- printerDialog.GetPrintDialogData().SetSetupDialog(true /*show print setup dialog*/);
- printerDialog.ShowModal();
-
- (*g_printData) = printerDialog.GetPrintDialogData().GetPrintData();
-}
-
void MyFrame::OnPageSetup(wxCommandEvent& WXUNUSED(event))
{
- (*g_pageSetupData) = * g_printData;
+ (*g_pageSetupData) = *g_printData;
wxPageSetupDialog pageSetupDialog(this, g_pageSetupData);
pageSetupDialog.ShowModal();
frame->Show();
}
-void MyFrame::OnPrintSetupPS(wxCommandEvent& WXUNUSED(event))
-{
- wxPrintDialogData printDialogData(* g_printData);
- wxGenericPrintDialog printerDialog(this, & printDialogData);
-
- printerDialog.GetPrintDialogData().SetSetupDialog(true /*show print setup dialog*/);
- printerDialog.ShowModal();
-
- (*g_printData) = printerDialog.GetPrintDialogData().GetPrintData();
-}
-
void MyFrame::OnPageSetupPS(wxCommandEvent& WXUNUSED(event))
{
(*g_pageSetupData) = * g_printData;
void MyFrame::OnPrintAbout(wxCommandEvent& WXUNUSED(event))
{
- (void)wxMessageBox(_T("wxWindows printing demo\nAuthor: Julian Smart"),
- _T("About wxWindows printing demo"), wxOK|wxCENTRE);
+ (void)wxMessageBox(_T("wxWidgets printing demo\nAuthor: Julian Smart"),
+ _T("About wxWidgets printing demo"), wxOK|wxCENTRE);
+}
+
+void MyFrame::OnAngleUp(wxCommandEvent& WXUNUSED(event))
+{
+ m_angle += 5;
+ canvas->Refresh();
+}
+
+void MyFrame::OnAngleDown(wxCommandEvent& WXUNUSED(event))
+{
+ m_angle -= 5;
+ canvas->Refresh();
}
void MyFrame::Draw(wxDC& dc)
dc.SetBackgroundMode(wxTRANSPARENT);
- dc.SetBrush(* wxCYAN_BRUSH);
- dc.SetPen(* wxRED_PEN);
+ dc.SetBrush(*wxCYAN_BRUSH);
+ dc.SetPen(*wxRED_PEN);
dc.DrawRectangle(0, 30, 200, 100);
dc.DrawText( wxT("Rectangle 200 by 100"), 40, 40);
+ dc.SetPen( wxPen(*wxBLACK,0,wxDOT_DASH) );
dc.DrawEllipse(50, 140, 100, 50);
+ dc.SetPen(*wxRED_PEN);
dc.DrawText( wxT("Test message: this is in 10 point text"), 10, 180);
dc.DrawText( tmp, 10, 200 );
#endif
+ wxString str;
+ int i = 0;
+ str.Printf( wxT("---- Text at angle %d ----"), i );
+ dc.DrawRotatedText( str, 100, 300, i );
+
+ i = m_angle;
+ str.Printf( wxT("---- Text at angle %d ----"), i );
+ dc.DrawRotatedText( str, 100, 300, i );
+
dc.SetPen(* wxBLACK_PEN);
dc.DrawLine(0, 0, 200, 200);
dc.DrawLine(200, 0, 0, 200);
wxIcon my_icon = wxICON(mondrian) ;
dc.DrawIcon( my_icon, 100, 100);
+
+ if (m_bitmap.Ok())
+ dc.DrawBitmap( m_bitmap, 10, 10 );
}
void MyFrame::OnSize(wxSizeEvent& event )
SetBackgroundColour(* wxWHITE);
}
-MyCanvas::~MyCanvas(void)
-{
-}
-
// Define the repainting behaviour
void MyCanvas::OnDraw(wxDC& dc)
{
int pageWidthMM, pageHeightMM;
printout->GetPageSizeMM(&pageWidthMM, &pageHeightMM);
+ wxUnusedVar(pageHeightMM);
int leftMargin = 10;
int topMargin = 10;