void paint_julia_prev(infoptr pic, point mouse_pos) { struct picture_info prev_pic; dpoint p, tmp; int n = 0; prev_pic.area = get_prev_rect(pic); init_coords(&prev_pic); /* Asetetaan sopiva skaalaus */ /* Julia-vakio hiiren koordinaateista */ prev_pic.julia_c = to_dpoint(mouse_pos, pic); SRGP_setClipRectangle(prev_pic.area); SRGP_setColor(SRGP_BLACK); /* Peitetään vanha kuva */ SRGP_fillRectangleCoord(prev_pic.area.bottom_left.x + 1, prev_pic.area.bottom_left.y + 1, prev_pic.area.top_right.x - 1, prev_pic.area.top_right.y - 1); SRGP_setColor(SRGP_WHITE); /* Valkea reunus */ SRGP_rectangle(prev_pic.area); p.x = 0; /* Inverse functionin */ p.y = 0; /* alkupiste */ while(n < JULIA_LIMIT) { /* z[n+1] = sqrt(z[n] - c) */ tmp.x = p.x - prev_pic.julia_c.x; tmp.y = p.y - prev_pic.julia_c.y; p = c_sqrt(tmp); SRGP_point(to_point(p, &prev_pic)); n++; } SRGP_setClipRectangle(pic->area); }
void print_coords(infoptr pic, point mouse_pos, rectangle box) { char coord_string[20]; dpoint coords; /* Peitetään vanha teksti */ SRGP_setColor(SRGP_BLACK); SRGP_fillRectangle(box); /* Muotoillaan uusi teksti */ coords = to_dpoint(mouse_pos, pic); sprintf(coord_string, "(%.17f, %.17f)", coords.x, coords.y); SRGP_setColor(SRGP_WHITE); SRGP_setClipRectangle(box); /* Varmistetaan ettei teksti ylitä rajoja */ SRGP_text(box.bottom_left, coord_string); SRGP_setClipRectangle(pic->area); }
static void EVUprint (char *text) { SRGP_inquireAttributes (&bund); SRGP_setColor (COLOR_BLACK); SRGP_setWriteMode (WRITE_REPLACE); SRGP_setClipRectangle (SRGP_defRectangle(0,0,1023,799)); SRGP_text (SRGP_defPoint(15,ycoord), text); ycoord -= ydelta; SRGP_setAttributes (&bund); }
PRIVATE void moveTheTruck(SUIT_object o, long currentTime, long totalTime) { static int prevOffset = 0; static rectangle startRect; int currentOffset; rectangle curRect; int width; double timeFraction; static point p; if ( currentTime == 0 ) /* first call */ { prevOffset = 0; startRect = SUIT_mapViewportToScreen(o, OBJECT_VIEWPORT(o)); SRGP_setClipRectangle(startRect); return; } timeFraction = ( (double) currentTime) / totalTime; width = (startRect.top_right.x - startRect.bottom_left.x) + 1; currentOffset = timeFraction * ( (double) (width - 1) ); if ( currentOffset == prevOffset ) return; curRect = startRect; curRect.bottom_left.x += prevOffset; p.x = startRect.bottom_left.x + currentOffset; p.y = startRect.bottom_left.y; SRGP_copyPixel(0, curRect, p); SRGP_refresh(); /* force it to happen on screen */ prevOffset = currentOffset; }