| version 1.1, 2001/12/10 05:02:46 | version 1.4, 2002/07/10 08:40:58 | 
|  |  | 
| /* $OpenXM$ */ | /* $OpenXM: OpenXM_contrib2/asir2000/lib/glib,v 1.3 2002/06/07 06:00:28 noro Exp $ */ | 
| /* $Id$ */ | /* $Id$ */ | 
|  |  | 
| /* Todo: | /* Todo: | 
| 
| Line 124  def glib_window(Xmin,Ymin,Xmax,Ymax) { |  | 
| Line 124  def glib_window(Xmin,Ymin,Xmax,Ymax) { |  | 
| Glib_xoffset, Glib_yoffset, Glib_xmag, Glib_ymag; | Glib_xoffset, Glib_yoffset, Glib_xmag, Glib_ymag; | 
| if (Xmax <= Xmin) error("glib window: Invalid size"); | if (Xmax <= Xmin) error("glib window: Invalid size"); | 
| if (Ymax <= Ymin) error("glib window: Invalid size"); | if (Ymax <= Ymin) error("glib window: Invalid size"); | 
|  | glib_check_arg(Xmin,Ymin); glib_check_arg(Xmax,Ymax); | 
| Glib_xmin = Xmin;  Glib_xmax = Xmax; | Glib_xmin = Xmin;  Glib_xmax = Xmax; | 
| Glib_ymin = Ymin;  Glib_ymax = Ymax; | Glib_ymin = Ymin;  Glib_ymax = Ymax; | 
| Glib_xoffset = -Xmin; | Glib_xoffset = -Xmin; | 
| 
| Line 133  def glib_window(Xmin,Ymin,Xmax,Ymax) { |  | 
| Line 134  def glib_window(Xmin,Ymin,Xmax,Ymax) { |  | 
| if (Glib_canvas < 0) glib_open(); | if (Glib_canvas < 0) glib_open(); | 
| } | } | 
|  |  | 
|  | def glib_check_arg(X,Y) { | 
|  | if (type(X) <= 1 && type(Y) <= 1) return 1; | 
|  | else { | 
|  | print("Error in glib: arguments ",0); | 
|  | print([X,Y],0); | 
|  | print(" are not numbers."); | 
|  | error("Invalid argument for glib_window, glib_putpixel, glib_line."); | 
|  | } | 
|  | } | 
|  |  | 
| def glib_putpixel(X,Y) { | def glib_putpixel(X,Y) { | 
| extern Glib_process, Glib_canvas, | extern Glib_process, Glib_canvas, | 
| Glib_xoffset, Glib_yoffset, Glib_xmag, Glib_ymag; | Glib_xoffset, Glib_yoffset, Glib_xmag, Glib_ymag; | 
| if (Glib_canvas < 0) glib_open(); | if (Glib_canvas < 0) glib_open(); | 
| glib_check(); | glib_check(); | 
| draw_obj(Glib_process,Glib_canvas, | glib_check_arg(X,Y); | 
|  | C = getopt(color); | 
|  | if ( type(C) != -1 ) | 
|  | draw_obj(Glib_process,Glib_canvas, | 
| [floor(Glib_xmag*(X+Glib_xoffset)), | [floor(Glib_xmag*(X+Glib_xoffset)), | 
|  | floor(Glib_ymag*(Y+Glib_yoffset))],C); | 
|  | else | 
|  | draw_obj(Glib_process,Glib_canvas, | 
|  | [floor(Glib_xmag*(X+Glib_xoffset)), | 
| floor(Glib_ymag*(Y+Glib_yoffset))]); | floor(Glib_ymag*(Y+Glib_yoffset))]); | 
| } | } | 
|  |  | 
| def glib_line(X0,Y0,X1,Y1) { | def glib_line(X0,Y0,X1,Y1) { | 
| extern Glib_xmag, Glib_ymag, Glib_xoffset, Glib_yoffset; | extern Glib_xmag, Glib_ymag, Glib_xoffset, Glib_yoffset; | 
|  | C = getopt(color); | 
|  | glib_check_arg(X0,Y0); | 
|  | glib_check_arg(X1,Y1); | 
| glib_clip_line(floor(Glib_xmag*(X0+Glib_xoffset)), | glib_clip_line(floor(Glib_xmag*(X0+Glib_xoffset)), | 
| floor(Glib_ymag*(Y0+Glib_yoffset)), | floor(Glib_ymag*(Y0+Glib_yoffset)), | 
| floor(Glib_xmag*(X1+Glib_xoffset)), | floor(Glib_xmag*(X1+Glib_xoffset)), | 
| floor(Glib_ymag*(Y1+Glib_yoffset))); | floor(Glib_ymag*(Y1+Glib_yoffset)),C); | 
| } | } | 
|  |  | 
| def glib_clip_line(X0,Y0,X1,Y1) { | def glib_clip_line(X0,Y0,X1,Y1,Color) { | 
| /* X0, Y0, X1, Y1 should be integers. | /* X0, Y0, X1, Y1 should be integers. | 
| Coordinates are already translated. */ | Coordinates are already translated. */ | 
| extern Glib_process, Glib_canvas, Glib_canvas_x, Glib_canvas_y; | extern Glib_process, Glib_canvas, Glib_canvas_x, Glib_canvas_y; | 
| 
| Line 195  def glib_clip_line(X0,Y0,X1,Y1) { |  | 
| Line 216  def glib_clip_line(X0,Y0,X1,Y1) { |  | 
| #endif | #endif | 
| #endif | #endif | 
| glib_check(); | glib_check(); | 
| draw_obj(Glib_process,Glib_canvas, | if ( type(Color) != -1 ) | 
|  | draw_obj(Glib_process,Glib_canvas, | 
|  | [floor(X0),floor(Y0),floor(X1),floor(Y1)],Color); | 
|  | else | 
|  | draw_obj(Glib_process,Glib_canvas, | 
| [floor(X0),floor(Y0),floor(X1),floor(Y1)]); | [floor(X0),floor(Y0),floor(X1),floor(Y1)]); | 
|  |  | 
| } | } | 
|  |  | 
| def glib_clip0_x(X0,Y0,X1,Y1,Clip) { | def glib_clip0_x(X0,Y0,X1,Y1,Clip) { | 
| 
| Line 239  def glib_clip1_y(X0,Y0,X1,Y1,Clip) { |  | 
| Line 263  def glib_clip1_y(X0,Y0,X1,Y1,Clip) { |  | 
| return([X0,Y0,X1+(Clip-Y1)*(X0-X1)/(Y0-Y1),Clip]); | return([X0,Y0,X1+(Clip-Y1)*(X0-X1)/(Y0-Y1),Clip]); | 
| } | } | 
| return([X0,Y0,X1,Y1]); | return([X0,Y0,X1,Y1]); | 
|  | } | 
|  |  | 
|  | /*&usage begin:glib_print(X,Y,Text|color) | 
|  | It put a string {Text} at [{X},{Y}] on the glib canvas. | 
|  | example: glib_print(100,100,"Hello Worlds" | color=0xff0000); | 
|  | end: */ | 
|  | def glib_print(X,Y,Text) { | 
|  | extern Glib_process, Glib_canvas, | 
|  | Glib_xoffset, Glib_yoffset, Glib_xmag, Glib_ymag; | 
|  | if (Glib_canvas < 0) glib_open(); | 
|  | glib_check(); | 
|  | glib_check_arg(X,Y); | 
|  | if (type(Text) != 7) error("glib_print(X,Y,Text): Text must be a string."); | 
|  | C = getopt(color); | 
|  | if ( type(C) != -1 ) | 
|  | draw_string(Glib_process,Glib_canvas, | 
|  | [X,Y],Text,C); | 
|  | else | 
|  | draw_string(Glib_process,Glib_canvas, | 
|  | [X,Y],Text); | 
| } | } | 
| end$ | end$ | 
|  |  |