pdf_obj.hpp
上传用户:yhdzpy8989
上传日期:2007-06-13
资源大小:13604k
文件大小:5k
源码类别:

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: pdf_obj.hpp,v $
  4.  * PRODUCTION Revision 1000.0  2003/10/31 22:06:27  gouriano
  5.  * PRODUCTION PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.3
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #ifndef GUI_UTILS__PDF_OBJ_HPP
  10. #define GUI_UTILS__PDF_OBJ_HPP
  11. /*  $Id: pdf_obj.hpp,v 1000.0 2003/10/31 22:06:27 gouriano Exp $
  12.  * ===========================================================================
  13.  *
  14.  *                            PUBLIC DOMAIN NOTICE
  15.  *               National Center for Biotechnology Information
  16.  *
  17.  *  This software/database is a "United States Government Work" under the
  18.  *  terms of the United States Copyright Act.  It was written as part of
  19.  *  the author's official duties as a United States Government employee and
  20.  *  thus cannot be copyrighted.  This software/database is freely available
  21.  *  to the public for use. The National Library of Medicine and the U.S.
  22.  *  Government have not placed any restriction on its use or reproduction.
  23.  *
  24.  *  Although all reasonable efforts have been taken to ensure the accuracy
  25.  *  and reliability of the software and data, the NLM and the U.S.
  26.  *  Government do not and cannot warrant the performance or results that
  27.  *  may be obtained by using this software or data. The NLM and the U.S.
  28.  *  Government disclaim all warranties, express or implied, including
  29.  *  warranties of performance, merchantability or fitness for any particular
  30.  *  purpose.
  31.  *
  32.  *  Please cite the author in any work or product based on this material.
  33.  *
  34.  * ===========================================================================
  35.  *
  36.  * Authors:  Peter Meric
  37.  *
  38.  * File Description:
  39.  *   CPdfObj - Represent PDF data objects
  40.  */
  41. #include <corelib/ncbiobj.hpp>
  42. #include <map>
  43. BEGIN_NCBI_SCOPE
  44. class CPdfObject;
  45. class CPdfObj : public CObject
  46. {
  47. public:
  48.     typedef CRef<CPdfObj> TPdfObjRef;
  49.     CPdfObj(const string& str);
  50.     CPdfObj();
  51.     virtual ~CPdfObj();
  52.     // print the CPdfObject
  53.     virtual void PrintTo(CNcbiOstream& stream) const;
  54. protected:
  55.     string m_Str;
  56. };
  57. inline CNcbiOstream& operator<<(CNcbiOstream& strm, const CPdfObj& obj)
  58. {
  59.     obj.PrintTo(strm);
  60.     return strm;
  61. }
  62. class CPdfRotate : public CPdfObj
  63. {
  64. public:
  65.     CPdfRotate(double angle);
  66.     virtual ~CPdfRotate();
  67.     virtual void PrintTo(CNcbiOstream& stream) const;
  68. private:
  69.     double m_Rot;
  70. };
  71. class CPdfTranslate : public CPdfObj
  72. {
  73. public:
  74.     CPdfTranslate(double xoff, double yoff);
  75.     CPdfTranslate(int xoff, int yoff);
  76.     CPdfTranslate(unsigned int xoff, unsigned int yoff);
  77.     virtual ~CPdfTranslate();
  78.     virtual void PrintTo(CNcbiOstream& stream) const;
  79. private:
  80.     double m_XOff;
  81.     double m_YOff;
  82.     unsigned int m_Prec;
  83. };
  84. class CPdfNumber : public CPdfObj
  85. {
  86. public:
  87.     CPdfNumber(double d);
  88.     CPdfNumber(int i);
  89.     CPdfNumber(unsigned int i);
  90.     virtual ~CPdfNumber();
  91.     virtual void PrintTo(CNcbiOstream& stream) const;
  92. private:
  93.     double m_Num;
  94.     unsigned int m_Prec;
  95. };
  96. class CPdfString : public CPdfObj
  97. {
  98. public:
  99.     CPdfString(const string& str);
  100.     virtual ~CPdfString();
  101.     virtual void PrintTo(CNcbiOstream& stream) const;
  102. };
  103. class CPdfName : public CPdfObj
  104. {
  105. public:
  106.     CPdfName(const string& str);
  107.     virtual ~CPdfName();
  108.     virtual void PrintTo(CNcbiOstream& stream) const;
  109. };
  110. class CPdfIndirectObj : public CPdfObj
  111. {
  112. public:
  113.     CPdfIndirectObj(const CRef<CPdfObject>& obj);
  114.     virtual ~CPdfIndirectObj();
  115.     virtual void PrintTo(CNcbiOstream& stream) const;
  116. private:
  117.     CRef<CPdfObject> m_Obj;
  118. };
  119. class CPdfArray : public CPdfObj
  120. {
  121. public:
  122.     typedef vector<TPdfObjRef> TArray;
  123.     TArray& GetArray(void);
  124.     virtual void PrintTo(CNcbiOstream& stream) const;
  125.     void Add(const CRef<CPdfArray>& arr);
  126. private:
  127.     TArray m_Array;
  128. };
  129. class CPdfDictionary : public CPdfObj
  130. {
  131. public:
  132.     TPdfObjRef& operator[](const string& key);
  133.     virtual void PrintTo(CNcbiOstream& stream) const;
  134.     void Add(const CRef<CPdfDictionary>& dict);
  135. private:
  136.     typedef map<string, TPdfObjRef> TDict;
  137.     TDict m_Dict;
  138. };
  139. END_NCBI_SCOPE
  140. #endif // GUI_UTILS__PDF_OBJ_HPP
  141. /*
  142.  * ===========================================================================
  143.  * $Log: pdf_obj.hpp,v $
  144.  * Revision 1000.0  2003/10/31 22:06:27  gouriano
  145.  * PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.3
  146.  *
  147.  * Revision 1.3  2003/06/24 15:44:09  meric
  148.  * Added CPdfRotate and CPdfTranslate
  149.  * Added CPdfArray::Add(...)
  150.  * Added CPdfNumber ctors for [unsigned] int, set precision on output
  151.  *
  152.  * Revision 1.2  2003/06/16 12:46:21  dicuccio
  153.  * Clean-up after initial commit
  154.  *
  155.  * Revision 1.1  2003/06/13 19:00:30  meric
  156.  * Initial version
  157.  *
  158.  *
  159.  * ===========================================================================
  160.  */