12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- /* Includes */
- #include "opendoor.h"
- /* Function prototypes. */
- void DrawHorizontalBar(int nValue, int nMinValue, int nMaxValue,
- int nMaxChars);
- void DrawGraphOfPercentages(int nItems, int *panPercentages,
- char **papszTitles, char bTitleColor, char bGraphColor,
- int nTitleWidth, int nGraphWidth);
- /* Main function - program execution begins here. */
- main()
- {
- char *apszTitles[7] = {"Sunday", "Monday", "Tuesday", "Wednesday",
- "Thursday", "Friday", "Saturday"};
- int anValues[7] = {50, 75, 100, 25, 83, 0, 43};
- od_printf("`bright green`Test graph:\n\r");
- DrawGraphOfPercentages(7, anValues, apszTitles, 0x02, 0x0f, 20, 50);
- od_get_key(TRUE);
- return(0);
- }
- /* Function to draw horizontal graph of percentages with titles, to */
- /* demonstrate the use of the DrawHorizontalBar() function. */
- /* No titles should have more than nTitleWidth characters. */
- void DrawGraphOfPercentages(int nItems, int *panPercentages,
- char **papszTitles, char bTitleColor, char bGraphColor,
- int nTitleWidth, int nGraphWidth)
- {
- int nCurrentItem;
- /* Loop for each item (line) in the graph. */
- for(nCurrentItem = 0; nCurrentItem < nItems; ++nCurrentItem)
- {
- /* Set display color for title text. */
- od_set_attrib(bTitleColor);
- /* Add spaces to right-align all titles. */
- od_repeat(' ', nTitleWidth - strlen(papszTitles[nCurrentItem]));
- /* Display the title. */
- od_disp_str(papszTitles[nCurrentItem]);
- /* Add space between title and graph. */
- od_printf(" ");
- /* Set display color for graph. */
- od_set_attrib(bGraphColor);
- /* Draw bar graph for this line. */
- DrawHorizontalBar(panPercentages[nCurrentItem], 0, 100, nGraphWidth);
- /* Move to the next line. */
- od_printf("\n\r");
- }
- }
- /* Function to draw a horizontal bar, given a value, the minimum and maximum */
- /* possible values, and the number of characters the horizontal bar should */
- /* extended for the maximum value. */
- void DrawHorizontalBar(int nValue, int nMinValue, int nMaxValue,
- int nMaxChars)
- {
- /* Determine lenght of bar */
- int nBarChars = ((nValue - nMinValue) * nMaxChars) / nMaxValue;
- if(od_control.user_ansi || od_control.user_avatar)
- {
- /* If ANSI or AVATAR graphics are available, assume that IBM extended */
- /* ASCII is also available. This function uses character 220 to form */
- /* bars that are 1/2 the height of the line. You might also want to */
- /* try character 119, which will form bars that are the entire height */
- /* of the line. */
- od_repeat(220, nBarChars);
- }
- else
- {
- /* In ASCII mode, the bar is formed by the '=' character. */
- od_repeat('=', nBarChars);
- }
- }
|