1 /////////////////////////////////////////////////////////////////////////////
2 // Name:        paper.h
3 // Purpose:     Paper database types and classes
4 // Author:      Julian Smart
5 // Modified by:
6 // Created:     01/02/97
7 // RCS-ID:      $Id: paper.h 53135 2008-04-12 02:31:04Z VZ $
8 // Copyright:   (c) Julian Smart
9 // Licence:     wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
11 
12 #ifndef _WX_PAPERH__
13 #define _WX_PAPERH__
14 
15 #include "wx/defs.h"
16 #include "wx/event.h"
17 #include "wx/cmndata.h"
18 #include "wx/intl.h"
19 #include "wx/hashmap.h"
20 
21 /*
22  * Paper type: see defs.h for wxPaperSize enum.
23  * A wxPrintPaperType can have an id and a name, or just a name and wxPAPER_NONE,
24  * so you can add further paper types without needing new ids.
25  */
26 
27 #ifdef __WXMSW__
28 #define WXADDPAPER(paperId, platformId, name, w, h) AddPaperType(paperId, platformId, name, w, h)
29 #else
30 #define WXADDPAPER(paperId, platformId, name, w, h) AddPaperType(paperId, 0, name, w, h)
31 #endif
32 
33 class WXDLLEXPORT wxPrintPaperType: public wxObject
34 {
35 public:
36     wxPrintPaperType();
37 
38     // platformId is a platform-specific id, such as in Windows, DMPAPER_...
39     wxPrintPaperType(wxPaperSize paperId, int platformId, const wxString& name, int w, int h);
40 
GetName()41     inline wxString GetName() const { return wxGetTranslation(m_paperName); }
GetId()42     inline wxPaperSize GetId() const { return m_paperId; }
GetPlatformId()43     inline int GetPlatformId() const { return m_platformId; }
44 
45     // Get width and height in tenths of a millimetre
GetWidth()46     inline int GetWidth() const { return m_width; }
GetHeight()47     inline int GetHeight() const { return m_height; }
48 
49     // Get size in tenths of a millimetre
GetSize()50     inline wxSize GetSize() const { return wxSize(m_width, m_height); }
51 
52     // Get size in a millimetres
GetSizeMM()53     inline wxSize GetSizeMM() const { return wxSize(m_width/10, m_height/10); }
54 
55     // Get width and height in device units (1/72th of an inch)
56     wxSize GetSizeDeviceUnits() const ;
57 
58 public:
59     wxPaperSize m_paperId;
60     int         m_platformId;
61     int         m_width;  // In tenths of a millimetre
62     int         m_height; // In tenths of a millimetre
63     wxString    m_paperName;
64 
65 private:
66     DECLARE_DYNAMIC_CLASS(wxPrintPaperType)
67 };
68 
69 WX_DECLARE_STRING_HASH_MAP(wxPrintPaperType*, wxStringToPrintPaperTypeHashMap);
70 
71 class WXDLLIMPEXP_FWD_CORE wxPrintPaperTypeList;
72 
73 class WXDLLEXPORT wxPrintPaperDatabase
74 {
75 public:
76     wxPrintPaperDatabase();
77     ~wxPrintPaperDatabase();
78 
79     void CreateDatabase();
80     void ClearDatabase();
81 
82     void AddPaperType(wxPaperSize paperId, const wxString& name, int w, int h);
83     void AddPaperType(wxPaperSize paperId, int platformId, const wxString& name, int w, int h);
84 
85     // Find by name
86     wxPrintPaperType *FindPaperType(const wxString& name);
87 
88     // Find by size id
89     wxPrintPaperType *FindPaperType(wxPaperSize id);
90 
91     // Find by platform id
92     wxPrintPaperType *FindPaperTypeByPlatformId(int id);
93 
94     // Find by size
95     wxPrintPaperType *FindPaperType(const wxSize& size);
96 
97     // Convert name to size id
98     wxPaperSize ConvertNameToId(const wxString& name);
99 
100     // Convert size id to name
101     wxString ConvertIdToName(wxPaperSize paperId);
102 
103     // Get the paper size
104     wxSize GetSize(wxPaperSize paperId);
105 
106     // Get the paper size
107     wxPaperSize GetSize(const wxSize& size);
108 
109     //
110     wxPrintPaperType* Item(size_t index) const;
111     size_t GetCount() const;
112 private:
113     wxStringToPrintPaperTypeHashMap* m_map;
114     wxPrintPaperTypeList* m_list;
115     // DECLARE_DYNAMIC_CLASS(wxPrintPaperDatabase)
116 };
117 
118 extern WXDLLEXPORT_DATA(wxPrintPaperDatabase*) wxThePrintPaperDatabase;
119 
120 
121 #endif
122     // _WX_PAPERH__
123