view src/Fractal.cpp @ 2:0684158d38a8

Before cleanup. Still has experimental code in it.
author Eris Caffee <discordia@eldalin.com>
date Fri, 22 Oct 2010 02:21:52 -0500
parents 455406f5f021
children 0f4ad525f49a
line source
1 ////////////////////////////////////////////////////////////////////////////////
2 //
3 // (C) 2010 Sarah Eris Horsley Caffee
4 //
5 // mandelbrot - A simple Mandelbrot Set viewer.
6 //
7 // Fractal.cpp
8 // Fractal calculator virtual class implementation. Actual fractals should
9 // implement this.
10 //
11 ////////////////////////////////////////////////////////////////////////////////
13 #include <string>
15 #include "SDL.h"
17 #include "Fractal.h"
20 ////////////////////////////////////////////////////////////////////////////////
22 Fractal::Fractal() :
23 name ("No fractal selected"),
24 re_min (0),
25 im_max (0),
26 size (0),
27 max_iter (0),
28 surface (NULL),
29 calc_needed (false)
30 {
31 }
33 ////////////////////////////////////////////////////////////////////////////////
34 void Fractal::set_re_min(const double r_min)
35 {
36 re_min = r_min;
37 }
40 ////////////////////////////////////////////////////////////////////////////////
41 void Fractal::set_im_max(const double i_max)
42 {
43 im_max = i_max;
44 }
47 ////////////////////////////////////////////////////////////////////////////////
48 void Fractal::set_size(const double s)
49 {
50 if (s > 0.0)
51 size = s;
52 else
53 size = 1.0;
54 }
57 ////////////////////////////////////////////////////////////////////////////////
58 void Fractal::set_max_iter(const unsigned int iter)
59 {
60 if (iter > 0)
61 max_iter = iter;
62 else
63 max_iter = 1;
64 }
67 ////////////////////////////////////////////////////////////////////////////////
68 void Fractal::inc_max_iter()
69 {
70 max_iter++;
71 }
74 ////////////////////////////////////////////////////////////////////////////////
75 void Fractal::dec_max_iter()
76 {
77 if (max_iter > 0)
78 max_iter--;
79 }
82 ////////////////////////////////////////////////////////////////////////////////
83 void Fractal::set_calc_needed()
84 {
85 calc_needed = true;
86 }
89 ////////////////////////////////////////////////////////////////////////////////
90 double Fractal::get_re_min()
91 {
92 return re_min;
93 }
96 ////////////////////////////////////////////////////////////////////////////////
97 double Fractal::get_im_max()
98 {
99 return im_max;
100 }
103 ////////////////////////////////////////////////////////////////////////////////
104 double Fractal::get_size()
105 {
106 return size;
107 }
110 ////////////////////////////////////////////////////////////////////////////////
111 unsigned int Fractal::get_max_iter()
112 {
113 return max_iter;
114 }
117 ////////////////////////////////////////////////////////////////////////////////
118 const char * Fractal::get_name()
119 {
120 return name.c_str();
121 }
123 ////////////////////////////////////////////////////////////////////////////////
124 void Fractal::draw_pixel(int x, int y, Uint32 * color)
125 {
126 static char * data;
128 if (SDL_MUSTLOCK(surface)) SDL_LockSurface(surface);
130 data = (char *) surface->pixels
131 + y * surface->pitch
132 + x * surface->format->BytesPerPixel;
133 memcpy(data, color, surface->format->BytesPerPixel);
135 if (SDL_MUSTLOCK(surface)) SDL_UnlockSurface(surface);
136 }