Article: Q52140
Product(s): See article
Version(s): 2.00 2.01
Operating System(s): MS-DOS
Keyword(s): ENDUSER | s_quickasm buglist2.00 buglist2.01 | mspl13_c
Last Modified: 17-JAN-1990
In Microsoft QuickC Versions 2.00 and 2.01 Presentation Graphics, the
size of the legend window (like the key on a map) is restricted to the
default. Setting "env.legend.autosize=FALSE" and manually setting
coordinates prevents the chart from being displayed. Also, the global
variable, errno, is set to 105, meaning "Invalid legend window
specified."
Microsoft has confirmed this to be a problem in QuickC Versions 2.00
and 2.01. We are researching this problem and will post new
information here as it becomes available.
The example below demonstrates the problem:
/* PIE.C: Create sample pie chart. */
#include <conio.h>
#include <string.h>
#include <graph.h>
#include <pgchart.h>
#define MONTHS 12
typedef enum {FALSE, TRUE} boolean;
float far value[MONTHS] =
{
33.0, 27.0, 42.0, 64.0,106.0,157.0,
182.0,217.0,128.0, 62.0, 43.0, 36.0
};
char far *category[MONTHS] =
{
"Jan", "Feb", "Mar", "Apr",
"May", "Jun", "Jly", "Aug",
"Sep", "Oct", "Nov", "Dec"
};
short far explode[MONTHS] = {0};
main()
{
chartenv env;
int mode = _VRES16COLOR, errno = 0;
/* Set highest video mode available */
printf ("This section displays a chart\n");
getch();
while(!_setvideomode( mode ))
mode--;
if(mode == _TEXTMONO)
return( 0 );
/* Initialize chart library and a default pie chart */
_pg_initchart();
_pg_defaultchart( &env, _PG_PIECHART, _PG_PERCENT );
/* Add titles and some chart options */
strcpy( env.maintitle.title, "Good Neighbor Grocery" );
env.maintitle.titlecolor = 6;
env.maintitle.justify = _PG_RIGHT;
strcpy( env.subtitle.title, "Orange Juice Sales" );
env.subtitle.titlecolor = 6;
env.subtitle.justify = _PG_RIGHT;
env.chartwindow.border = FALSE;
if(( errno = _pg_chartpie( &env, category, value,
explode, MONTHS )) != 0)
{
_setvideomode( _DEFAULTMODE );
_outtext( "Error: can't draw chart" );
printf ("\nerrno = %d\n", errno);
}
else
{
getch();
_setvideomode( _DEFAULTMODE );
}
printf ("The autosize coordinates are:\n");
printf ("x1 = %d y1 = %d x2 = %d y2 = %d\n",
env.legend.legendwindow.x1,
env.legend.legendwindow.y1,
env.legend.legendwindow.x2,
env.legend.legendwindow.y2);
printf ("The following section will fail to display a chart\n"
"even though I set manual coordinates = autosize coordinates\n");
getch();
_setvideomode( mode );
env.legend.autosize = FALSE;
env.legend.legendwindow.x1 = 573;
env.legend.legendwindow.y1 = 36;
env.legend.legendwindow.x2 = 631;
env.legend.legendwindow.y2 = 192;
if(( errno = _pg_chartpie( &env, category, value,
explode, MONTHS )) != 0)
{
_setvideomode( _DEFAULTMODE );
_outtext( "Error: can't draw chart" );
printf ("\nerrno = %d\n", errno);
}
else
{
getch();
_setvideomode( _DEFAULTMODE );
}
printf ("The manual coordinates are:\n");
printf ("x1 = %d y1 = %d x2 = %d y2 = %d\n",
env.legend.legendwindow.x1,
env.legend.legendwindow.y1,
env.legend.legendwindow.x2,
env.legend.legendwindow.y2);
return(0);
}