Actual source code: ex4.c
1: static char help[] = "Demonstrates use of PetscDrawZoom()\n";
3: #if defined(PETSC_APPLE_FRAMEWORK)
5: #include <PETSc/petscsys.h>
6: #include <PETSc/petscdraw.h>
7: #else
8: #include <petscsys.h>
9: #include <petscdraw.h>
10: #endif
12: PetscErrorCode zoomfunction(PetscDraw draw, void *dummy)
13: {
14: MPI_Comm comm;
15: PetscMPIInt size, rank;
17: PetscFunctionBeginUser;
18: PetscCall(PetscObjectGetComm((PetscObject)draw, &comm));
19: PetscCallMPI(MPI_Comm_size(comm, &size));
20: PetscCallMPI(MPI_Comm_rank(comm, &rank));
21: for (int i = rank; i < 256; i += size) {
22: PetscReal y = ((PetscReal)i) / (256 - 1);
23: PetscCall(PetscDrawLine(draw, 0.0, y, 1.0, y, i));
24: }
25: PetscFunctionReturn(PETSC_SUCCESS);
26: }
28: int main(int argc, char **argv)
29: {
30: int x = 0, y = 0, width = 256, height = 256;
31: PetscDraw draw;
33: PetscFunctionBeginUser;
34: PetscCall(PetscInitialize(&argc, &argv, NULL, help));
35: PetscCall(PetscDrawCreate(PETSC_COMM_WORLD, NULL, "Title", x, y, width, height, &draw));
36: PetscCall(PetscDrawSetFromOptions(draw));
37: PetscCall(PetscDrawZoom(draw, zoomfunction, NULL));
38: PetscCall(PetscDrawDestroy(&draw));
39: PetscCall(PetscFinalize());
40: return 0;
41: }
43: /*TEST
45: build:
46: requires: x
48: test:
49: output_file: output/ex1_1.out
51: test:
52: suffix: db
53: args: -draw_double_buffer 0
54: output_file: output/ex1_1.out
56: test:
57: suffix: df
58: args: -draw_fast
59: output_file: output/ex1_1.out
61: test:
62: suffix: dv
63: args: -draw_virtual
64: output_file: output/ex1_1.out
66: TEST*/