xref: /petsc/src/sys/classes/draw/tests/ex3.c (revision b122ec5aa1bd4469eb4e0673542fb7de3f411254)
1 
2 static char help[] = "Plots a simple line graph.\n";
3 
4 #if defined(PETSC_APPLE_FRAMEWORK)
5 #import <PETSc/petscsys.h>
6 #import <PETSc/petscdraw.h>
7 #else
8 
9 #include <petscsys.h>
10 #include <petscdraw.h>
11 #endif
12 
13 int main(int argc,char **argv)
14 {
15   PetscDraw          draw;
16   PetscDrawLG        lg;
17   PetscDrawAxis      axis;
18   PetscInt           n = 15,i,x = 0,y = 0,width = 400,height = 300,nports = 1;
19   PetscBool          useports,flg;
20   const char         *xlabel,*ylabel,*toplabel,*legend;
21   PetscReal          xd,yd;
22   PetscDrawViewPorts *ports = NULL;
23 
24   toplabel = "Top Label"; xlabel = "X-axis Label"; ylabel = "Y-axis Label"; legend = "Legend";
25 
26   CHKERRQ(PetscInitialize(&argc,&argv,NULL,help));
27   CHKERRQ(PetscOptionsGetInt(NULL,NULL,"-x",&x,NULL));
28   CHKERRQ(PetscOptionsGetInt(NULL,NULL,"-y",&y,NULL));
29   CHKERRQ(PetscOptionsGetInt(NULL,NULL,"-width",&width,NULL));
30   CHKERRQ(PetscOptionsGetInt(NULL,NULL,"-height",&height,NULL));
31   CHKERRQ(PetscOptionsGetInt(NULL,NULL,"-n",&n,NULL));
32   CHKERRQ(PetscOptionsGetInt(NULL,NULL,"-nports",&nports,&useports));
33   CHKERRQ(PetscOptionsHasName(NULL,NULL,"-nolegend",&flg));
34   if (flg) legend = NULL;
35   CHKERRQ(PetscOptionsHasName(NULL,NULL,"-notoplabel",&flg));
36   if (flg) toplabel = NULL;
37   CHKERRQ(PetscOptionsHasName(NULL,NULL,"-noxlabel",&flg));
38   if (flg) xlabel = NULL;
39   CHKERRQ(PetscOptionsHasName(NULL,NULL,"-noylabel",&flg));
40   if (flg) ylabel = NULL;
41   CHKERRQ(PetscOptionsHasName(NULL,NULL,"-nolabels",&flg));
42   if (flg) {toplabel = NULL; xlabel = NULL; ylabel = NULL;}
43 
44   CHKERRQ(PetscDrawCreate(PETSC_COMM_WORLD,0,"Title",x,y,width,height,&draw));
45   CHKERRQ(PetscDrawSetFromOptions(draw));
46   if (useports) {
47     CHKERRQ(PetscDrawViewPortsCreate(draw,nports,&ports));
48     CHKERRQ(PetscDrawViewPortsSet(ports,0));
49   }
50   CHKERRQ(PetscDrawLGCreate(draw,1,&lg));
51   CHKERRQ(PetscDrawLGSetUseMarkers(lg,PETSC_TRUE));
52   CHKERRQ(PetscDrawLGGetAxis(lg,&axis));
53   CHKERRQ(PetscDrawAxisSetColors(axis,PETSC_DRAW_BLACK,PETSC_DRAW_RED,PETSC_DRAW_BLUE));
54   CHKERRQ(PetscDrawAxisSetLabels(axis,toplabel,xlabel,ylabel));
55   CHKERRQ(PetscDrawLGSetLegend(lg,&legend));
56   CHKERRQ(PetscDrawLGSetFromOptions(lg));
57 
58   for (i=0; i<=n; i++) {
59     xd   = (PetscReal)(i - 5); yd = xd*xd;
60     CHKERRQ(PetscDrawLGAddPoint(lg,&xd,&yd));
61   }
62   CHKERRQ(PetscDrawLGDraw(lg));
63   CHKERRQ(PetscDrawLGSave(lg));
64 
65   CHKERRQ(PetscDrawViewPortsDestroy(ports));
66   CHKERRQ(PetscDrawLGDestroy(&lg));
67   CHKERRQ(PetscDrawDestroy(&draw));
68   CHKERRQ(PetscFinalize());
69   return 0;
70 }
71 
72 /*TEST
73 
74    build:
75      requires: x
76 
77    test:
78      output_file: output/ex1_1.out
79 
80 TEST*/
81