/* Sequential Mandelbrot program */ //http://www.coe.uncc.edu/~abw/parallel/par_prog/resources/mandelbrot.c //http://www.coe.uncc.edu/~abw/parallel/par_prog/resources/assign2.html #include #include #include #include #include #include #define X_RESN 800 /* x resolution */ #define Y_RESN 800 /* y resolution */ typedef struct complextype { float real, imag; } Compl; int main () { Window win; /* initialization for a window */ unsigned int width, height, /* window size */ x, y, /* window position */ border_width, /*border width in pixels */ display_width, display_height, /* size of screen */ screen; /* which screen */ char *window_name = "Mandelbrot Set", *display_name = NULL; char filename[80]; GC gc; unsigned long valuemask = 0; XGCValues values; Display *display; XSizeHints size_hints; Pixmap bitmap; XPoint points[800]; FILE *fp, *fopen (); char str[100]; /* FOR THE VERSION OF OPENING THE FILES FOR WRITTEN BY EACH PROCESS IN "PART A", SEE LINE 117 BELOW */ /* fp = fopen("mandelpoints.txt","r"); if (fp == NULL) { printf("Can't open file\n"); exit(0); } printf("Opened file\n"); */ XSetWindowAttributes attr[1]; /* Mandlebrot variables */ int i, j, k; Compl z, c; float lengthsq, temp; /* connect to Xserver */ if ( (display = XOpenDisplay (display_name)) == NULL ) { fprintf (stderr, "drawon: cannot connect to X server %s\n", XDisplayName (display_name) ); exit (-1); } /* get screen size */ screen = DefaultScreen (display); display_width = DisplayWidth (display, screen); display_height = DisplayHeight (display, screen); /* set window size */ width = X_RESN; height = Y_RESN; /* set window position */ x = 0; y = 0; /* create opaque window */ border_width = 4; win = XCreateSimpleWindow (display, RootWindow (display, screen), x, y, width, height, border_width, BlackPixel (display, screen), WhitePixel (display, screen)); size_hints.flags = USPosition|USSize; size_hints.x = x; size_hints.y = y; size_hints.width = width; size_hints.height = height; size_hints.min_width = 300; size_hints.min_height = 300; XSetNormalHints (display, win, &size_hints); XStoreName(display, win, window_name); /* create graphics context */ gc = XCreateGC (display, win, valuemask, &values); XSetBackground (display, gc, WhitePixel (display, screen)); XSetForeground (display, gc, BlackPixel (display, screen)); XSetLineAttributes (display, gc, 1, LineSolid, CapRound, JoinRound); attr[0].backing_store = Always; attr[0].backing_planes = 1; attr[0].backing_pixel = BlackPixel(display, screen); XChangeWindowAttributes(display, win, CWBackingStore | CWBackingPlanes | CWBackingPixel, attr); XMapWindow (display, win); XSync(display, 0); /* USE THIS CODE TO READ IN DATA FROM EACH FILE GENERATED IN THE PARALLEL "PART A" VERSION: for(rank=0; rank