fMandelC.h 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. //---------------------------------------------------------------------------
  2. #ifndef fMandelCH
  3. #define fMandelCH
  4. //---------------------------------------------------------------------------
  5. #include <System.Classes.hpp>
  6. #include <Vcl.Controls.hpp>
  7. #include <Vcl.StdCtrls.hpp>
  8. #include <Vcl.Forms.hpp>
  9. #include "GR32_ExtImage.hpp"
  10. #include "GR32_Image.hpp"
  11. #include <Vcl.Dialogs.hpp>
  12. #include <Vcl.ExtDlgs.hpp>
  13. #include <Vcl.Menus.hpp>
  14. //---------------------------------------------------------------------------
  15. typedef
  16. /*
  17. TRasterizerKind = (rkRegular, rkProgressive, rkSwizzling, rkTesseral,
  18. rkContour, rkMultithreadedRegularRasterizer);
  19. TSamplerKind = (skDefault, skSS2X, skSS3X, skSS4X, skPattern2, skPattern3,
  20. skPattern4);
  21. TMandelbrotPalette = (mpGR32, mpRainbow, mpMonochrome, mpSimple);
  22. */
  23. class TMandelbrotSampler : public TCustomSampler
  24. {
  25. private:
  26. FPalette: array of TColor32;
  27. FWidthInv, FHeightInv: Single;
  28. protected:
  29. void CalculatePalette();
  30. public:
  31. int MaxIterations;
  32. TFloatRect Bounds;
  33. TCustomPaintBox32 *Image;
  34. TMandelbrotPalette *Palette;
  35. constructor Create(AImage: TCustomPaintBox32);
  36. TColor32 GetSampleFloat(TFloat X, Y); override;
  37. void PrepareSampling; override;
  38. };
  39. class TFormMandelC : public TForm
  40. {
  41. __published: // IDE-managed Components
  42. TSyntheticImage32 *Img;
  43. TMainMenu *MainMenu;
  44. TMenuItem *miFile;
  45. TMenuItem *miSave;
  46. TMenuItem *N3;
  47. TMenuItem *miExit;
  48. TMenuItem *miRasterizer;
  49. TMenuItem *miRegularSampling;
  50. TMenuItem *miProgressive;
  51. TMenuItem *miSwizzling;
  52. TMenuItem *miTesseral;
  53. TMenuItem *miContour;
  54. TMenuItem *miMultithreadedRegularRasterizer;
  55. TMenuItem *miSuperSampler;
  56. TMenuItem *miDefault;
  57. TMenuItem *N5;
  58. TMenuItem *miSuperSampler2x;
  59. TMenuItem *miSuperSampler3x;
  60. TMenuItem *miSuperSampler4x;
  61. TMenuItem *miAdaptive;
  62. TMenuItem *N2;
  63. TMenuItem *miPatternSampler2x;
  64. TMenuItem *miPatternSampler3x;
  65. TMenuItem *miPatternSampler4x;
  66. TMenuItem *miMaxIterations;
  67. TMenuItem *miMaxIterations50;
  68. TMenuItem *miMaxIterations160;
  69. TMenuItem *miMaxIterations256;
  70. TMenuItem *miMaxIterations320;
  71. TMenuItem *miMaxIterations512;
  72. TMenuItem *miPalette;
  73. TMenuItem *miPaletteDefault;
  74. TMenuItem *miPaletteRainbow;
  75. TMenuItem *miPaletteMonochrome;
  76. TMenuItem *miPaletteSimple;
  77. TSavePictureDialog *SavePictureDialog;
  78. void __fastcall FormCreate(TObject *Sender);
  79. private: // User declarations
  80. public: // User declarations
  81. TRasterizer *Rasterizer;
  82. TCustomSampler *Sampler;
  83. TMandelbrotSampler *MandelSampler;
  84. TSuperSampler *SuperSampler;
  85. TAdaptiveSuperSampler *AdaptiveSampler;
  86. TPatternSampler *JitteredSampler;
  87. TSamplerKind *SamplerKind;
  88. void __fastcall SelectRasterizer(TRasterizerKind *RasterizerKind);
  89. void __fastcall SelectSampler(TSamplerKind *ASamplerKind);
  90. __fastcall TFormMandelC(TComponent* Owner);
  91. };
  92. //---------------------------------------------------------------------------
  93. extern PACKAGE TFormMandelC *FormMandelC;
  94. //---------------------------------------------------------------------------
  95. #endif