/*
 EGGX を使ったサンプル
 RGB カラーチャート

 473088 榎田裕一郎
*/

#include <eggx.h>
#include <stdlib.h>

int main() {
  int win, i, r, g, b;
  float x,y,h,w,xx;

  win=gopen(612,450);  /* 描画ウィンドウを開く */
  winname(win, "rgb"); /* 名前をつける */

  h=25.0;
  w=60.0;
  x=310; y=420; 
  newrgbcolor(win, 200,200,200); 
  drawstr(win,x,y-10,12,0,"newrgbcolor(win, ?,?,?)");

  x=100; y=400; 
  /* 白、灰、黒（背景色と同じで見えない） */
  r=255; g=255; b=255; 
  newrgbcolor(win, r,g,b); fillrect(win, x, y, w, h);
  newrgbcolor(win, 100,100,100); drawstr(win,x,y-10,7,0,"%3i,%3i,%3i",r,g,b) ;

  x+=w*1.1;
  r=100; g=100; b=100; 
  newrgbcolor(win, r,g,b); fillrect(win, x, y, w, h);
  newrgbcolor(win, 100,100,100); drawstr(win,x,y-10,7,0,"%3i,%3i,%3i",r,g,b) ;

  x+=w*1.1;
  r=0; g=0; b=0; 
  newrgbcolor(win, r,g,b); fillrect(win, x, y, w, h);
  newrgbcolor(win, 100,100,100); drawstr(win,x,y-10,7,0,"%3i,%3i,%3i",r,g,b) ;

  /* Red, Gree, Blue の数値を 0 or 255 で組み合わせた発色例 */
  x=100; y-=h*1.8; 
  r=255; g=0; b=0; 
  newrgbcolor(win, r,g,b); fillrect(win, x, y, w, h);
  newrgbcolor(win, 100,100,100); drawstr(win,x,y-10,7,0,"%3i,%3i,%3i",r,g,b) ;

  x+=w*1.1;
  r=255; g=255; b=0; 
  newrgbcolor(win, r,g,b); fillrect(win, x, y, w, h);
  newrgbcolor(win, 100,100,100); drawstr(win,x,y-10,7,0,"%3i,%3i,%3i",r,g,b) ;

  x+=w*1.1;
  r=0; g=255; b=0;
  newrgbcolor(win, r,g,b); fillrect(win, x, y, w, h);
  newrgbcolor(win, 100,100,100); drawstr(win,x,y-10,7,0,"%3i,%3i,%3i",r,g,b) ;

  x+=w*1.1;
  r=0; g=255; b=255; 
  newrgbcolor(win, r,g,b); fillrect(win, x, y, w, h);
  newrgbcolor(win, 100,100,100); drawstr(win,x,y-10,7,0,"%3i,%3i,%3i",r,g,b) ;

  x+=w*1.1;
  r=0; g=0; b=255; 
  newrgbcolor(win, r,g,b); fillrect(win, x, y, w, h);
  newrgbcolor(win, 100,100,100); drawstr(win,x,y-10,7,0,"%3i,%3i,%3i",r,g,b) ;

  x+=w*1.1;
  r=255; g=0; b=255; 
  newrgbcolor(win, r,g,b); fillrect(win, x, y, w, h);
  newrgbcolor(win, 100,100,100); drawstr(win,x,y-10,7,0,"%3i,%3i,%3i",r,g,b) ;

  /* Red, Gree, Blue を最大発色の半分(128)で組み合わせた例 */
  x=100; y-=h*1.8; 
  r=128; g=0; b=0; 
  newrgbcolor(win, r,g,b); fillrect(win, x, y, w, h);
  newrgbcolor(win, 100,100,100); drawstr(win,x,y-10,7,0,"%3i,%3i,%3i",r,g,b) ;

  x+=w*1.1;
  r=128; g=128; b=0; 
  newrgbcolor(win, r,g,b); fillrect(win, x, y, w, h);
  newrgbcolor(win, 100,100,100); drawstr(win,x,y-10,7,0,"%3i,%3i,%3i",r,g,b) ;

  x+=w*1.1;
  r=0; g=128; b=0;
  newrgbcolor(win, r,g,b); fillrect(win, x, y, w, h);
  newrgbcolor(win, 100,100,100); drawstr(win,x,y-10,7,0,"%3i,%3i,%3i",r,g,b) ;

  x+=w*1.1;
  r=0; g=128; b=128; 
  newrgbcolor(win, r,g,b); fillrect(win, x, y, w, h);
  newrgbcolor(win, 100,100,100); drawstr(win,x,y-10,7,0,"%3i,%3i,%3i",r,g,b) ;

  x+=w*1.1;
  r=0; g=0; b=128; 
  newrgbcolor(win, r,g,b); fillrect(win, x, y, w, h);
  newrgbcolor(win, 100,100,100); drawstr(win,x,y-10,7,0,"%3i,%3i,%3i",r,g,b) ;

  x+=w*1.1;
  r=128; g=0; b=128; 
  newrgbcolor(win, r,g,b); fillrect(win, x, y, w, h);
  newrgbcolor(win, 100,100,100); drawstr(win,x,y-10,7,0,"%3i,%3i,%3i",r,g,b) ;

  /* Red, Gree, Blue を最大発色、かつ白っぽい色で組み合わせた例 */
  x=100; y-=h*1.8; 
  r=255; g=128; b=128; 
  newrgbcolor(win, r,g,b); fillrect(win, x, y, w, h);
  newrgbcolor(win, 100,100,100); drawstr(win,x,y-10,7,0,"%3i,%3i,%3i",r,g,b) ;

  x+=w*1.1;
  r=255; g=255; b=128; 
  newrgbcolor(win, r,g,b); fillrect(win, x, y, w, h);
  newrgbcolor(win, 100,100,100); drawstr(win,x,y-10,7,0,"%3i,%3i,%3i",r,g,b) ;

  x+=w*1.1;
  r=128; g=255; b=128;
  newrgbcolor(win, r,g,b); fillrect(win, x, y, w, h);
  newrgbcolor(win, 100,100,100); drawstr(win,x,y-10,7,0,"%3i,%3i,%3i",r,g,b) ;

  x+=w*1.1;
  r=128; g=255; b=255; 
  newrgbcolor(win, r,g,b); fillrect(win, x, y, w, h);
  newrgbcolor(win, 100,100,100); drawstr(win,x,y-10,7,0,"%3i,%3i,%3i",r,g,b) ;

  x+=w*1.1;
  r=128; g=128; b=255; 
  newrgbcolor(win, r,g,b); fillrect(win, x, y, w, h);
  newrgbcolor(win, 100,100,100); drawstr(win,x,y-10,7,0,"%3i,%3i,%3i",r,g,b) ;

  x+=w*1.1;
  r=255; g=128; b=255; 
  newrgbcolor(win, r,g,b); fillrect(win, x, y, w, h);
  newrgbcolor(win, 100,100,100); drawstr(win,x,y-10,7,0,"%3i,%3i,%3i",r,g,b) ;
  
  /* なめらかに発色を変更した例 */

  x=50.0; xx=x+256;
  y=20.0;
  h=25.0;
  
  for(i=0;i<256;i++) { /* 赤 */
    r=i; g=0; b=0; newrgbcolor(win, r, g, b); fillrect(win, x+i, y, 1, h);
    r=255; g=i; b=i; newrgbcolor(win, r, g, b); fillrect(win, xx+i, y, 1, h);
  };
  y+=(h*1.2); 
  for(i=0;i<256;i++) { /* 緑 */
    r=0; g=i; b=0; newrgbcolor(win, r, g, b); fillrect(win, x+i, y, 1, h);
    r=i; g=255; b=i; newrgbcolor(win, r, g, b); fillrect(win, xx+i, y, 1, h);
  };
  y+=(h*1.2); 
  for(i=0;i<256;i++) { /* 青 */
    r=0; g=0; b=i; newrgbcolor(win, r, g, b); fillrect(win, x+i, y, 1, h);
    r=i; g=i; b=255; newrgbcolor(win, r, g, b); fillrect(win, xx+i, y, 1, h);
  };
  y+=(h*1.2); 
  for(i=0;i<256;i++) { /* 紫 */
    r=i; g=0; b=i; newrgbcolor(win, r, g, b); fillrect(win, x+i, y, 1, h);
    r=255; g=i; b=255; newrgbcolor(win, r, g, b); fillrect(win, xx+i, y, 1, h);
  };
  y+=(h*1.2); 
  for(i=0;i<256;i++) { /* 水色 */
    r=0; g=i; b=i; newrgbcolor(win, r, g, b); fillrect(win, x+i, y, 1, h);
    r=i; g=255; b=255; newrgbcolor(win, r, g, b); fillrect(win, xx+i, y, 1, h);
  };
  y+=(h*1.2); 
  for(i=0;i<256;i++) { /* 黄 */
    r=i; g=i; b=0; newrgbcolor(win, r, g, b); fillrect(win, x+i, y, 1, h);
    r=255; g=255; b=i; newrgbcolor(win, r, g, b); fillrect(win, xx+i, y, 1, h);
  };
  y+=(h*1.2); 
  for(i=0;i<256;i++) { /* 灰 */
    r=i; g=i; b=i; newrgbcolor(win, r, g, b); fillrect(win, x+i*2, y, 2, h);
  };
  y+=(h*1.2); 
  
  ggetch(win);
  gclose(win);

  return(0);

}
  
