JULIA.H
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:6k
源码类别:

Windows编程

开发平台:

Visual C++

  1. //+---------------------------------------------------------------------------
  2. //
  3. //  Microsoft Windows
  4. //  Copyright 1992 - 1997 Microsoft Corporation.
  5. //
  6. //  File:       julia.h
  7. //
  8. //  Contents:   class definitions for the Julia Set Fractal engine
  9. //
  10. //  Classes:    CJuliaCF
  11. //              CJulia
  12. //
  13. //  Functions:
  14. //
  15. //  History:    4-14-94   stevebl   Created
  16. //
  17. //----------------------------------------------------------------------------
  18. #ifndef __JULIA_H__
  19. #define __JULIA_H__
  20. #define PROPERTIES 100
  21. #define IDC_LOWREAL         1001
  22. #define IDC_LOWIMAGINARY    1002
  23. #define IDC_HIGHREAL        1003
  24. #define IDC_HIGHIMAGINARY   1004
  25. #define IDC_CREAL           1005
  26. #define IDC_CIMAGINARY      1006
  27. #define IDC_LIMIT           1007
  28. #define IDC_ABOUT           1008
  29. #define IDC_USEBOUNDINGBOXES 1009
  30. #define IDS_ABOUT_TITLE     1100
  31. #define IDS_ABOUT_TEXT      1101
  32. #ifdef __cplusplus
  33. #include <frcngn.h>
  34. #include <frhost.h>
  35. #include <qudcln.h>
  36. #include <qudngn.h>
  37. #include <cdialog.h>
  38. //+---------------------------------------------------------------------------
  39. //
  40. //  Class:      CJuliaCF
  41. //
  42. //  Purpose:    class factory for the Julia set engine
  43. //
  44. //  Interface:  CJuliaCF       -- constructor
  45. //              ~CJuliaCF      -- destructor
  46. //              QueryInterface -- requests an interface
  47. //              AddRef         -- increments refcount
  48. //              Release        -- decrements refcount
  49. //              CreateInstance -- creates a Mandelbrot engine
  50. //              LockServer     -- keeps cf around if released
  51. //
  52. //  History:    4-14-94   stevebl   Created
  53. //
  54. //----------------------------------------------------------------------------
  55. class CJuliaCF : public IClassFactory
  56. {
  57. public:
  58.     CJuliaCF();
  59.     ~CJuliaCF();
  60.     HRESULT STDMETHODCALLTYPE QueryInterface(REFIID, LPVOID *);
  61.     ULONG STDMETHODCALLTYPE AddRef(void);
  62.     ULONG STDMETHODCALLTYPE Release(void);
  63.     HRESULT STDMETHODCALLTYPE CreateInstance(LPUNKNOWN, REFIID, LPVOID*);
  64.     HRESULT STDMETHODCALLTYPE LockServer(BOOL);
  65. protected:
  66.     ULONG _cRef;
  67. };
  68. //+---------------------------------------------------------------------------
  69. //
  70. //  Class:      CJulia
  71. //
  72. //  Purpose:    implements the Julia set engine
  73. //
  74. //  Interface:  QueryInterface     -- retrieves an interface
  75. //              AddRef             -- increments refcount
  76. //              Release            -- decrements refcount
  77. //              GetClassID         -- gets the CLSID
  78. //              IsDirty            -- tests if data should be saved
  79. //              Load               -- loads properties
  80. //              Save               -- saves properties
  81. //              GetSizeMax         -- returns max size of property stream
  82. //              Init               -- initializes engine
  83. //              SetDefaults        -- sets default property values
  84. //              SetProperties      -- displays the property dialog box
  85. //              GetExtent          -- gets size of the graph (in graph units)
  86. //              SetExtent          -- sets size of the graph (in graph units)
  87. //              SetGraphSize       -- sets size of the graph (in pixels)
  88. //              Start              -- starts the graph engine
  89. //              Stop               -- stops the graph engine
  90. //              ComputePoint       -- returns the graph color at a given point
  91. //              DoneDrawingGraph   -- called when the graph engine is finished
  92. //              DialogProc         -- dialog proc for the property dialog box
  93. //              Initialize         -- private initialization function
  94. //              CJulia             -- constructor
  95. //              ~CJulia            -- destructor
  96. //
  97. //  History:    4-14-94   stevebl   Created
  98. //              7-07-94   stevebl   Changed definition of ComputePoint
  99. //
  100. //----------------------------------------------------------------------------
  101. class CJulia : public IFractalEngine, IPersistStream, IQuadrantClient, CHlprDialog
  102. {
  103. public:
  104.     // IUnknown methods
  105.     HRESULT STDMETHODCALLTYPE QueryInterface(REFIID, LPVOID *);
  106.     ULONG STDMETHODCALLTYPE AddRef(void);
  107.     ULONG STDMETHODCALLTYPE Release(void);
  108.     // IPersist methods
  109.     HRESULT STDMETHODCALLTYPE GetClassID(LPCLSID pclsid);
  110.     // IPersistStream methods
  111.     HRESULT STDMETHODCALLTYPE IsDirty(void);
  112.     HRESULT STDMETHODCALLTYPE Load(LPSTREAM pStm);
  113.     HRESULT STDMETHODCALLTYPE Save(LPSTREAM pStm, BOOL fClearDirty);
  114.     HRESULT STDMETHODCALLTYPE GetSizeMax(ULARGE_INTEGER * pcbSize);
  115.     // IFractalEngine methods
  116.     HRESULT STDMETHODCALLTYPE Init(IFractalHost *pfh);
  117.     HRESULT STDMETHODCALLTYPE SetDefaults(void);
  118.     HRESULT STDMETHODCALLTYPE SetProperties(HWND hwnd);
  119.     HRESULT STDMETHODCALLTYPE GetExtent(
  120.         double *pdLeft,
  121.         double *pdTop,
  122.         double *pdRight,
  123.         double *pdBottom);
  124.     HRESULT STDMETHODCALLTYPE SetExtent(
  125.         double dLeft,
  126.         double dTop,
  127.         double dRight,
  128.         double dBottom);
  129.     HRESULT STDMETHODCALLTYPE SetGraphSize(
  130.         unsigned int uWidth,
  131.         unsigned int uHeight);
  132.     HRESULT STDMETHODCALLTYPE Start(void);
  133.     HRESULT STDMETHODCALLTYPE Stop(void);
  134.     // IQuadrantClient methods
  135.     HRESULT STDMETHODCALLTYPE ComputePoint(
  136.         unsigned *puColor,
  137.         int x,
  138.         int y);
  139.     HRESULT STDMETHODCALLTYPE DoneDrawingGraph(void);
  140.     // Methods from CHlprDialog
  141.     BOOL DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
  142.     // Methods that aren't part of any interface
  143.     BOOL Initialize(void);
  144.     CJulia();
  145.     ~CJulia();
  146. private:
  147.     ULONG _cRef;
  148.     double _dLeft, _dTop, _dRight, _dBottom;
  149.     double _dCr, _dCi;
  150.     unsigned _uWidth, _uHeight;
  151.     BOOL _fRunning;
  152.     IFractalHost * _pfh;
  153.     IQuadrantEngine * _pqe;
  154.     unsigned _uLimit;
  155.     BOOL _fDirty;
  156.     BOOL _fUseBoundingBoxes;
  157. };
  158. extern HINSTANCE ghinst;
  159. extern ULONG gcRef, gcLock;
  160. #endif //__cplusplus
  161. #endif //__JULIA_H__