Actual source code: dline.c
2: /*
3: Provides the calling sequences for all the basic PetscDraw routines.
4: */
5: #include <petsc/private/drawimpl.h>
7: /*@
8: PetscDrawGetBoundingBox - Gets the bounding box of all `PetscDrawStringBoxed()` commands
10: Not collective
12: Input Parameter:
13: . draw - the drawing context
15: Output Parameters:
16: . xl,yl,xr,yr - coordinates of lower left and upper right corners of bounding box
18: Level: intermediate
20: .seealso: `PetscDraw`, `PetscDrawPushCurrentPoint()`, `PetscDrawPopCurrentPoint()`, `PetscDrawSetCurrentPoint()`
21: @*/
22: PetscErrorCode PetscDrawGetBoundingBox(PetscDraw draw, PetscReal *xl, PetscReal *yl, PetscReal *xr, PetscReal *yr)
23: {
24: PetscFunctionBegin;
30: if (xl) *xl = draw->boundbox_xl;
31: if (yl) *yl = draw->boundbox_yl;
32: if (xr) *xr = draw->boundbox_xr;
33: if (yr) *yr = draw->boundbox_yr;
34: PetscFunctionReturn(PETSC_SUCCESS);
35: }
37: /*@
38: PetscDrawGetCurrentPoint - Gets the current draw point, some codes use this point to determine where to draw next
40: Not collective
42: Input Parameter:
43: . draw - the drawing context
45: Output Parameters:
46: . x,y - the current point
48: Level: intermediate
50: .seealso: `PetscDraw`, `PetscDrawPushCurrentPoint()`, `PetscDrawPopCurrentPoint()`, `PetscDrawSetCurrentPoint()`
51: @*/
52: PetscErrorCode PetscDrawGetCurrentPoint(PetscDraw draw, PetscReal *x, PetscReal *y)
53: {
54: PetscFunctionBegin;
58: *x = draw->currentpoint_x[draw->currentpoint];
59: *y = draw->currentpoint_y[draw->currentpoint];
60: PetscFunctionReturn(PETSC_SUCCESS);
61: }
63: /*@
64: PetscDrawSetCurrentPoint - Sets the current draw point, some codes use this point to determine where to draw next
66: Not collective
68: Input Parameters:
69: + draw - the drawing context
70: - x,y - the location of the current point
72: Level: intermediate
74: .seealso: `PetscDraw`, `PetscDrawPushCurrentPoint()`, `PetscDrawPopCurrentPoint()`, `PetscDrawGetCurrentPoint()`
75: @*/
76: PetscErrorCode PetscDrawSetCurrentPoint(PetscDraw draw, PetscReal x, PetscReal y)
77: {
78: PetscFunctionBegin;
80: draw->currentpoint_x[draw->currentpoint] = x;
81: draw->currentpoint_y[draw->currentpoint] = y;
82: PetscFunctionReturn(PETSC_SUCCESS);
83: }
85: /*@
86: PetscDrawPushCurrentPoint - Pushes a new current draw point, retaining the old one, some codes use this point to determine where to draw next
88: Not collective
90: Input Parameters:
91: + draw - the drawing context
92: - x,y - the location of the current point
94: Level: intermediate
96: .seealso: `PetscDraw`, `PetscDrawPushCurrentPoint()`, `PetscDrawPopCurrentPoint()`, `PetscDrawGetCurrentPoint()`
97: @*/
98: PetscErrorCode PetscDrawPushCurrentPoint(PetscDraw draw, PetscReal x, PetscReal y)
99: {
100: PetscFunctionBegin;
102: PetscCheck(draw->currentpoint <= 19, PETSC_COMM_SELF, PETSC_ERR_SUP, "You have pushed too many current points");
103: draw->currentpoint_x[++draw->currentpoint] = x;
104: draw->currentpoint_y[draw->currentpoint] = y;
105: PetscFunctionReturn(PETSC_SUCCESS);
106: }
108: /*@
109: PetscDrawPopCurrentPoint - Pops a current draw point (discarding it)
111: Not collective
113: Input Parameter:
114: . draw - the drawing context
116: Level: intermediate
118: .seealso: `PetscDraw`, `PetscDrawPushCurrentPoint()`, `PetscDrawSetCurrentPoint()`, `PetscDrawGetCurrentPoint()`
119: @*/
120: PetscErrorCode PetscDrawPopCurrentPoint(PetscDraw draw)
121: {
122: PetscFunctionBegin;
124: PetscCheck(draw->currentpoint-- > 0, PETSC_COMM_SELF, PETSC_ERR_SUP, "You have popped too many current points");
125: PetscFunctionReturn(PETSC_SUCCESS);
126: }
128: /*@
129: PetscDrawLine - draws a line onto a drawable.
131: Not collective
133: Input Parameters:
134: + draw - the drawing context
135: . xl,yl,xr,yr - the coordinates of the line endpoints
136: - cl - the colors of the endpoints
138: Level: beginner
140: .seealso: `PetscDraw`, `PetscDrawArrow()`, `PetscDrawLineSetWidth()`, `PetscDrawLineGetWidth()`, `PetscDrawRectangle()`, `PetscDrawTriangle()`, `PetscDrawEllipse()`,
141: `PetscDrawMarker()`, `PetscDrawPoint()`
142: @*/
143: PetscErrorCode PetscDrawLine(PetscDraw draw, PetscReal xl, PetscReal yl, PetscReal xr, PetscReal yr, int cl)
144: {
145: PetscFunctionBegin;
147: PetscUseTypeMethod(draw, line, xl, yl, xr, yr, cl);
148: PetscFunctionReturn(PETSC_SUCCESS);
149: }
151: /*@
152: PetscDrawArrow - draws a line with arrow head at end if the line is long enough
154: Not collective
156: Input Parameters:
157: + draw - the drawing context
158: . xl,yl,xr,yr - the coordinates of the line endpoints
159: - cl - the colors of the endpoints
161: Level: beginner
163: .seealso: `PetscDraw`, `PetscDrawLine()`, `PetscDrawLineSetWidth()`, `PetscDrawLineGetWidth()`, `PetscDrawRectangle()`, `PetscDrawTriangle()`, `PetscDrawEllipse()`,
164: `PetscDrawMarker()`, `PetscDrawPoint()`
165: @*/
166: PetscErrorCode PetscDrawArrow(PetscDraw draw, PetscReal xl, PetscReal yl, PetscReal xr, PetscReal yr, int cl)
167: {
168: PetscFunctionBegin;
170: PetscUseTypeMethod(draw, arrow, xl, yl, xr, yr, cl);
171: PetscFunctionReturn(PETSC_SUCCESS);
172: }
174: /*@
175: PetscDrawLineSetWidth - Sets the line width for future draws. The width is
176: relative to the user coordinates of the window; 0.0 denotes the natural
177: width; 1.0 denotes the entire viewport.
179: Not collective
181: Input Parameters:
182: + draw - the drawing context
183: - width - the width in user coordinates
185: Level: advanced
187: .seealso: `PetscDraw`, `PetscDrawLineGetWidth()`, `PetscDrawLine()`, `PetscDrawArrow()`
188: @*/
189: PetscErrorCode PetscDrawLineSetWidth(PetscDraw draw, PetscReal width)
190: {
191: PetscFunctionBegin;
193: PetscTryTypeMethod(draw, linesetwidth, width);
194: PetscFunctionReturn(PETSC_SUCCESS);
195: }
197: /*@
198: PetscDrawLineGetWidth - Gets the line width for future draws. The width is
199: relative to the user coordinates of the window; 0.0 denotes the natural
200: width; 1.0 denotes the interior viewport.
202: Not collective
204: Input Parameter:
205: . draw - the drawing context
207: Output Parameter:
208: . width - the width in user coordinates
210: Level: advanced
212: Note:
213: Not currently implemented.
215: .seealso: `PetscDraw`, `PetscDrawLineSetWidth()`, `PetscDrawLine()`, `PetscDrawArrow()`
216: @*/
217: PetscErrorCode PetscDrawLineGetWidth(PetscDraw draw, PetscReal *width)
218: {
219: PetscFunctionBegin;
222: PetscUseTypeMethod(draw, linegetwidth, width);
223: PetscFunctionReturn(PETSC_SUCCESS);
224: }