home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
- #include <math.h>
- #include <values.h>
- #include <X11/StringDefs.h>
- #include <X11/Intrinsic.h>
- #include <Xm/Xm.h>
- #include <Xm/DrawingA.h>
- #include <X11/Xutil.h>
- #include <X11/cursorfont.h>
- #include "defs.h"
- #include "funcs.h"
-
- void
- CreateImageOld(
- Widget w,
- image_data_t *data)
- {
- double delta_p, delta_q, p, x, y, x_2, y_2, r, new_x;
- int n_p, n_q, k, color, mod_max;
- double *q, q_val;
-
- XDefineCursor(XtDisplay(data->area), XtWindow(data->area),
- data->clock_cursor);
- XFlush(XtDisplay(data->area));
- InitBuffer(data);
- delta_p = (data->p_max - data->p_min) / (data->width - 1);
- delta_q = (data->q_max - data->q_min) / (data->height - 1);
- q = (double *)ALLOCATE_LOCAL(data->height * sizeof(double));
- mod_max = data->max_color - 1;
- for (n_q = 0; n_q < data->height; ++n_q)
- q[n_q] = data->q_min + n_q * delta_q;
- for (n_p = 0; n_p < data->width; ++n_p)
- {
- p = data->p_min + n_p * delta_p;
- for (n_q = 0; n_q < data->height; ++n_q)
- {
- k = 0;
- x = 0;
- y = 0;
- q_val = q[n_q];
- do
- {
- x_2 = x * x;
- y_2 = y * y;
- new_x = x_2 - y_2 + p;
- y = 2 * x * y + q_val;
- x = new_x;
- ++k;
- r = x_2 + y_2;
- } while (r <= data->M && k < data->K);
- if (k == data->K)
- color = 0;
- else
- color = k % mod_max + 1;
- BufferPoint(w, data, color, n_p, n_q);
- }
- }
- FlushBuffer(w, data);
- DEALLOCATE_LOCAL((char *)q);
- XDefineCursor(XtDisplay(data->area), XtWindow(data->area),
- data->normal_cursor);
- }
-