1c4762a1bSJed Brown 2c4762a1bSJed Brown static char help[] = "Demonstrates drawing primitives in a window\n"; 3c4762a1bSJed Brown 4c4762a1bSJed Brown #include <petscdraw.h> 5c4762a1bSJed Brown 6c4762a1bSJed Brown int main(int argc,char **argv) 7c4762a1bSJed Brown { 8c4762a1bSJed Brown PetscDraw draw; 9c4762a1bSJed Brown 10c4762a1bSJed Brown int i,j,w,h; 11c4762a1bSJed Brown int k = PETSC_DRAW_BLACK; 12c4762a1bSJed Brown int r = PETSC_DRAW_RED; 13c4762a1bSJed Brown int g = PETSC_DRAW_GREEN; 14c4762a1bSJed Brown int b = PETSC_DRAW_BLUE; 15c4762a1bSJed Brown int y = PETSC_DRAW_YELLOW; 16c4762a1bSJed Brown int c0 = PETSC_DRAW_BASIC_COLORS; 17c4762a1bSJed Brown int c2 = 255; 18c4762a1bSJed Brown int c1 = (c0+c2)/2; 19c4762a1bSJed Brown 20*b122ec5aSJacob Faibussowitsch CHKERRQ(PetscInitialize(&argc,&argv,NULL,help)); 21c4762a1bSJed Brown 225f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawCreate(PETSC_COMM_WORLD,0,"Draw Example",PETSC_DECIDE,PETSC_DECIDE,101,101,&draw)); 235f80ce2aSJacob Faibussowitsch /*CHKERRQ(PetscDrawSetPause(draw,2.0));*/ 245f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawSetFromOptions(draw)); 25c4762a1bSJed Brown 265f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawCheckResizedWindow(draw)); 275f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawGetWindowSize(draw,&w,&h)); 285f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawSetCoordinates(draw,0,0,--w,--h)); 295f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawClear(draw)); 30c4762a1bSJed Brown /* one-pixel lines in the window corners */ 315f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawLine(draw,0,0,0,0,r)); 325f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawLine(draw,w,0,w,0,r)); 335f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawLine(draw,0,h,0,h,r)); 345f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawLine(draw,w,h,w,h,r)); 35c4762a1bSJed Brown /* border lines with two pixels from borders */ 365f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawLine(draw,0+2,0,w-2,0,k)); 375f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawLine(draw,0+2,h,w-2,h,k)); 385f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawLine(draw,0,0+2,0,h-2,k)); 395f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawLine(draw,w,0+2,w,h-2,k)); 40c4762a1bSJed Brown /* oblique lines */ 415f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawLine(draw,0+2,h/2,w-2,h-2,b)); 425f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawLine(draw,0+1,h-1,w-1,0+1,b)); 43c4762a1bSJed Brown /* vertical up and down arrow, two pixels from borders */ 445f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawArrow(draw,1*w/4,0+2,1*w/4,h-2,g)); 455f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawArrow(draw,3*w/4,h-2,3*w/4,0+2,g)); 46c4762a1bSJed Brown /* horizontal right and left arrow, two pixels from borders */ 475f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawArrow(draw,0+2,3*h/4,w-2,3*h/4,g)); 485f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawArrow(draw,w-2,1*h/4,0+2,1*h/4,g)); 49c4762a1bSJed Brown /* flush, save, and pause */ 505f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawFlush(draw)); 515f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawSave(draw)); 525f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawPause(draw)); 53c4762a1bSJed Brown 545f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawCheckResizedWindow(draw)); 555f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawGetWindowSize(draw,&w,&h)); 565f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawSetCoordinates(draw,0,0,--w,--h)); 575f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawClear(draw)); 58c4762a1bSJed Brown /* one-pixel rectangles in the window corners */ 595f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawRectangle(draw,0,0,0,0,k,k,k,k)); 605f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawRectangle(draw,w,0,w,0,k,k,k,k)); 615f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawRectangle(draw,0,h,0,h,k,k,k,k)); 625f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawRectangle(draw,w,h,w,h,k,k,k,k)); 63c4762a1bSJed Brown /* border rectangles with two pixels from borders */ 645f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawRectangle(draw,0+2,0,w-2,0,k,k,k,k)); 655f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawRectangle(draw,0+2,h,w-2,h,k,k,k,k)); 665f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawRectangle(draw,0,0+2,0,h-2,k,k,k,k)); 675f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawRectangle(draw,w,0+2,w,h-2,k,k,k,k)); 68c4762a1bSJed Brown /* more rectangles */ 695f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawRectangle(draw,0+2,0+2,w/2-1,h/2-1,b,b,b,b)); 705f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawRectangle(draw,0+2,h/2+1,w/2-1,h-2,r,r,r,r)); 715f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawRectangle(draw,w/2+1,h/2+1,w-2,h-2,g,g,g,g)); 725f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawRectangle(draw,w/2+1,0+2,w-2,h/2-1,y,y,y,y)); 73c4762a1bSJed Brown /* flush, save, and pause */ 745f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawFlush(draw)); 755f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawSave(draw)); 765f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawPause(draw)); 77c4762a1bSJed Brown 785f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawCheckResizedWindow(draw)); 795f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawGetWindowSize(draw,&w,&h)); 805f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawSetCoordinates(draw,0,0,--w,--h)); 815f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawClear(draw)); 82c4762a1bSJed Brown /* interpolated triangles, one pixel from borders */ 835f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawTriangle(draw,0+1,0+1,w-1,0+1,w-1,h-1,c0,c1,c2)); 845f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawTriangle(draw,0+1,0+1,0+1,h-1,w-1,h-1,c0,c1,c2)); 85c4762a1bSJed Brown /* interpolated triangle, oblique, inside canvas */ 865f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawTriangle(draw,w/4,h/4,w/2,3*h/4,3*w/4,h/2,c2,c1,c0)); 87c4762a1bSJed Brown /* flush, save, and pause */ 885f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawFlush(draw)); 895f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawSave(draw)); 905f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawPause(draw)); 91c4762a1bSJed Brown 925f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawCheckResizedWindow(draw)); 935f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawGetWindowSize(draw,&w,&h)); 945f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawSetCoordinates(draw,0,0,--w,--h)); 955f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawClear(draw)); 96c4762a1bSJed Brown /* circles and ellipses */ 975f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawEllipse(draw,w/2,h/2,w-1,h-1,r)); 985f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawEllipse(draw,w,h/2,w/2,h,g)); 995f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawEllipse(draw,0,0,w,h/2,b)); 1005f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawEllipse(draw,w/4,3*h/4,w/2,h/4,y)); 1015f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawCoordinateToPixel(draw,w/2,h/2,&i,&j)); 1025f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawPointPixel(draw,i,j,k)); 103c4762a1bSJed Brown /* flush, save, and pause */ 1045f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawFlush(draw)); 1055f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawSave(draw)); 1065f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawPause(draw)); 107c4762a1bSJed Brown 1085f80ce2aSJacob Faibussowitsch CHKERRQ(PetscDrawDestroy(&draw)); 109*b122ec5aSJacob Faibussowitsch CHKERRQ(PetscFinalize()); 110*b122ec5aSJacob Faibussowitsch return 0; 111c4762a1bSJed Brown } 112c4762a1bSJed Brown 113c4762a1bSJed Brown /*TEST 114c4762a1bSJed Brown 115c4762a1bSJed Brown build: 116c4762a1bSJed Brown requires: x 117c4762a1bSJed Brown 118c4762a1bSJed Brown test: 119c4762a1bSJed Brown output_file: output/ex1_1.out 120c4762a1bSJed Brown 121c4762a1bSJed Brown TEST*/ 122