#include "../../lib/library.h" #include "../bitmaps/handtoface.xpm" unsigned int iterations; unsigned int threshhold; Widget i_field; Widget Q_field; Widget P_field; Widget t_field; float Q=0; float P=0; Pixmap buffer; GC buffer_gc; struct antiright_drawing_structure buffer_drawing; void update_field(Widget *field, float variable) { char *text; asprintf(&text, "%f", variable); XmTextFieldSetString((*field), text); free(text); } void update_fields() { update_field(&i_field, iterations); update_field(&t_field, threshhold); update_field(&Q_field, Q); update_field(&P_field, P); } unsigned int test(float x, float y) { register float xn=x, yn=y; unsigned int counter; for(counter=0; counterthreshhold) { antiright_draw_point(&buffer_drawing, x*scale+antiright.graph.width/2, -y*scale+antiright.graph.height/2); } } } } void q_mvcb(Widget widget, XtPointer client_data, XtPointer call_data) { char *input=XmTextFieldGetString(widget); Q=atof(input); XtFree(input); } void p_mvcb(Widget widget, XtPointer client_data, XtPointer call_data) { char *input=XmTextFieldGetString(widget); P=atof(input); XtFree(input); } void i_mvcb(Widget widget, XtPointer client_data, XtPointer call_data) { char *input=XmTextFieldGetString(widget); iterations=atoi(input); XtFree(input); } void t_mvcb(Widget widget, XtPointer client_data, XtPointer call_data) { char *input=XmTextFieldGetString(widget); threshhold=atoi(input); XtFree(input); } void expose_cb() { update_fields(); antiright_draw_foreground(&buffer_drawing, 0, 0, 0); XFillRectangle(antiright.display, buffer, buffer_gc, 0, 0, antiright.graph.width, antiright.graph.height); antiright_draw_foreground(&buffer_drawing, 200, 200, 200); fractal(); XCopyArea(antiright.display, buffer, antiright.graph.drawing.window, antiright.graph.drawing.gc, 0, 0, 256,256, 0, 0); XFlush(antiright.display); //sleep(1); } void iterate_cb() { iterations++; threshhold=iterations-1; update_fields(); expose_cb(); } int main(int argc, char **argv) { Widget form; Widget iterate; Widget refresh; iterations=1; threshhold=1; antiright_initialize_application(&argc, argv, "AFract"); antiright_set_pixmap_from_data(antiright.parent_widget, handtoface_xpm); ARCLARG; form=antiright_form(antiright.parent_widget); ARCLARG; XtVaSetValues(antiright.parent_widget, XmNwidth, 256, XmNheight, 256, NULL); antiright.graph.width=256; antiright.graph.height=256; XtRealizeWidget(antiright.parent_widget); antiright_form_positions(0, 80, 0, 80); antiright_create_graph(form); XtRemoveAllCallbacks(antiright.graph.widget, XmNexposeCallback); /* XtAddCallback(antiright.graph.widget, */ /* XmNexposeCallback, */ /* expose_cb, */ /* NULL); */ ARCLARG; antiright_form_positions(80, 90, 0, 100); iterate=antiright_button(form, "Iterate", iterate_cb, NULL); ARCLARG; antiright_form_positions(90, 100, 0, 100); refresh=antiright_button(form, "Refresh", expose_cb, NULL); ARCLARG; antiright_form_positions(0, 10, 80, 100); antiright_label(form, "I:"); ARCLARG; antiright_form_positions(10, 20, 80, 100); i_field=XmCreateTextField(form, "Iterations", antiright.arguments, antiright.arguments_int); XtAddCallback(i_field, XmNactivateCallback, i_mvcb, NULL); XtManageChild(i_field); ARCLARG; antiright_form_positions(20, 30, 80, 100); antiright_label(form, "T:"); ARCLARG; antiright_form_positions(30, 40, 80, 100); t_field=XmCreateTextField(form, "Threshhold", antiright.arguments, antiright.arguments_int); XtAddCallback(t_field, XmNactivateCallback, t_mvcb, NULL); XtManageChild(t_field); ARCLARG; antiright_form_positions(40, 50, 80, 100); antiright_label(form, "P:"); ARCLARG; antiright_form_positions(50, 60, 80, 100); P_field=XmCreateTextField(form, "P", antiright.arguments, antiright.arguments_int); XtAddCallback(P_field, XmNactivateCallback, p_mvcb, NULL); XtManageChild(P_field); ARCLARG; antiright_form_positions(60, 70, 80, 100); antiright_label(form, "Q:"); ARCLARG; antiright_form_positions(70, 80, 80, 100); Q_field=XmCreateTextField(form, "Q", antiright.arguments, antiright.arguments_int); XtAddCallback(Q_field, XmNactivateCallback, q_mvcb, NULL); XtManageChild(Q_field); buffer=XCreatePixmap(antiright.display, antiright.graph.drawing.window, 256, 256, DefaultDepth(antiright.display, antiright.screen)); buffer_gc=XCreateGC(antiright.display, buffer, 0, NULL); antiright_drawing_initialize(antiright.graph.widget, &buffer_drawing); buffer_drawing.window=buffer; buffer_drawing.gc=XCreateGC(antiright.display, buffer, 0, NULL); iterate_cb(); XtAppMainLoop(antiright.app_context); XFreeGC(antiright.display, buffer_drawing.gc); return 0; }