; -*-Lisp-*- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; File: imag-rndom.lsp ; RCS: $Header: /users/npm/src/widgit/examples/xtango/RCS/imag-rndom.lsp,v 2.1 1994/06/06 15:01:47 npm Exp npm $ ; Description: Load this file to bring up a test UI for randomly placing ; the requested TANGOIMAGE within the Tango drawing area widget. ; On the drawing area, remember that left-mouse selects, left-drag ; moves, middle-drag resizes, and right-click pops up a menu of ; methods on the selected image (doesn't actually do anything, ; yet). ; Author: Niels P. Mayer ; Created: Thu Mar 18 19:18:25 1993 ; Modified: Mon Jun 6 03:52:26 1994 (Niels Mayer) npm@indeed ; Language: Lisp ; Package: N/A ; Status: X11r6 contrib release ; ; Copyright (C) 1994, Enterprise Integration Technologies Corp. and Niels Mayer. ; WINTERP 1.15-1.99, Copyright (c) 1993, Niels P. Mayer. ; WINTERP 1.0-1.14, Copyright (c) 1989-1992 Hewlett-Packard Co. and Niels Mayer. ; ; Permission to use, copy, modify, distribute, and sell this software and its ; documentation for any purpose is hereby granted without fee, provided that ; the above copyright notice appear in all copies and that both that ; copyright notice and this permission notice appear in supporting ; documentation, and that the name of Enterprise Integration Technologies, ; Hewlett-Packard Company, or Niels Mayer not be used in advertising or ; publicity pertaining to distribution of the software without specific, ; written prior permission. Enterprise Integration Technologies, Hewlett-Packard ; Company, and Niels Mayer makes no representations about the suitability of ; this software for any purpose. It is provided "as is" without express or ; implied warranty. ; ; ENTERPRISE INTEGRATION TECHNOLOGIES, HEWLETT-PACKARD COMPANY AND NIELS MAYER ; DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED ; WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL ENTERPRISE ; INTEGRATION TECHNOLOGIES, HEWLETT-PACKARD COMPANY OR NIELS MAYER BE LIABLE ; FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER ; RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF ; CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN ; CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (require "lib-utils/unixstuf") ;define read-exec-cmd and other unixisms... (require "xtango/cls-image") ;define methods on all tango-image classes allowing movement/resizing, etc. (require "xtango/cls-widget") ;define XTANGO-WIDGET-CLASS, XTANGO-BUTTON-WIDGET-CLASS (require "lib-widgets/timed-msg") ;define TIMED-MESSAGE-DISPLAY-WIDGET-CLASS (let (top_w main_w menubar_w system_pulldown_w tango_pulldown_w images_pulldown_w tango_w workarea_w tf_w pick_pb_w loc_pb_w sep_w ) (setq top_w (send TOP_LEVEL_SHELL_WIDGET_CLASS :new "xtango" )) (setq main_w (send XM_MAIN_WINDOW_WIDGET_CLASS :new :managed "mainw" top_w )) (setq menubar_w (send XM_ROW_COLUMN_WIDGET_CLASS :new :managed :simple_menu_bar "menubar" main_w :XMN_BUTTON_COUNT 4 :XMN_BUTTONS #("System" "Tango" "Images" "Zoom/Pan") :XMN_BUTTON_MNEMONICS #(#\S #\T #\I #\Z) :XMN_BUTTON_TYPE #(:CASCADEBUTTON :CASCADEBUTTON :CASCADEBUTTON :CASCADEBUTTON) )) (send (setq system_pulldown_w (send XM_ROW_COLUMN_WIDGET_CLASS :new :simple_pulldown_menu "system" menubar_w :XMN_POST_FROM_BUTTON 0 ;post from "System" :XMN_BUTTON_COUNT 1 :XMN_BUTTONS #("Quit") :XMN_BUTTON_MNEMONICS #(#\Q) :XMN_BUTTON_TYPE #(:PUSHBUTTON) )) :add_callback :xmn_entry_callback ;use this instead of XmNsimpleCallback '(CALLBACK_ENTRY_WIDGET) '( ;; (send CALLBACK_ENTRY_WIDGET :name) returns "button_<#>" ;; where <#> is 0 ... (button-count-1). ;; we use 'read' to return the FIXNUM <#> after truncating the ;; 7 chars "button_" from the front of the string. (case (read (make-string-input-stream (send CALLBACK_ENTRY_WIDGET :name) 7)) (0 ;QUIT (send top_w :destroy) ) )) ) (setq tango_pulldown_w (send XM_ROW_COLUMN_WIDGET_CLASS :new :simple_pulldown_menu "tango" menubar_w :XMN_POST_FROM_BUTTON 1 ;post from "Tango" :XMN_BUTTON_COUNT 3 :XMN_BUTTON_TYPE #(:RADIOBUTTON :RADIOBUTTON :TOGGLEBUTTON) :XMN_BUTTONS #("Patterns Represent Colors (Monochrome Only)" "Patterns Represent Fills (Monochrome Only)" "Debug Messages") :XMN_BUTTON_MNEMONICS #(#\C #\F #\D) )) (setq images_pulldown_w (send XM_ROW_COLUMN_WIDGET_CLASS :new :simple_pulldown_menu "images" menubar_w :XMN_POST_FROM_BUTTON 2 ;post from "Images" :XMN_BUTTON_COUNT 10 :XMN_BUTTONS #("Draw-Line" "Draw-Rectangle" "Draw-Circle" "Draw-Ellipse" "Draw-Polyline" "Draw-Polygon" "Draw-Spline" "Draw-Bitmap" "Draw-Text" "Draw-Composite") :XMN_BUTTON_MNEMONICS #(#\L #\R #\C #\E #\P #\g #\S #\B #\T #\m) :XMN_BUTTON_TYPE #(:PUSHBUTTON :PUSHBUTTON :PUSHBUTTON :PUSHBUTTON :PUSHBUTTON :PUSHBUTTON :PUSHBUTTON :PUSHBUTTON :PUSHBUTTON :PUSHBUTTON) )) (send (send XM_ROW_COLUMN_WIDGET_CLASS :new :simple_pulldown_menu "zoom-pan" menubar_w :XMN_POST_FROM_BUTTON 3 ;post from "Zoom/Pan" :XMN_BUTTON_COUNT 7 :XMN_BUTTON_TYPE #(:PUSHBUTTON :PUSHBUTTON :PUSHBUTTON :PUSHBUTTON :PUSHBUTTON :PUSHBUTTON :PUSHBUTTON) :XMN_BUTTONS #("Zoom In" "Zoom Out" "Pan Left" "Pan Right" "Pan Up" "Pan Down" "Reset") :XMN_BUTTON_MNEMONICS #(#\I #\O #\L #\R #\U #\D #\R) :XMN_BUTTON_ACCELERATORS #("Next" "Prior" "Left" "Right" "Up" "Down" "Home") :XMN_BUTTON_ACCELERATOR_TEXT #("-Key" "-Key" "-Key" "-Key" "-Key" "-Key" "-Key") :XMN_BUTTON_TYPE #(:PUSHBUTTON :PUSHBUTTON :PUSHBUTTON :PUSHBUTTON :PUSHBUTTON :PUSHBUTTON :PUSHBUTTON) ) :add_callback :xmn_entry_callback ;use this instead of XmNsimpleCallback '(CALLBACK_ENTRY_WIDGET) '( (case (read (make-string-input-stream (send CALLBACK_ENTRY_WIDGET :name) 7)) (0 (send tango_w :zoom :in 0.95)) (1 (send tango_w :zoom :out 0.95)) (2 (send tango_w :pan :left 0.025)) (3 (send tango_w :pan :right 0.025)) (4 (send tango_w :pan :up 0.025)) (5 (send tango_w :pan :down 0.025)) (6 (send tango_w :set_coord 0.0 1.0 1.0 0.0)) (T (send tf_w :error-display-string "Error"))) )) (setq workarea_w (send XM_FORM_WIDGET_CLASS :new :managed "work" main_w :XMN_FRACTION_BASE 2 )) (setq pick_pb_w (send XM_PUSH_BUTTON_GADGET_CLASS :new :managed "pick_pb" workarea_w :XMN_LABEL_STRING "pick image" :XMN_TOP_ATTACHMENT :attach_form :XMN_LEFT_ATTACHMENT :attach_form :XMN_RIGHT_ATTACHMENT :attach_position :XMN_RIGHT_POSITION 1 )) (setq loc_pb_w (send XM_PUSH_BUTTON_GADGET_CLASS :new :managed "loc_pb" workarea_w :XMN_LABEL_STRING "display location" :XMN_TOP_ATTACHMENT :attach_form :XMN_LEFT_ATTACHMENT :attach_position :XMN_LEFT_POSITION 1 :XMN_RIGHT_ATTACHMENT :attach_form )) (setq sep_w (send XM_SEPARATOR_GADGET_CLASS :new :managed "sep" workarea_w :XMN_ORIENTATION :horizontal :XMN_TOP_ATTACHMENT :attach_widget :XMN_TOP_WIDGET pick_pb_w :XMN_LEFT_ATTACHMENT :attach_form :XMN_RIGHT_ATTACHMENT :attach_form )) (setq tango_w (send XTANGO-WIDGET-CLASS :new :managed "tango" workarea_w :XMN_HEIGHT 400 :XMN_WIDTH 400 :XMN_TOP_ATTACHMENT :attach_widget :XMN_TOP_WIDGET sep_w :XMN_LEFT_ATTACHMENT :attach_form :XMN_RIGHT_ATTACHMENT :attach_form :XMN_BOTTOM_ATTACHMENT :attach_form )) (setq tf_w (send TIMED-MESSAGE-DISPLAY-WIDGET-CLASS :new :managed "message" main_w )) (send main_w :set_values :XMN_MENU_BAR menubar_w :XMN_WORK_WINDOW workarea_w :XMN_MESSAGE_WINDOW tf_w ) (send top_w :realize) (send tango_w :FORCED_EXPOSE_UPDATE) ;wait until exposed to ensure windows created for :begin_drawing call (send tango_w :begin_drawing) ;must call this after :realize (send pick_pb_w :set_callback :xmn_activate_callback '() '( (let ( (image (send tango_w :input_image)) ) (if image (progn (TANGO:TX_PERFORM (send image :TAP_FLASH 1)) (send tf_w :display-string (format nil "~A" image)) ) (send tf_w :error-display-string ":INPUT_IMAGE failed") ) ) )) (send loc_pb_w :set_callback :xmn_activate_callback '() '( (let ((coord (send tango_w :INPUT_COORD))) (if coord (send tf_w :display-string (format nil ":INPUT_COORD returned ~A" coord)) (send tf_w :error-display-string ":INPUT_COORD failed") )) )) (send tango_pulldown_w :add_callback :xmn_entry_callback ;use this instead of XmNsimpleCallback '(CALLBACK_ENTRY_WIDGET CALLBACK_ENTRY_SET) '( (let ( (expose_callback NIL) ) ;; (send CALLBACK_ENTRY_WIDGET :name) returns "button_<#>" ;; where <#> is 0 ... (button-count-1). ;; we use 'read' to return the FIXNUM <#> after truncating the ;; 7 chars "button_" from the front of the string. (case (read (make-string-input-stream (send CALLBACK_ENTRY_WIDGET :name) 7)) (0 (if CALLBACK_ENTRY_SET (progn (send tango_w :mono_pattern_representation :colors) (send (aref (send (send CALLBACK_ENTRY_WIDGET :parent) :get_children) 1) ;must enforce radio behavior manually :set_state nil t) ))) (1 (if CALLBACK_ENTRY_SET (progn (send tango_w :mono_pattern_representation :fills) (send (aref (send (send CALLBACK_ENTRY_WIDGET :parent) :get_children) 0) ;must enforce radio behavior manually :set_state nil t) ))) (2 (send tango_w :set_debug CALLBACK_ENTRY_SET)) (T (send msg_w :error-display-string "Error")))) )) (send images_pulldown_w :add_callback :xmn_entry_callback ;use this instead of XmNsimpleCallback '(CALLBACK_ENTRY_WIDGET) '( ;; (send CALLBACK_ENTRY_WIDGET :name) returns "button_<#>" ;; where <#> is 0 ... (button-count-1). ;; we use 'read' to return the FIXNUM <#> after truncating the ;; 7 chars "button_" from the front of the string. (case (read (make-string-input-stream (send CALLBACK_ENTRY_WIDGET :name) 7)) (0 ;"DRAW-LINE" (setq im (send TANGO:LINE_IMAGE_CLASS :new :show tango_w (complex (/ (random 1000000) 1000000.0) ;location_coord (/ (random 1000000) 1000000.0)) (complex (- (/ (random 1000000) 1000000.0) 0.5) ;size_coord (- (/ (random 1000000) 1000000.0) 0.5)) (random 8) ;tango_color (/ (random 1000000) 1000000.0) ;width_float (/ (random 1000000) 1000000.0) ;line_style (case (random 3) ;arrow_type (0 :no_arrow) (1 :forw_arrow) (2 :back_arrow) (3 :both_arrow) ) )) ) (1 ;"DRAW-RECTANGLE" (setq im (send TANGO:RECTANGLE_IMAGE_CLASS :new :show tango_w (complex (/ (random 1000000) 1000000.0) ;location_coord (/ (random 1000000) 1000000.0)) (complex (/ (random 500000) 1000000.0) ;size_coord (/ (random 500000) 1000000.0)) (random 8) ;tango_color (/ (random 1000000) 1000000.0) ;fill_float )) ) (2 ;"DRAW-CIRCLE" (setq im (send TANGO:CIRCLE_IMAGE_CLASS :new :show tango_w (complex (/ (random 1000000) 1000000.0) ;location_coord (/ (random 1000000) 1000000.0)) (/ (random 500000) 1000000.0) ;radius_float (random 8) ;tango_color (/ (random 1000000) 1000000.0) ;fill_float )) ) (3 ;"DRAW-ELLIPSE" (setq im (send TANGO:ELLIPSE_IMAGE_CLASS :new :show tango_w (complex (/ (random 1000000) 1000000.0) ;location_coord (/ (random 1000000) 1000000.0)) (complex (/ (random 500000) 1000000.0) ;radius_coord (/ (random 500000) 1000000.0)) (random 8) ;tango_color (/ (random 1000000) 1000000.0) ;fill_float )) ) (4 ;"DRAW-POLYLINE" (setq im (send TANGO:POLYLINE_IMAGE_CLASS :new :show tango_w (complex (/ (random 1000000) 1000000.0) ;location_coord (/ (random 1000000) 1000000.0)) (complex (- (/ (random 1000000) 1000000.0) 0.5) ;vertices_coords (- (/ (random 1000000) 1000000.0) 0.5)) (complex (- (/ (random 1000000) 1000000.0) 0.5) (- (/ (random 1000000) 1000000.0) 0.5)) (complex (- (/ (random 1000000) 1000000.0) 0.5) (- (/ (random 1000000) 1000000.0) 0.5)) (complex (- (/ (random 1000000) 1000000.0) 0.5) (- (/ (random 1000000) 1000000.0) 0.5)) (complex (- (/ (random 1000000) 1000000.0) 0.5) (- (/ (random 1000000) 1000000.0) 0.5)) (complex (- (/ (random 1000000) 1000000.0) 0.5) (- (/ (random 1000000) 1000000.0) 0.5)) (complex (- (/ (random 1000000) 1000000.0) 0.5) (- (/ (random 1000000) 1000000.0) 0.5)) (random 8) ;tango_color (/ (random 1000000) 1000000.0) ;width_float (/ (random 1000000) 1000000.0) ;line_style (case (random 3) ;arrow_type (0 :no_arrow) (1 :forw_arrow) (2 :back_arrow) (3 :both_arrow) ) )) ) (5 ;"DRAW-POLYGON" (setq im (send TANGO:POLYGON_IMAGE_CLASS :new :show tango_w (complex (/ (random 1000000) 1000000.0) ;location_coord (/ (random 1000000) 1000000.0)) (complex (- (/ (random 1000000) 1000000.0) 0.5) ;vertices_coords (- (/ (random 1000000) 1000000.0) 0.5)) (complex (- (/ (random 1000000) 1000000.0) 0.5) (- (/ (random 1000000) 1000000.0) 0.5)) (complex (- (/ (random 1000000) 1000000.0) 0.5) (- (/ (random 1000000) 1000000.0) 0.5)) (complex (- (/ (random 1000000) 1000000.0) 0.5) (- (/ (random 1000000) 1000000.0) 0.5)) (complex (- (/ (random 1000000) 1000000.0) 0.5) (- (/ (random 1000000) 1000000.0) 0.5)) (complex (- (/ (random 1000000) 1000000.0) 0.5) (- (/ (random 1000000) 1000000.0) 0.5)) (complex (- (/ (random 1000000) 1000000.0) 0.5) (- (/ (random 1000000) 1000000.0) 0.5)) (random 8) ;tango_color (/ (random 1000000) 1000000.0) ;fill_float )) ) (6 ;"DRAW-SPLINE" (setq im (send TANGO:SPLINE_IMAGE_CLASS :new :show tango_w (complex (/ (random 1000000) 1000000.0) ;location_coord (/ (random 1000000) 1000000.0)) (complex (- (/ (random 1000000) 1000000.0) 0.5) ;vertices_coords (- (/ (random 1000000) 1000000.0) 0.5)) (complex (- (/ (random 1000000) 1000000.0) 0.5) (- (/ (random 1000000) 1000000.0) 0.5)) (complex (- (/ (random 1000000) 1000000.0) 0.5) (- (/ (random 1000000) 1000000.0) 0.5)) (complex (- (/ (random 1000000) 1000000.0) 0.5) (- (/ (random 1000000) 1000000.0) 0.5)) (complex (- (/ (random 1000000) 1000000.0) 0.5) (- (/ (random 1000000) 1000000.0) 0.5)) (complex (- (/ (random 1000000) 1000000.0) 0.5) (- (/ (random 1000000) 1000000.0) 0.5)) (complex (- (/ (random 1000000) 1000000.0) 0.5) (- (/ (random 1000000) 1000000.0) 0.5)) (random 8) ;tango_color (/ (random 1000000) 1000000.0) ;width_float (/ (random 1000000) 1000000.0) ;line_style )) ) (7 ;"DRAW-BITMAP" (setq im (send TANGO:BITMAP_IMAGE_CLASS :new :show tango_w (complex (/ (random 1000000) 1000000.0) ;location_coord (/ (random 1000000) 1000000.0)) ;loc_y_float #( ;bitmap array #( #(7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 1) #(7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 1 7) #(7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 1 7 7) #(7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 1 7 7 7) #(7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 1 7 7 7 7) #(7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 1 7 7 7 7 7) #(7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 1 7 7 7 7 7 7) #(7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 1 7 7 7 7 7 7 7) #(7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 1 7 7 7 7 7 7 7 7) #(7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 1 7 7 7 7 7 7 7 7 7) #(7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 1 7 7 7 7 7 7 7 7 7 7) #(7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 1 7 7 7 7 7 7 7 7 7 7 7) #(7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 1 7 7 7 7 7 7 7 7 7 7 7 7) #(7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 1 7 7 7 7 7 7 7 7 7 7 7 7 7) #(7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 1 7 7 7 7 7 7 7 7 7 7 7 7 7 7) #(7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 1 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7) #(7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 1 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7) #(7 7 7 7 7 7 7 7 7 7 7 7 7 7 1 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7) #(7 7 7 7 7 7 7 7 7 7 7 7 7 1 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7) #(7 7 7 7 7 7 7 7 7 7 7 7 1 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7) #(7 7 7 7 7 7 7 7 7 7 7 1 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7) #(7 7 7 7 7 7 7 7 7 7 1 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7) #(7 7 7 7 7 7 7 7 7 1 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7) #(7 7 7 7 7 7 7 7 1 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7) #(7 7 7 7 7 7 7 1 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7) #(7 7 7 7 7 7 1 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7) #(7 7 7 7 7 1 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7) #(7 7 7 7 1 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7) #(7 7 7 1 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7) #(7 7 1 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7) #(7 1 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7) #(1 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7) )) )) ) (8 ;"DRAW-TEXT" (setq im (send TANGO:TEXT_IMAGE_CLASS :new :show tango_w (complex (/ (random 1000000) 1000000.0) ;location_coord (/ (random 1000000) 1000000.0)) :ctr (read-exec-cmd "date") ;text_string (random 8) ;tango_color "10x20" ;default font )) ) (9 ;"DRAW-COMPOSITE" (setq im (send TANGO:COMPOSITE_IMAGE_CLASS :new :show tango_w (complex (/ (random 1000000) 1000000.0) ;location_coord (/ (random 1000000) 1000000.0)) TANGO:RECTANGLE_IMAGE_CLASS #C(0.00 0.00) #C(0.100 0.20) TANGO_COLOR_BLACK 0.0 TANGO:RECTANGLE_IMAGE_CLASS #C(0.01 0.01) #C(0.080 0.08) TANGO_COLOR_BLACK 0.0 TANGO:RECTANGLE_IMAGE_CLASS #C(0.01 0.11) #C(0.080 0.08) TANGO_COLOR_BLACK 0.0 TANGO:CIRCLE_IMAGE_CLASS #C(0.09 0.10) 0.005 TANGO_COLOR_BLACK 0.00 ) ) ) )) ) )