コード例 #1
0
ファイル: Graphics.c プロジェクト: aosm/X11apps
void 
BWDrawRectangle(Widget w, 
		Position from_x, Position from_y, 
		Position to_x, Position to_y, int value)
{
    register Position i;
    Dimension delta, width, height;
    
    QuerySwap(from_x, to_x);
    QuerySwap(from_y, to_y);
    
    width = to_x - from_x;
    height = to_y - from_y;

    delta = max(width, height);
    
    if (!QueryZero(width, height)) {
	for (i = 0; (int)i < (int)delta; i++) {
	    if ((int)i < (int)width) {
		BWDrawPoint(w, from_x + i, from_y, value);
		BWDrawPoint(w, to_x - i, to_y, value);
	    }
	    if ((int)i < (int)height) {
		BWDrawPoint(w, from_x, to_y - i, value);
		BWDrawPoint(w, to_x, from_y + i, value);
	    }
	}
    }
    else
	BWDrawLine(w, 
		   from_x, from_y, 
		   to_x, to_y, value);
}
コード例 #2
0
ファイル: Graphics.c プロジェクト: aosm/X11apps
void 
BWBlindLine(Widget w, 
	    Position from_x, Position from_y, 
	    Position to_x, Position to_y, int value)
{
    Position i;
    register double x, y;
    double dx, dy, delta;

    dx = to_x - from_x;
    dy = to_y - from_y;
    x = from_x + 0.5;
    y = from_y + 0.5;
    delta = max(abs(dx), abs(dy));
    if (delta > 0) {
	dx /= delta;
	dy /= delta;
	x += dx;
	y += dy;
	for(i = 1; i <= delta; i++) {
	    BWDrawPoint(w, (Position) x, (Position) y, value);
	    x += dx;
	    y += dy;
	}
    }
    else
	BWDrawPoint(w, from_x, from_y, value);
}
コード例 #3
0
ファイル: Graphics.c プロジェクト: aosm/X11apps
static void 
DrawImageData(BitmapWidget BW, XImage *image, 
	      Position at_x, Position at_y, int value)
{
    Position x, y;
    Boolean  C, S, I, H;
    bit      A, B;

    C = value == Clear;
    S = value == Set;
    I = value == Invert;
    H = value == Highlight;

    for (x = 0; x < image->width; x++) 
	for (y = 0; y < image->height; y++) {
	    A = GetBit(image, x, y);
	    B = GetBit(BW->bitmap.image, at_x + x, at_y + y);
	    if ((A & C) | ((A | B) & S) | ((A ^ B) & I) | ((A | B) & H))
		value = (A & H) ? Highlight : Set;
	    else
		value = Clear;
	    BWDrawPoint((Widget) BW, 
			 at_x + x, at_y + y, 
			 value);
	}
}
コード例 #4
0
ファイル: swirly1.c プロジェクト: 10crimes/code
void plotpart(part* p)
{
  int x,y;
  
  x=SCR_WIDTH*((p->pos.x)-left)/(right-left);
  y=SCR_HEIGHT*((p->pos.y)-top)/(bottom-top);
  BWDrawPoint(window1,x,y);
}
コード例 #5
0
ファイル: Graphics.c プロジェクト: aosm/X11apps
void 
BWDrawFilledCircle(Widget w, 
		   Position origin_x, Position origin_y, 
		   Position point_x, Position point_y, int value)
{
    register Position i, j, delta;
    Dimension dx, dy;
    double radius;
    
    dx = abs(point_x - origin_x);
    dy = abs(point_y - origin_y);
    radius = sqrt((double) ((int)dx * (int)dx + (int)dy * (int)dy));
    for(j = origin_x - (Position) floor(radius); 
	j <= origin_x + (Position) floor(radius); j++)
	BWDrawPoint(w, j, origin_y, value);
    for(i = 1; i <= (Position) floor(radius); i++) {
	delta = sqrt(radius * radius - i * i);
	for(j = origin_x - delta; j <= origin_x + delta; j++) {
	    BWDrawPoint(w, j, origin_y - i, value);
	    BWDrawPoint(w, j, origin_y + i, value);
	}
    }
}
コード例 #6
0
ファイル: Graphics.c プロジェクト: aosm/X11apps
void 
BWDrawFilledRectangle(Widget w, 
		      Position from_x, Position from_y, 
		      Position to_x, Position to_y, int value)
{
    register Position x, y;

    QuerySwap(from_x, to_x);
    QuerySwap(from_y, to_y);
    
    for (x = from_x; x <= to_x; x++)
	for (y = from_y; y <= to_y; y++)
	    BWDrawPoint(w, x, y, value);
}
コード例 #7
0
ファイル: swirly7.c プロジェクト: 10crimes/code
void moveparts()
{
  int i,j,new;
  
  for (i=0; i<numps; i++) {
  
    BWClearArea(window1,scrx(particle[i].pos),scry(particle[i].pos),1,1);
    movepart(&particle[i]);
    BWDrawPoint(window1,scrx(particle[i].pos),scry(particle[i].pos));
  
/*    new=0;
    for (j=0; j<numps; j++) {
      if (j!=i)
        if (Vequal(particle[i].pos,particle[j].pos))
          new=1;
    }
    if (outofbounds(particle[i].pos))
      new=1;
    if (new==1)
      randpart(&particle[i]);*/
  
  }
}
コード例 #8
0
ファイル: swirly7.c プロジェクト: 10crimes/code
void plotpart(part* p)
{
  BWDrawPoint(window1,scrx(p->pos),scry(p->pos));
}
コード例 #9
0
ファイル: Graphics.c プロジェクト: aosm/X11apps
void 
BWDrawCircle(Widget w, 
	     Position origin_x, Position origin_y, 
	     Position point_x, Position point_y, int value)
{
    register Position i, delta;
    Dimension dx, dy, half;
    double radius;
    
    dx = abs(point_x - origin_x);
    dy = abs(point_y - origin_y);
    radius = sqrt((double) ((int)dx * (int)dx + (int)dy * (int)dy));
    if (radius < 1.0) {
	BWDrawPoint(w, origin_x, origin_y, value);
    }
    else {
	BWDrawPoint(w, origin_x - (Position) floor(radius), origin_y, value);
	BWDrawPoint(w, origin_x + (Position) floor(radius), origin_y, value);
	BWDrawPoint(w, origin_x, origin_y - (Position) floor(radius), value);
	BWDrawPoint(w, origin_x, origin_y + (Position) floor(radius), value);
    }
    half = radius / sqrt(2.0);
    for(i = 1; (int)i <= (int)half; i++) {
	delta = sqrt(radius * radius - i * i);
	BWDrawPoint(w, origin_x - delta, origin_y - i, value);
	BWDrawPoint(w, origin_x - delta, origin_y + i, value);
	BWDrawPoint(w, origin_x + delta, origin_y - i, value);
	BWDrawPoint(w, origin_x + delta, origin_y + i, value);
	if (i != delta) {
	    BWDrawPoint(w, origin_x - i, origin_y - delta, value);
	    BWDrawPoint(w, origin_x - i, origin_y + delta, value);
	    BWDrawPoint(w, origin_x + i, origin_y - delta, value);
	    BWDrawPoint(w, origin_x + i, origin_y + delta, value);
	}
    }
}