wxWidgets/include/wx/paper.h
2005-09-23 12:56:45 +00:00

123 lines
3.5 KiB
C++

/////////////////////////////////////////////////////////////////////////////
// Name: paper.h
// Purpose: Paper database types and classes
// Author: Julian Smart
// Modified by:
// Created: 01/02/97
// RCS-ID: $Id$
// Copyright: (c) Julian Smart
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_PAPERH__
#define _WX_PAPERH__
#include "wx/defs.h"
#include "wx/event.h"
#include "wx/cmndata.h"
#include "wx/intl.h"
#include "wx/hashmap.h"
/*
* Paper type: see defs.h for wxPaperSize enum.
* A wxPrintPaperType can have an id and a name, or just a name and wxPAPER_NONE,
* so you can add further paper types without needing new ids.
*/
#ifdef __WXMSW__
#define WXADDPAPER(paperId, platformId, name, w, h) AddPaperType(paperId, platformId, name, w, h)
#else
#define WXADDPAPER(paperId, platformId, name, w, h) AddPaperType(paperId, 0, name, w, h)
#endif
class WXDLLEXPORT wxPrintPaperType: public wxObject
{
public:
wxPrintPaperType();
// platformId is a platform-specific id, such as in Windows, DMPAPER_...
wxPrintPaperType(wxPaperSize paperId, int platformId, const wxString& name, int w, int h);
inline wxString GetName() const { return wxGetTranslation(m_paperName); }
inline wxPaperSize GetId() const { return m_paperId; }
inline int GetPlatformId() const { return m_platformId; }
// Get width and height in tenths of a millimetre
inline int GetWidth() const { return m_width; }
inline int GetHeight() const { return m_height; }
// Get size in tenths of a millimetre
inline wxSize GetSize() const { return wxSize(m_width, m_height); }
// Get size in a millimetres
inline wxSize GetSizeMM() const { return wxSize(m_width/10, m_height/10); }
// Get width and height in device units (1/72th of an inch)
wxSize GetSizeDeviceUnits() const ;
public:
wxPaperSize m_paperId;
int m_platformId;
int m_width; // In tenths of a millimetre
int m_height; // In tenths of a millimetre
wxString m_paperName;
private:
DECLARE_DYNAMIC_CLASS(wxPrintPaperType)
};
WX_DECLARE_STRING_HASH_MAP(wxPrintPaperType*, wxStringToPrintPaperTypeHashMap);
class WXDLLEXPORT wxPrintPaperTypeList;
class WXDLLEXPORT wxPrintPaperDatabase
{
public:
wxPrintPaperDatabase();
~wxPrintPaperDatabase();
void CreateDatabase();
void ClearDatabase();
void AddPaperType(wxPaperSize paperId, const wxString& name, int w, int h);
void AddPaperType(wxPaperSize paperId, int platformId, const wxString& name, int w, int h);
// Find by name
wxPrintPaperType *FindPaperType(const wxString& name);
// Find by size id
wxPrintPaperType *FindPaperType(wxPaperSize id);
// Find by platform id
wxPrintPaperType *FindPaperTypeByPlatformId(int id);
// Find by size
wxPrintPaperType *FindPaperType(const wxSize& size);
// Convert name to size id
wxPaperSize ConvertNameToId(const wxString& name);
// Convert size id to name
wxString ConvertIdToName(wxPaperSize paperId);
// Get the paper size
wxSize GetSize(wxPaperSize paperId);
// Get the paper size
wxPaperSize GetSize(const wxSize& size);
//
wxPrintPaperType* Item(size_t index) const;
size_t GetCount() const;
private:
wxStringToPrintPaperTypeHashMap* m_map;
wxPrintPaperTypeList* m_list;
// DECLARE_DYNAMIC_CLASS(wxPrintPaperDatabase)
};
extern WXDLLEXPORT_DATA(wxPrintPaperDatabase*) wxThePrintPaperDatabase;
#endif
// _WX_PAPERH__