summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/fractal.jl11
-rw-r--r--src/renderer.jl8
2 files changed, 9 insertions, 10 deletions
diff --git a/src/fractal.jl b/src/fractal.jl
index 1912d40..f2a9bec 100644
--- a/src/fractal.jl
+++ b/src/fractal.jl
@@ -5,19 +5,18 @@ type Fractal{T <: FloatingPoint}
function Fractal(
imgsize::(Integer, Integer),
- range::(T, T, T, T),
+ bb::Base.Graphics.BoundingBox,
make_c::Function,
step::Function
)
- (ul_x, ul_y, width, height) = range
(size_x, size_y) = imgsize
aspect_ratio = size_y / size_x
if size_x < size_y
- range_x = (ul_x, ul_x + width)
- range_y = (ul_y, ul_y + height * aspect_ratio)
+ range_x = (bb.xmin, bb.xmax)
+ range_y = (bb.ymin, bb.ymin + (bb.ymax - bb.ymin) * aspect_ratio)
else
- range_x = (ul_x, ul_x + width / aspect_ratio)
- range_y = (ul_y, ul_y + height)
+ range_x = (bb.xmin, bb.xmin + (bb.xmax - bb.xmin) / aspect_ratio)
+ range_y = (bb.ymin, bb.ymax)
end
line_x = linspace(range_x[1], range_x[2], size_x)
line_y = linspace(range_y[1], range_y[2], size_y)
diff --git a/src/renderer.jl b/src/renderer.jl
index 66dc943..c9290fa 100644
--- a/src/renderer.jl
+++ b/src/renderer.jl
@@ -8,9 +8,9 @@ type FractalCanvas
f::FractalExplorer.Fractal
image::Array{HSV{Float64}, 2}
- function FractalCanvas(c::Canvas, range::(Float64, Float64, Float64, Float64), make_c::Function, step::Function)
+ function FractalCanvas(c::Canvas, bb::Base.Graphics.BoundingBox, make_c::Function, step::Function)
winsize = tuple(get_size(c)...)
- f = FractalExplorer.Fractal{Float64}(winsize, range, make_c, step)
+ f = FractalExplorer.Fractal{Float64}(winsize, bb, make_c, step)
image = [ HSV(0, 0, 0) for y=1:winsize[2], x=1:winsize[1] ]
fc = new(c, f, image)
c.draw = function(x)
@@ -39,8 +39,8 @@ end
fractal(make_c, step) = fractal(createwindow(), make_c, step)
fractal(fc::FractalCanvas, make_c, step) = fractal(fc.c, make_c, step)
-function fractal(canvas::Canvas, make_c::Function, step::Function, should_wait=!isinteractive(), range=(-2.0, -2.0, 4.0, 4.0))
- fc = FractalCanvas(canvas, range, make_c, step)
+function fractal(canvas::Canvas, make_c::Function, step::Function, should_wait=!isinteractive(), bb=Base.Graphics.BoundingBox(-2.0, 2.0, -2.0, 2.0))
+ fc = FractalCanvas(canvas, bb, make_c, step)
saw_some_pixels = false
for i in 1:1000