Fractals: Use constants for screen panning

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24258 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Tomer Shalev 2010-01-17 15:32:17 +00:00
parent 51cb7eb5f2
commit 55240a2e85
3 changed files with 10 additions and 4 deletions

View file

@ -23,9 +23,6 @@
#include "fractal_sets.h" #include "fractal_sets.h"
#define LCD_SHIFT_X (LCD_WIDTH / 8)
#define LCD_SHIFT_Y (LCD_HEIGHT / 8)
void rects_queue_init(void); void rects_queue_init(void);
void rects_calc_all(int (*calc)(struct fractal_rect *, int (*)(void *), void *), void rects_calc_all(int (*calc)(struct fractal_rect *, int (*)(void *), void *),
int (*button_yield_cb)(void *), void *ctx); int (*button_yield_cb)(void *), void *ctx);

View file

@ -24,6 +24,14 @@
#include "lib/grey.h" #include "lib/grey.h"
#include "lib/xlcd.h" #include "lib/xlcd.h"
#define DELTA 8 /* Panning moves 1/DELTA of screen */
#define LCD_SHIFT_X (LCD_WIDTH / DELTA)
#define LCD_SHIFT_Y (LCD_HEIGHT / DELTA)
#define X_DELTA(x) (((x) * LCD_WIDTH) / DELTA)
#define Y_DELTA(y) (((y) * LCD_HEIGHT) / DELTA)
struct fractal_rect struct fractal_rect
{ {
int px_min; int px_min;

View file

@ -139,8 +139,9 @@ static int ilog2_fp(long value) /* calculate integer log2(value_fp_6.26) */
static void recalc_parameters(void) static void recalc_parameters(void)
{ {
ctx.x_step = (ctx.x_max - ctx.x_min) / LCD_WIDTH; ctx.x_step = (ctx.x_max - ctx.x_min) / LCD_WIDTH;
ctx.x_delta = (ctx.x_step * LCD_WIDTH) / 8; ctx.x_delta = X_DELTA(ctx.x_step);
ctx.y_step = (ctx.y_max - ctx.y_min) / LCD_HEIGHT; ctx.y_step = (ctx.y_max - ctx.y_min) / LCD_HEIGHT;
ctx.y_delta = Y_DELTA(ctx.y_step);
ctx.y_delta = (ctx.y_step * LCD_HEIGHT) / 8; ctx.y_delta = (ctx.y_step * LCD_HEIGHT) / 8;
ctx.step_log2 = ilog2_fp(MIN(ctx.x_step, ctx.y_step)); ctx.step_log2 = ilog2_fp(MIN(ctx.x_step, ctx.y_step));
ctx.max_iter = MAX(15, -15 * ctx.step_log2 - 45); ctx.max_iter = MAX(15, -15 * ctx.step_log2 - 45);