Пример #1
0
static void iDialDrawHorizontal(Ihandle* ih)
{
  double delta = 2 * M_PI / ih->data->num_div;
  int x;
  double a, amin, amax;
  int xmin, xmax;
  ih->data->radius = (ih->data->w - 2 * IDIAL_SPACE - 2) / 2.0;
  amin = 0.0;
  amax = M_PI;
  if(ih->data->angle < amin)
  {
    for (a = ih->data->angle; a < amin; a += delta) ;
  }
  else
  {
    for (a = ih->data->angle; a > amin; a-= delta) ;
    a += delta;
  }

  iDialDrawHorizontalBackground(ih, amin, amax, &xmin, &xmax);

  cdIupDrawRaiseRect(ih->data->cddbuffer, xmin, IDIAL_SPACE, xmax, ih->data->h-1-IDIAL_SPACE,
                      ih->data->light_shadow, ih->data->mid_shadow, ih->data->dark_shadow);

  for ( ; a < amax; a += delta)
  {
    if (a < 0.5 * M_PI) x = (int)(ih->data->w / 2.0 - ih->data->radius * cos(a));
    else              x = (int)(ih->data->w / 2.0 + ih->data->radius * fabs(cos(a)));

    if (abs(x - xmin) < 3 || abs(xmax - x) < 3)
      continue;

    cdIupDrawVertSunkenMark(ih->data->cddbuffer, x, IDIAL_SPACE+2, ih->data->h-1-IDIAL_SPACE-1, ih->data->light_shadow, ih->data->dark_shadow);
  }
}
Пример #2
0
static void iDialDrawVertical(Ihandle* ih)
{
  double delta = 2 * M_PI / ih->data->num_div;
  double a, amin, amax;
  int ymin, ymax;

  ih->data->radius = (ih->data->h - 2 * IDIAL_SPACE - 2) / 2.0;

  amin = 0.0;
  amax = M_PI;
  if(ih->data->angle < amin)
  {
    for (a = ih->data->angle; a < amin; a += delta)
      ;
  }
  else
  {
    for (a = ih->data->angle; a > amin; a -= delta)
      ;
    a += delta;
  }

  iDialDrawVerticalBackground(ih, amin, amax, &ymin, &ymax);

  cdIupDrawRaiseRect(ih->data->cd_canvas, IDIAL_SPACE, ymin, ih->data->w-1-IDIAL_SPACE, ymax,
                      ih->data->light_shadow, ih->data->mid_shadow, ih->data->dark_shadow);

  for (; a < amax; a += delta)    /* graduation */
  {
    int y;
    if (a < 0.5 * M_PI) y = (int)(ih->data->h / 2.0 - ih->data->radius * cos(a));
    else              y = (int)(ih->data->h / 2.0 + ih->data->radius * fabs(cos(a)));

    if (abs(y-ymin) < 3 || abs(ymax-y) < 3)
      continue;

    cdIupDrawHorizSunkenMark(ih->data->cd_canvas, IDIAL_SPACE+1, ih->data->w-1-IDIAL_SPACE-2, y, ih->data->light_shadow, ih->data->dark_shadow);
  }
}