示例#1
0
static void
draw_circle(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int r)
{
    if ((gr->overlay_parent && !gr->overlay_parent->overlay_enable) || (gr->overlay_parent && gr->overlay_parent->overlay_enable && !gr->overlay_enable) )
    {
      	return;
    }

    /* FIXME: does not quite match gtk */

    /* hack for osd compass.. why is this needed!? */
    if(gr->overlay_mode)
    {
        r = r / 2;
    }

    if(gr->aa)
    {
        raster_aacircle(gr->screen, p->x, p->y, r,
                SDL_MapRGBA(gr->screen->format,
                    gc->fore_r,
                    gc->fore_g,
                    gc->fore_b,
                    gc->fore_a));
    }
    else
    {
        raster_circle(gr->screen, p->x, p->y, r,
                SDL_MapRGBA(gr->screen->format,
                    gc->fore_r,
                    gc->fore_g,
                    gc->fore_b,
                    gc->fore_a));
    }
}
示例#2
0
//http://stackoverflow.com/questions/5279051/how-can-i-create-cartesian-product-of-vector-of-vectors
void Worker::raster_circle_wrapper(const Vc &result, const int rc, const ANNcoord sum_of_squares) {
  //2.do all the possible combinations of the extra dims...
  for (int j=0; j<Globals::dimm2; j++) {
    pos_neg[j][0] = centers[rc][j+2] + result[j];
    pos_neg[j][1] = centers[rc][j+2] - result[j];
  }

  //3. for each combination of these extra dims...
  int idx=0;
  int id_comb=0;
  int id_dimm=0;
  for (Vvc::const_iterator it = pos_neg.begin(); it != pos_neg.end(); ++it) {
    vd2[idx].begin=(*it).begin();
    vd2[idx].end=(*it).end();
    vd2[idx].me=(*it).begin();
    pos_neg_result[idx]=*(it->begin());
    idx++;
  }
  while(1) {
    for (id_dimm=0; id_dimm<Globals::dimm2; id_dimm++)
      //pos_neg_final[id_comb][id_dimm+2] = pos_neg_result[id_dimm];
      leaf_centers[id_comb][id_dimm+2] = pos_neg_result[id_dimm];
    id_comb++;

    idx=0;
    for(Vd::iterator it = vd2.begin(); ; ) {
      ++(it->me);
      if (it->me == it->end) {
        if(it+1 == vd2.end()) {
          
          //sort(pos_neg_final.begin(), pos_neg_final.end(), vcsort);
          //vvcend = std::unique(pos_neg_final.begin(),pos_neg_final.end(),vccomp);
          //pos_neg_final_size = vvcend - pos_neg_final.begin();
          //printVvc(pos_neg_final);
          //pos_neg_final
          //pos_neg_final_size = pos_neg_final.size();
          raster_circle(centers[rc][0],centers[rc][1],sides[rc],sum_of_squares,rc);
          return;
        } else {
          it->me = it->begin;
          pos_neg_result[idx] = *(it->me);
          ++it;
        }
      } else {
        pos_neg_result[idx] = *(it->me);
        break;
      }
    ++idx;
    }
  }
}