- AppGraphics Documentation
- Getting Started with AppGraphics
- Window Management
- Colors and Patterns
- Mouse Interactions
- Keyboard Interaction
- Graphics Shapes and Primitives
- Text Output
- Graphic Viewports
- Images
- Windows Controls
- Common Dialogs
- Clipboard Operations
- Threads, Thread Safety, and Idling
- AppGraphics License Agreement
Graphics Shapes and Primitives
The following subprograms provide the ability to draw shapes, lines, and other graphics primitives.
One concept to understand in this section is the existence of a “current position” of the graphics cursor on the screen. A handful of routines will use this in-memory screen coordinate for drawing. The moveto subroutine can be used to set the position directly. The graphics cursor, however, is never visible on the screen.
arc
C void arc (x, y, stangle, endangle, radius)
Fortran subroutine arc (x, y, stangle, endangle, radius)
Description
Draws a circular arc centered at (x,y) in the current color. The start angle, stangle, and end angle, endangle, are measured in degrees counterclockwise with 0 degrees at 3 o’clock.
Parameters
Parameter | C Type | Fortran Type | Description |
x | int | integer | Horizontal center of the arc |
y | int | integer | Vertical center of the arc |
stangle | int | integer | Start angle of the arc in degrees |
endangle | int | integer | End angle of the arc in degrees |
radius | int | integer | Radius of the circular arc |
bar
C void bar (left, top, right, bottom)
Fortran subroutine bar (left, top, right, bottom)
Description
Draws a rectangular, filled bar using the currently selected color and fill pattern.
Parameters
Parameter | C Type | Fortran Type | Description |
left | int | integer | Leftmost horizontal bound of the bar |
top | int | integer | Topmost vertical bound of the bar |
right | int | integer | Righttmost horizontal bound of the bar |
bottom | int | integer | Bottommost vertical bound of the bar |
bar3d
C void bar3d (left, top, right, bottom, depth, topflag)
Fortran subroutine bar3d (left, top, right, bottom, depth, topflag)
Description
Draws a three-dimensional rectangular, filled bar using the currently selected color and fill pattern. The bar is outlined using the current line color and style.
Parameters
Parameter | C Type | Fortran Type | Description |
left | int | integer | Leftmost horizontal bound of the bar |
top | int | integer | Topmost vertical bound of the bar |
right | int | integer | Righttmost horizontal bound of the bar |
bottom | int | integer | Bottommost vertical bound of the bar |
depth | int | integer | The third-dimension depth of the bar |
topflag | int | integer | One to draw a top on the bar, zero to leave empty |
bezier
C void bezier (x1, y1, x2, y2, cx1, cy1, cx2, cy2)
Fortran subroutine bezier (x1, y1, x2, y2, cx1, cy1, cx2, cy2)
Description
Draws a single Bezier segment using the end points specified and two control points to form the curve.
Parameters
Parameter | C Type | Fortran Type | Description |
x1 | int | integer | X coordinate of the curve’s starting point |
y1 | int | integer | Y coordinate of the curve’s starting point |
x2 | int | integer | X coordinate of the curve’s end point |
y2 | int | integer | Y coordinate of the curve’s end point |
cx1 | int | integer | X coordinate of the curve’s first control point |
cy1 | int | integer | Y coordinate of the curve’s first control point |
cx2 | int | integer | X coordinate of the curve’s second control point |
cy2 | int | integer | Y coordinate of the curve’s second control point |
circle
C void circle (x, y, radius)
Fortran subroutine circle (x, y, radius)
Description
Draws a circle centered at (x,y) with the given radius using the current color
Parameters
Parameter | C Type | Fortran Type | Description |
x | int | integer | Horizontal center of the circle |
y | int | integer | Vertical center of the circle |
radius | int | integer | Radius of the circle |
drawpoly
C void drawpoly (numpoints, points)
Fortran subroutine drawpoly (numpoints, points)
Description
Draws a polygon of numpoints points using the locations in points. In Fortran, the horizontal positions in the first column, and the vertical position in the second column. In C, the array is one-dimensional with the first horizontal position followed by the first vertical position followed by the second horizontal position, etc.
Parameters
Parameter | C Type | Fortran Type | Description |
numpoints | int | integer | The number of points in the polygon |
points | int * | integer, dimension(numpoints, 2) | Points of the polygon (see description) |
ellipse
C void ellipse (x, y, stangle, endangle, xradius, yradius)
Fortran subroutine ellipse (x, y, stangle, endangle, xradius, yradius)
Description
Draws an ellipse centered at (x,y) with the given radius using the current color. The start angle, stangle, and end angle, endangle, are measured in degrees counterclockwise with 0 degrees at 3 o’clock.
Parameters
Parameter | C Type | Fortran Type | Description |
x | int | integer | Horizontal center of the ellipse |
y | int | integer | Vertical center of the ellipse |
stangle | int | integer | Start angle of the arc in degrees |
endangle | int | integer | End angle of the arc in degrees |
xradius | int | integer | Radius along the horizontal axis |
yradius | int | integer | Radius along the vertical axis |
fillellipse
C void fillellipse (x, y, xradius, yradius)
Fortran subroutine fillellipse (x, y, xradius, yradius)
Description
Draws a filled ellipse centered at (x,y) with the given radius using the current color.
Parameters
Parameter | C Type | Fortran Type | Description |
x | int | integer | Horizontal center of the ellipse |
y | int | integer | Vertical center of the ellipse |
xradius | int | integer | Radius along the horizontal axis |
yradius | int | integer | Radius along the vertical axis |
fillpoly
C void fillpoly (numpoints, points)
Fortran subroutine fillpoly (numpoints, points)
Description
Draws a filled polygon of numpoints points using the locations in points. In Fortran, the horizontal positions in the first column, and the vertical position in the second column. In C, the array is one-dimensional with the first horizontal position followed by the first vertical position followed by the second horizontal position, etc.
Parameters
Parameter | C Type | Fortran Type | Description |
numpoints | int | integer | The number of points in the polygon |
points | int * | integer, dimension(numpoints, 2) | Points of the polygon (see description) |
floodfill
C void floodfill (x, y, border)
Fortran subroutine floodfill (x, y, border)
Description
Fills in the screen starting at point (x,y) until the color border is encountered.
Parameters
Parameter | C Type | Fortran Type | Description |
x | int | integer | Horizontal point at which to start flood fill operation |
y | int | integer | Vertical point at which to start flood fill operation |
border | int | integer | Color at which flood fill is stopped |
getarccoords
C void getarccoords ( arccoords )
Fortran subroutine getarccoords ( arccoords )
Description
Retrieves the arc coordinates used for the latest arc drawing request.
Parameters
Parameter | C Type | Fortran Type | Description |
arccoords | arccoordstype * | type(arccoordstype), intent(out) | Pointer to the structure to fill with the arc details |
getdpi
C int getdpi ( )
Fortran function getdpi ( )
Description
Retrieves the current system logical pixels per inch (measured in the vertical axis). Note that the application should call setapplicationdpiaware() if the application wishes to perform true dots-per-inch calculations. Otherwise, the operating system will shield the application from retrieving the true dots-per-inch.
Return Value
C int
Fortran integer
The logical pixels per inch in the vertical direction. This measurement should be identical to the horizontal direction in most cases.
getpixel
C int getpixel ( x, y )
Fortran function getpixel ( x, y )
Description
Retrieves the color as an RGB triplet at the pixel at the specified coordinates
Parameters
Parameter | C Type | Fortran Type | Description |
x | int | integer | Horizontal point at which to query the pixel color |
y | int | integer | Vertical point at which to query the pixel color |
Return Value
C int
Fortran integer
The color of the pixel as an RGB triplet
getx
C int getx ( )
Fortran function getx ( )
Description
Retrieves the current horizontal graphics cursor position
Return Value
C int
Fortran integer
The horizontal position of the graphics cursor
gety
C int gety ( )
Fortran function gety ( )
Description
Retrieves the current vertical graphics cursor position
Return Value
C int
Fortran integer
The vertical position of the graphics cursor
line
C void line (x1, y1, x2, y2)
Fortran subroutine line (x1, y1, x2, y2)
Description
Draws a line using the current color from point (x1,y1) to point (x2,y2).
Parameters
Parameter | C Type | Fortran Type | Description |
x1 | int | integer | Horizontal coordinate of the start point of the line |
y1 | int | integer | Vertical coordinate of the start point of the line |
x2 | int | integer | Horizontal coordinate of the end point of the line |
y2 | int | integer | Vertical coordinate of the end point of the line |
linerel
C void linerel (dx, dy)
Fortran subroutine linerel (dx, dy)
Description
Draws a line from the current position to a point that is distanced dx horizontally and dy vertically from the current position using the current color. The current position is moved to this new offset after the drawing operation.
Parameters
Parameter | C Type | Fortran Type | Description |
dx | int | integer | Horizontal offset of the end point of the line |
dy | int | integer | Vertical offset of the end point of the line |
lineto
C void lineto (x, y)
Fortran subroutine lineto (x, y)
Description
Draws a line from the current position to the point (x, y) using the current color. The current position is moved to this new offset after the drawing operation.
Parameters
Parameter | C Type | Fortran Type | Description |
x | int | integer | Horizontal coordinate of the end point of the line |
y | int | integer | Vertical coordinate of the end point of the line |
moverel
C void moverel ( int dx, int dy )
Fortran subroutine moverel ( int dx, int dy )
Description
Moves the graphics cursor a specifed distance in the horizontal and vertical positions from the current position.
Parameters
Parameter | C Type | Fortran Type | Description |
dx | int | integer | Horizontal distance relative to the current position |
dy | int | integer | Vertical distance relative to the current position |
moveto
C void moveto (x, y)
Fortran subroutine moveto (x, y)
Description
Sets the current position to be used with subsequent relative graphics operations.
Parameters
Parameter | C Type | Fortran Type | Description |
x | int | integer | Horizontal coordinate of the current position |
y | int | integer | Vertical coordinate of the current position |
pieslice
C void pieslice (x, y, stangle, endangle, radius)
Fortran subroutine pieslice (x, y, stangle, endangle, radius)
Description
Draws a filled circular arc centered at (x,y) in the current color, appearing in the shape of a pie slice. The start angle, stangle, and end angle, endangle, are measured in degrees counterclockwise with 0 degrees at 3 o’clock.
Parameters
Parameter | C Type | Fortran Type | Description |
x | int | integer | Horizontal center of the arc |
y | int | integer | Vertical center of the arc |
stangle | int | integer | Start angle of the arc in degrees |
endangle | int | integer | End angle of the arc in degrees |
radius | int | integer | Radius of the circular arc |
putpixel
C void putpixel (x, y, color)
Fortran subroutine putpixel (x, y, color)
Description
Draws a single pixel at (x, y) using the color color.
Parameters
Parameter | C Type | Fortran Type | Description |
x | int | integer | Horizontal coordinate of the pixel |
y | int | integer | Vertical coordinate of the pixel |
color | int | integer | The color of the pixel |
rectangle
C void rectangle (left, top, right, bottom)
Fortran subroutine rectangle (left, top, right, bottom)
Description
Draws an unfilled rectangle with vertices located at (left, top) and (right, bottom)
Parameters
Parameter | C Type | Fortran Type | Description |
left | int | integer | Leftmost horizontal bound of the rectangle |
top | int | integer | Topmost vertical bound of the rectangle |
right | int | integer | Righttmost horizontal bound of the rectangle |
bottom | int | integer | Bottommost vertical bound of the rectangle |
scaledpi
C int getdpi ( int x )
Fortran function getdpi ( x )
Description
Scales the argument to the current screen dots-per-inch based on the reference value of 96. Note that the application should call setapplicationdpiaware() if the application wishes to perform true dots-per-inch calculations. Otherwise, the operating system will shield the application from retrieving the true dots-per-inch.
Parameter | C Type | Fortran Type | Description |
x | int | integer | Value to scale to true dots per inch |
Return Value
C int
Fortran integer
The scaled value.
sector
C void sector (x, y, stangle, endangle, xradius, yradius)
Fortran subroutine sector (x, y, stangle, endangle, xradius, yradius)
Description
Draws a filled elliptical shape, similar to a pie slice, centered at (x,y) with the given radius using the current color. The start angle, stangle, and end angle, endangle, are measured in degrees counterclockwise with 0 degrees at 3 o’clock.
Parameters
Parameter | C Type | Fortran Type | Description |
x | int | integer | Horizontal center of the sector |
y | int | integer | Vertical center of the sector |
stangle | int | integer | Start angle of the arc in degrees |
endangle | int | integer | End angle of the arc in degrees |
xradius | int | integer | Radius along the horizontal axis |
yradius | int | integer | Radius along the vertical axis |