home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The World of Computer Software
/
World_Of_Computer_Software-02-385-Vol-1of3.iso
/
p
/
pdraw.zip
/
PDRAW.UIL
< prev
next >
Wrap
Text File
|
1992-07-23
|
79KB
|
2,715 lines
! "%W% Stardent %E%"
!
! Copyright (c) 1991 by
! Stardent Computer Inc.
! All Rights Reserved
!
! Permission to use, copy, modify, and distribute this software and its
! documentation for any purpose and without fee is hereby granted,
! 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 Stardent Computer not be
! used in advertising or publicity pertaining to distribution of the
! software without specific, written prior permission. Stardent Computer
! makes no representations about the suitability of this software for any
! purpose. It is provided "as is" without express or implied warranty.
!
module pdraw
version = 'v1.0'
names = case_sensitive
procedure
proc_pdraw_exit();
proc_pdraw_create(integer);
proc_pdraw_expose();
proc_pdraw_resize();
proc_pdraw_input();
proc_pdraw_activate(integer);
proc_pdraw_file();
proc_pdraw_surface();
value
k_drawing_area : 0;
k_view_set : 1;
k_apply_vs : 2;
k_reset_vs : 3;
k_dismiss_vs : 4;
k_view_ref_pt_x : 5;
k_view_ref_pt_y : 6;
k_view_ref_pt_z : 7;
k_view_pl_norm_x : 8;
k_view_pl_norm_y : 9;
k_view_pl_norm_z : 10;
k_view_up_vect_x : 11;
k_view_up_vect_y : 12;
k_view_up_vect_z : 13;
k_proj_ref_pt_x : 14;
k_proj_ref_pt_y : 15;
k_proj_ref_pt_z : 16;
k_view_window_minx : 17;
k_view_window_maxx : 18;
k_view_window_miny : 19;
k_view_window_maxy : 20;
k_view_plane_dist : 21;
k_view_plane_back : 22;
k_view_plane_front : 23;
k_proj_vp_minx : 24;
k_proj_vp_maxx : 25;
k_proj_vp_miny : 26;
k_proj_vp_maxy : 27;
k_proj_vp_minz : 28;
k_proj_vp_maxz : 29;
k_proj_type_para : 30;
k_proj_type_persp : 31;
k_dump_strux : 32;
k_refresh : 33;
k_tool_pointer : 34;
k_tool_line : 35;
k_tool_view : 36;
k_tool_tristrip : 37;
k_delete : 38;
k_light : 39;
k_light_on1 : 40;
k_light_on2 : 41;
k_light_on3 : 42;
k_light_on4 : 43;
k_light_on5 : 44;
k_light_on6 : 45;
k_light_on7 : 46;
k_light_on8 : 47;
k_light_edit1 : 48;
k_light_edit2 : 49;
k_light_edit3 : 50;
k_light_edit4 : 51;
k_light_edit5 : 52;
k_light_edit6 : 53;
k_light_edit7 : 54;
k_light_edit8 : 55;
k_light_type_ambient : 56;
k_light_type_directional : 57;
k_light_type_positional : 58;
k_light_type_spot : 59;
k_light_pos_x : 60;
k_light_pos_y : 61;
k_light_pos_z : 62;
k_light_color_red : 63;
k_light_color_green : 64;
k_light_color_blue : 65;
k_light_direction_x : 66;
k_light_direction_y : 67;
k_light_direction_z : 68;
k_light_coeff_const : 69;
k_light_coeff_dist : 70;
k_light_conc_exp : 71;
k_light_spread_angle : 72;
k_apply_light : 73;
k_reset_light : 74;
k_dismiss_light : 75;
k_surface : 76;
k_FREE : 77;
k_spin_strux : 78;
k_spin_slowly : 79;
k_save : 80;
k_read : 81;
k_file : 82;
k_undo : 83;
k_file_help : 84;
k_delete_all : 85;
k_face_cull : 86;
k_sphere : 87;
k_dismiss_surface : 88;
k_reset_surface : 89;
k_apply_surface : 90;
k_surface_refl_transparency : 91;
k_surface_refl_specexp : 92;
k_surface_refl_specular : 93;
k_surface_refl_diffuse : 94;
k_surface_refl_ambient : 95;
k_sstyle_empty : 96;
k_sstyle_solid : 97;
k_sstyle_hollow : 98;
k_sshade_flat : 99;
k_sshade_gouraud : 100;
k_sshade_dot : 101;
k_sshade_phong : 102;
k_cull_none : 103;
k_cull_back : 104;
k_cull_front : 105;
value
yellow : color('yellow', foreground);
red : color('red', background);
green : color('green', foreground);
magenta : color('magenta', background);
gold : color('gold', foreground);
lightblue : color('lightblue', background);
!************************************************************************
! Main Window
!************************************************************************
object
pdraw_obj_main : XmMainWindow {
controls {
XmMenuBar pdraw_obj_bar ;
XmForm pdraw_obj_form ;
};
};
object
pdraw_obj_form : XmForm {
arguments {
XmNdefaultButton = pdraw_tool_line;
};
controls {
XmRowColumn pdraw_tool_palette;
XmSeparator pdraw_obj_sep;
XmDrawingArea pdraw_pex_area;
};
};
!************************************************************************
! the top menu bar
!************************************************************************
object
pdraw_obj_bar : XmMenuBar {
arguments {
XmNorientation = XmHORIZONTAL;
};
controls {
XmCascadeButton file_menu_entry;
XmCascadeButton edit_menu_entry;
XmCascadeButton misc_menu_entry;
};
};
object
file_menu_entry : XmCascadeButton {
arguments {
XmNlabelString = compound_string('File') ;
XmNmnemonic = keysym("F");
};
controls {
XmPulldownMenu file_menu;
};
};
object
file_menu : XmPulldownMenu {
controls {
XmPushButton pdraw_obj_read;
XmPushButton pdraw_obj_save;
XmPushButton pdraw_obj_quit;
};
};
object
pdraw_obj_quit : XmPushButton {
arguments {
XmNlabelString = compound_string('Quit');
XmNaccelerator = "Ctrl<Key>z:";
XmNacceleratorText = "Ctrl/z";
XmNmnemonic = keysym("Q");
};
callbacks {
XmNactivateCallback = procedure proc_pdraw_exit();
};
};
object
pdraw_obj_read : XmPushButton {
arguments {
XmNlabelString = compound_string('Read');
XmNmnemonic = keysym("R");
};
callbacks {
XmNactivateCallback = procedure proc_pdraw_activate(k_read);
};
};
object
pdraw_obj_save : XmPushButton {
arguments {
XmNlabelString = compound_string('Save');
XmNmnemonic = keysym("S");
};
callbacks {
XmNactivateCallback = procedure proc_pdraw_activate(k_save);
};
};
!************************************************************************
! Edit Menu
!************************************************************************
object
edit_menu_entry : XmCascadeButton {
arguments {
XmNlabelString = compound_string('Edit') ;
XmNmnemonic = keysym("E");
};
controls {
XmPulldownMenu edit_menu;
};
};
object
edit_menu : XmPulldownMenu {
controls {
XmPushButton pdraw_edit_undo;
XmPushButton pdraw_edit_delete;
XmPushButton pdraw_edit_delete_all;
};
};
object
pdraw_edit_delete : XmPushButton {
arguments {
XmNlabelString = compound_string('Delete');
XmNmnemonic = keysym("D");
XmNaccelerator = "Ctrl<Key>d:";
XmNacceleratorText = "Ctrl/d";
};
callbacks {
XmNactivateCallback = procedure proc_pdraw_activate(k_delete);
};
};
object
pdraw_edit_undo : XmPushButton {
arguments {
XmNlabelString = compound_string('Undo');
XmNmnemonic = keysym("U");
};
callbacks {
XmNactivateCallback = procedure proc_pdraw_activate(k_undo);
};
};
object
pdraw_edit_delete_all : XmPushButton {
arguments {
XmNlabelString = compound_string('Delete All');
XmNmnemonic = keysym("A");
};
callbacks {
XmNactivateCallback = procedure proc_pdraw_activate(k_delete_all);
};
};
!************************************************************************
! miscellaneous menu
!************************************************************************
object
misc_menu_entry : XmCascadeButton {
arguments {
XmNlabelString = compound_string('Options') ;
XmNmnemonic = keysym("O");
};
controls {
XmPulldownMenu misc_menu;
};
};
object
misc_menu : XmPulldownMenu {
controls {
XmPushButton pdraw_misc_view_set;
XmPushButton pdraw_misc_light;
XmPushButton pdraw_misc_dump_strux;
XmPushButton pdraw_misc_refresh;
XmPushButton pdraw_misc_surface;
XmPushButton pdraw_misc_spin_strux;
XmPushButton pdraw_misc_spin_slowly;
XmPushButton pdraw_misc_sphere;
};
};
object
pdraw_misc_view_set : XmPushButton {
arguments {
XmNlabelString = compound_string('Set View');
XmNmnemonic = keysym("V");
};
callbacks {
XmNactivateCallback = procedure proc_pdraw_activate(k_view_set);
};
};
object
pdraw_misc_light : XmPushButton {
arguments {
XmNlabelString = compound_string('Light');
XmNmnemonic = keysym("L");
};
callbacks {
XmNactivateCallback = procedure proc_pdraw_activate(k_light);
};
};
object
pdraw_misc_dump_strux : XmPushButton {
arguments {
XmNlabelString = compound_string('Dump Strux');
XmNmnemonic = keysym("D");
};
callbacks {
XmNactivateCallback = procedure proc_pdraw_activate(k_dump_strux);
};
};
object
pdraw_misc_refresh : XmPushButton {
arguments {
XmNlabelString = compound_string('Refresh');
XmNmnemonic = keysym("R");
};
callbacks {
XmNactivateCallback = procedure proc_pdraw_activate(k_refresh);
};
};
object
pdraw_misc_surface : XmPushButton {
arguments {
XmNlabelString = compound_string('Surface Attr');
XmNmnemonic = keysym("S");
};
callbacks {
XmNactivateCallback = procedure proc_pdraw_activate(k_surface);
};
};
object
pdraw_misc_spin_strux : XmPushButton {
arguments {
XmNlabelString = compound_string('Spin');
XmNmnemonic = keysym("n");
};
callbacks {
XmNactivateCallback = procedure proc_pdraw_activate(k_spin_strux);
};
};
object
pdraw_misc_spin_slowly : XmPushButton {
arguments {
XmNlabelString = compound_string('Spin Slow');
XmNmnemonic = keysym("w");
};
callbacks {
XmNactivateCallback = procedure proc_pdraw_activate(k_spin_slowly);
};
};
object
pdraw_misc_sphere : XmPushButton {
arguments {
XmNlabelString = compound_string('Sphere');
XmNmnemonic = keysym("h");
};
callbacks {
XmNactivateCallback = procedure proc_pdraw_activate(k_sphere);
};
};
!************************************************************************
! tool palette RowColumn
!************************************************************************
value
button_ct : color_table(
yellow='o'
,red='.'
,background color=' ');
value
pointer_icon: icon(color_table=button_ct,
' ',
' ...................... ',
' .....o................ ',
' .....oo............... ',
' .....ooo.............. ',
' .....oooo............. ',
' .....oo.oo............ ',
' .....oo..oo........... ',
' .....oo...oo.......... ',
' .....oo....oo......... ',
' .....oo.....oo........ ',
' .....oo......oo....... ',
' .....ooooooooooo...... ',
' .....oooooooooooo..... ',
' ..........ooo......... ',
' ...........ooo........ ',
' ...........oooo....... ',
' ............oooo...... ',
' ...................... ',
' ');
value
line_icon: icon(color_table=button_ct,
' ',
' ...................... ',
' .................oo... ',
' ................ooo... ',
' ...............ooo.... ',
' ..............ooo..... ',
' .............ooo...... ',
' ............ooo....... ',
' ...........ooo........ ',
' ..........ooo......... ',
' .........ooo.......... ',
' ........ooo........... ',
' .......ooo............ ',
' ......ooo............. ',
' .....ooo.............. ',
' ....ooo............... ',
' ...ooo................ ',
' ...oo................. ',
' ...................... ',
' ');
value
view_icon: icon(color_table=button_ct,
' ',
' ...................... ',
' ...................... ',
' ...................... ',
' ...................... ',
' ......oooooooooo...... ',
' ....o....oooo....o.... ',
' ..o.....oooooo.....o.. ',
' .o.....oooooooo.....o. ',
' .o.....oooooooo.....o. ',
' .o.....oooooooo.....o. ',
' ..o.....oooooo.....o.. ',
' ....o....oooo....o.... ',
' ......oooooooooo...... ',
' ...................... ',
' ...................... ',
' ...................... ',
' ...................... ',
' ...................... ',
' ');
value
tristrip_icon: icon(color_table=button_ct,
' ',
' ...................... ',
' ..................oo.. ',
' ................oooo.. ',
' ..............oo..oo.. ',
' ............oo....oo.. ',
' ..........oo......oo.. ',
' ........oo........oo.. ',
' ......oo..........oo.. ',
' ....oo........oooooo.. ',
' ..oo....oooooo....oo.. ',
' ..oooooo........oo.... ',
' ..oo..........oo...... ',
' ..oo........oo........ ',
' ..oo......oo.......... ',
' ..oo....oo............ ',
' ..oo..oo.............. ',
' ..oooo................ ',
' ..oo.................. ',
' ');
object
pdraw_tool_palette : XmRowColumn {
arguments {
XmNorientation = XmVERTICAL;
XmNleftAttachment = XmATTACH_FORM;
XmNbottomAttachment = XmATTACH_FORM;
XmNtopAttachment = XmATTACH_FORM;
XmNborderWidth = 2;
};
controls {
XmPushButton pdraw_tool_pointer;
XmPushButton pdraw_tool_line;
XmPushButton pdraw_tool_view;
XmPushButton pdraw_tool_tristrip;
};
};
object
pdraw_tool_pointer : XmPushButton {
arguments {
XmNlabelType = XmPIXMAP;
XmNlabelPixmap = pointer_icon;
};
callbacks {
XmNactivateCallback = procedure proc_pdraw_activate(k_tool_pointer);
};
};
object
pdraw_tool_line : XmPushButton {
arguments {
XmNlabelType = XmPIXMAP;
XmNlabelPixmap = line_icon;
};
callbacks {
XmNactivateCallback = procedure proc_pdraw_activate(k_tool_line);
};
};
object
pdraw_tool_view : XmPushButton {
arguments {
XmNlabelType = XmPIXMAP;
XmNlabelPixmap = view_icon;
};
callbacks {
XmNactivateCallback = procedure proc_pdraw_activate(k_tool_view);
};
};
object
pdraw_tool_tristrip : XmPushButton {
arguments {
XmNlabelType = XmPIXMAP;
XmNlabelPixmap = tristrip_icon;
};
callbacks {
XmNactivateCallback = procedure proc_pdraw_activate(k_tool_tristrip);
};
};
!************************************************************************
! how do I get this attached to the right most box???
!************************************************************************
object
pdraw_obj_sep : XmSeparator {
arguments {
XmNbottomAttachment = XmATTACH_FORM ;
XmNtopAttachment = XmATTACH_FORM ;
XmNleftAttachment = XmATTACH_WIDGET ;
XmNleftWidget = pdraw_tool_palette ;
};
};
!************************************************************************
! The PHIGS Workstation drawing Area
!************************************************************************
object
pdraw_pex_area : XmDrawingArea {
arguments {
XmNrightAttachment = XmATTACH_FORM ;
XmNtopAttachment = XmATTACH_FORM ;
XmNbottomAttachment = XmATTACH_FORM ;
XmNleftAttachment = XmATTACH_WIDGET ;
XmNleftWidget = XmSeparator pdraw_obj_sep ;
XmNwidth = 500 ;
XmNheight = 500 ;
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create(0);
XmNresizeCallback = procedure proc_pdraw_resize();
XmNexposeCallback = procedure proc_pdraw_expose();
XmNinputCallback = procedure proc_pdraw_input();
};
};
!************************************************************************
! The Set View Form
!************************************************************************
object
view_set_dialog : XmFormDialog {
arguments {
XmNdialogTitle = "PHIGS Viewing Options";
XmNdialogStyle = XmDIALOG_MODELESS;
XmNheight = 400;
XmNwidth = 360;
! XmNmwmDecorations = 30;
XmNbackground = lightblue;
};
controls {
XmLabel view_ref_pt_label;
XmTextField view_ref_pt_x;
XmTextField view_ref_pt_y;
XmTextField view_ref_pt_z;
XmSeparator view_pl_norm_sep;
XmLabel view_pl_norm_label;
XmTextField view_pl_norm_x;
XmTextField view_pl_norm_y;
XmTextField view_pl_norm_z;
XmSeparator view_up_vect_sep;
XmLabel view_up_vect_label;
XmTextField view_up_vect_x;
XmTextField view_up_vect_y;
XmTextField view_up_vect_z;
XmSeparator proj_ref_pt_sep;
XmLabel proj_ref_pt_label;
XmTextField proj_ref_pt_x;
XmTextField proj_ref_pt_y;
XmTextField proj_ref_pt_z;
XmSeparator view_window_sep;
XmLabel view_window_label;
XmTextField view_window_minx;
XmTextField view_window_maxx;
XmTextField view_window_miny;
XmTextField view_window_maxy;
XmSeparator view_plane_sep;
XmLabel view_plane_label;
XmTextField view_plane_dist;
XmTextField view_plane_back;
XmTextField view_plane_front;
XmSeparator proj_vp_sep;
XmLabel proj_vp_label;
XmTextField proj_vp_minx;
XmTextField proj_vp_maxx;
XmTextField proj_vp_miny;
XmTextField proj_vp_maxy;
XmTextField proj_vp_minz;
XmTextField proj_vp_maxz;
XmSeparator proj_type_sep;
XmLabel proj_type_label;
XmRadioBox proj_type_box;
XmRowColumn button_box;
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create (k_view_set);
};
};
!****************************** View Reference Point ********************
object
view_ref_pt_label : XmLabel {
arguments {
XmNtopAttachment = XmATTACH_FORM ;
XmNleftAttachment = XmATTACH_FORM ;
XmNunitType = XmPIXELS;
XmNlabelString = "View Reference Point";
};
};
object
view_ref_pt_x : XmTextField {
arguments {
XmNtopAttachment = XmATTACH_FORM;
XmNleftAttachment = XmATTACH_WIDGET;
XmNleftWidget = XmLabel view_ref_pt_label;
XmNwidth = 30;
XmNmaxLength = 3;
XmNvalue = "0";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create(k_view_ref_pt_x);
};
};
object
view_ref_pt_y : XmTextField {
arguments {
XmNtopAttachment = XmATTACH_FORM;
XmNleftAttachment = XmATTACH_WIDGET;
XmNleftWidget = XmTextField view_ref_pt_x;
XmNwidth = 30;
XmNmaxLength = 3;
XmNvalue = "0";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create(k_view_ref_pt_y);
};
};
object
view_ref_pt_z : XmTextField {
arguments {
XmNtopAttachment = XmATTACH_FORM;
XmNleftAttachment = XmATTACH_WIDGET;
XmNleftWidget = XmTextField view_ref_pt_y;
XmNwidth = 30;
XmNmaxLength = 3;
XmNvalue = "0";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create(k_view_ref_pt_z);
};
};
!****************************** View Plane Normal ********************
object
view_pl_norm_sep : XmSeparator {
arguments {
XmNleftAttachment = XmATTACH_FORM;
XmNrightAttachment = XmATTACH_FORM;
XmNtopAttachment = XmATTACH_WIDGET;
XmNtopWidget = XmTextField view_ref_pt_y;
};
};
object
view_pl_norm_label : XmLabel {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator view_pl_norm_sep;
XmNleftAttachment = XmATTACH_FORM ;
XmNlabelString = "View Plane Normal";
};
};
object
view_pl_norm_x : XmTextField {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator view_pl_norm_sep;
XmNleftAttachment = XmATTACH_WIDGET;
XmNleftWidget = XmLabel view_pl_norm_label;
XmNwidth = 80;
XmNmaxLength = 8;
XmNvalue = "0";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create(k_view_pl_norm_x);
};
};
object
view_pl_norm_y : XmTextField {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator view_pl_norm_sep;
XmNleftAttachment = XmATTACH_WIDGET;
XmNleftWidget = XmTextField view_pl_norm_x;
XmNwidth = 80;
XmNmaxLength = 8;
XmNvalue = "0";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create(k_view_pl_norm_y);
};
};
object
view_pl_norm_z : XmTextField {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator view_pl_norm_sep;
XmNleftAttachment = XmATTACH_WIDGET;
XmNleftWidget = XmTextField view_pl_norm_y;
XmNwidth = 80;
XmNmaxLength = 8;
XmNvalue = "1";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create(k_view_pl_norm_z);
};
};
!****************************** View Up Vector ********************
object
view_up_vect_sep : XmSeparator {
arguments {
XmNleftAttachment = XmATTACH_FORM;
XmNrightAttachment = XmATTACH_FORM;
XmNtopAttachment = XmATTACH_WIDGET;
XmNtopWidget = XmTextField view_pl_norm_y;
};
};
object
view_up_vect_label : XmLabel {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator view_up_vect_sep;
XmNleftAttachment = XmATTACH_FORM ;
XmNlabelString = "View Up Vector";
};
};
object
view_up_vect_x : XmTextField {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator view_up_vect_sep;
XmNleftAttachment = XmATTACH_WIDGET;
XmNleftWidget = XmLabel view_up_vect_label;
XmNwidth = 80;
XmNmaxLength = 8;
XmNvalue = "0";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create(k_view_up_vect_x);
};
};
object
view_up_vect_y : XmTextField {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator view_up_vect_sep;
XmNleftAttachment = XmATTACH_WIDGET;
XmNleftWidget = XmTextField view_up_vect_x;
XmNwidth = 80;
XmNmaxLength = 8;
XmNvalue = "1";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create(k_view_up_vect_y);
};
};
object
view_up_vect_z : XmTextField {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator view_up_vect_sep;
XmNleftAttachment = XmATTACH_WIDGET;
XmNleftWidget = XmTextField view_up_vect_y;
XmNwidth = 80;
XmNmaxLength = 8;
XmNvalue = "0";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create(k_view_up_vect_z);
};
};
!****************************** Projection Reference Point *******************
object
proj_ref_pt_sep : XmSeparator {
arguments {
XmNleftAttachment = XmATTACH_FORM;
XmNrightAttachment = XmATTACH_FORM;
XmNtopAttachment = XmATTACH_WIDGET;
XmNtopWidget = XmTextField view_up_vect_y;
};
};
object
proj_ref_pt_label : XmLabel {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator proj_ref_pt_sep;
XmNleftAttachment = XmATTACH_FORM ;
XmNlabelString = "Projection Reference Point";
};
};
object
proj_ref_pt_x : XmTextField {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator proj_ref_pt_sep;
XmNleftAttachment = XmATTACH_WIDGET;
XmNleftWidget = XmLabel proj_ref_pt_label;
XmNwidth = 30;
XmNmaxLength = 3;
XmNvalue = "0";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create(k_proj_ref_pt_x);
};
};
object
proj_ref_pt_y : XmTextField {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator proj_ref_pt_sep;
XmNleftAttachment = XmATTACH_WIDGET;
XmNleftWidget = XmTextField proj_ref_pt_x;
XmNwidth = 30;
XmNmaxLength = 3;
XmNvalue = "0";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create(k_proj_ref_pt_y);
};
};
object
proj_ref_pt_z : XmTextField {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator proj_ref_pt_sep;
XmNleftAttachment = XmATTACH_WIDGET;
XmNleftWidget = XmTextField proj_ref_pt_y;
XmNwidth = 30;
XmNmaxLength = 3;
XmNvalue = "10";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create(k_proj_ref_pt_z);
};
};
!****************************** View Window *******************
object
view_window_sep : XmSeparator {
arguments {
XmNleftAttachment = XmATTACH_FORM;
XmNrightAttachment = XmATTACH_FORM;
XmNtopAttachment = XmATTACH_WIDGET;
XmNtopWidget = XmTextField proj_ref_pt_y;
};
};
object
view_window_label : XmLabel {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator view_window_sep;
XmNleftAttachment = XmATTACH_FORM ;
XmNlabelString = "View Window - minx, maxx, miny, maxy";
};
};
object
view_window_minx : XmTextField {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator view_window_sep;
XmNleftAttachment = XmATTACH_WIDGET;
XmNleftWidget = XmLabel view_window_label;
XmNwidth = 30;
XmNmaxLength = 3;
XmNvalue = "-3";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create(k_view_window_minx);
};
};
object
view_window_maxx : XmTextField {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator view_window_sep;
XmNleftAttachment = XmATTACH_WIDGET;
XmNleftWidget = XmTextField view_window_minx;
XmNwidth = 30;
XmNmaxLength = 3;
XmNvalue = "3";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create(k_view_window_maxx);
};
};
object
view_window_miny : XmTextField {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator view_window_sep;
XmNleftAttachment = XmATTACH_WIDGET;
XmNleftWidget = XmTextField view_window_maxx;
XmNwidth = 30;
XmNmaxLength = 3;
XmNvalue = "-3";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create(k_view_window_miny);
};
};
object
view_window_maxy : XmTextField {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator view_window_sep;
XmNleftAttachment = XmATTACH_WIDGET;
XmNleftWidget = XmTextField view_window_miny;
XmNwidth = 30;
XmNmaxLength = 3;
XmNvalue = "3";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create(k_view_window_maxy);
};
};
!****************************** View Plane Distance, Back & Front *************
object
view_plane_sep : XmSeparator {
arguments {
XmNleftAttachment = XmATTACH_FORM;
XmNrightAttachment = XmATTACH_FORM;
XmNtopAttachment = XmATTACH_WIDGET;
XmNtopWidget = XmTextField view_window_maxy;
};
};
object
view_plane_label : XmLabel {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator view_plane_sep;
XmNleftAttachment = XmATTACH_FORM ;
XmNlabelString = "View Plane, Back & Front";
};
};
object
view_plane_dist : XmTextField {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator view_plane_sep;
XmNleftAttachment = XmATTACH_WIDGET;
XmNleftWidget = XmLabel view_plane_label;
XmNwidth = 30;
XmNmaxLength = 3;
XmNvalue = "0";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create(k_view_plane_dist);
};
};
object
view_plane_back : XmTextField {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator view_plane_sep;
XmNleftAttachment = XmATTACH_WIDGET;
XmNleftWidget = XmTextField view_plane_dist;
XmNwidth = 30;
XmNmaxLength = 3;
XmNvalue = "-5";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create(k_view_plane_back);
};
};
object
view_plane_front : XmTextField {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator view_plane_sep;
XmNleftAttachment = XmATTACH_WIDGET;
XmNleftWidget = XmTextField view_plane_back;
XmNwidth = 30;
XmNmaxLength = 3;
XmNvalue = "5";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create(k_view_plane_front);
};
};
!****************************** Projection Viewport *******************
object
proj_vp_sep : XmSeparator {
arguments {
XmNleftAttachment = XmATTACH_FORM;
XmNrightAttachment = XmATTACH_FORM;
XmNtopAttachment = XmATTACH_WIDGET;
XmNtopWidget = XmTextField view_plane_front;
};
};
object
proj_vp_label : XmLabel {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator proj_vp_sep;
XmNleftAttachment = XmATTACH_FORM ;
XmNlabelString = "Projection Viewport";
};
};
object
proj_vp_minx : XmTextField {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator proj_vp_sep;
XmNleftAttachment = XmATTACH_WIDGET;
XmNleftWidget = XmLabel proj_vp_label;
XmNwidth = 30;
XmNmaxLength = 3;
XmNvalue = "0";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create(k_proj_vp_minx);
};
};
object
proj_vp_maxx : XmTextField {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator proj_vp_sep;
XmNleftAttachment = XmATTACH_WIDGET;
XmNleftWidget = XmTextField proj_vp_minx;
XmNwidth = 30;
XmNmaxLength = 3;
XmNvalue = "1";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create(k_proj_vp_maxx);
};
};
object
proj_vp_miny : XmTextField {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator proj_vp_sep;
XmNleftAttachment = XmATTACH_WIDGET;
XmNleftWidget = XmTextField proj_vp_maxx;
XmNwidth = 30;
XmNmaxLength = 3;
XmNvalue = "0";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create(k_proj_vp_miny);
};
};
object
proj_vp_maxy : XmTextField {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator proj_vp_sep;
XmNleftAttachment = XmATTACH_WIDGET;
XmNleftWidget = XmTextField proj_vp_miny;
XmNwidth = 30;
XmNmaxLength = 3;
XmNvalue = "1";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create(k_proj_vp_maxy);
};
};
object
proj_vp_minz : XmTextField {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator proj_vp_sep;
XmNleftAttachment = XmATTACH_WIDGET;
XmNleftWidget = XmTextField proj_vp_maxy;
XmNwidth = 30;
XmNmaxLength = 3;
XmNvalue = "0";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create(k_proj_vp_minz);
};
};
object
proj_vp_maxz : XmTextField {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator proj_vp_sep;
XmNleftAttachment = XmATTACH_WIDGET;
XmNleftWidget = XmTextField proj_vp_minz;
XmNwidth = 30;
XmNmaxLength = 3;
XmNvalue = "1";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create(k_proj_vp_maxz);
};
};
!********************************* Projection type
object
proj_type_sep : XmSeparator {
arguments {
XmNleftAttachment = XmATTACH_FORM;
XmNrightAttachment = XmATTACH_FORM;
XmNtopAttachment = XmATTACH_WIDGET;
XmNtopWidget = XmTextField proj_vp_maxz;
};
};
object
proj_type_label : XmLabel {
arguments {
XmNleftAttachment = XmATTACH_FORM;
XmNtopAttachment = XmATTACH_WIDGET;
XmNtopWidget = XmSeparator proj_type_sep;
XmNlabelString = "Projection Type";
};
};
object
proj_type_box : XmRadioBox {
arguments {
XmNorientation = XmHORIZONTAL;
XmNleftAttachment = XmATTACH_WIDGET;
XmNleftWidget = XmLabel proj_type_label;
XmNtopAttachment = XmATTACH_WIDGET;
XmNtopWidget = XmSeparator proj_type_sep;
XmNborderWidth = 0;
XmNisHomogeneous = false;
};
controls {
XmToggleButton proj_type_para;
XmToggleButton proj_type_persp;
};
};
object
proj_type_para : XmToggleButton {
arguments {
XmNlabelString = "Parallel";
XmNset = on; ! A radio box requires one toggle to be set.
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create (k_proj_type_para);
};
};
object
proj_type_persp : XmToggleButton {
arguments {
XmNlabelString = "Perspective";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create (k_proj_type_persp);
};
};
!***************************** Bottom Buttons ******************************
object
button_box : XmRowColumn {
arguments {
XmNorientation = XmHORIZONTAL;
XmNleftAttachment = XmATTACH_FORM;
XmNrightAttachment = XmATTACH_FORM;
XmNbottomAttachment = XmATTACH_FORM;
XmNborderWidth = 2;
XmNentryBorder = 3;
};
controls {
XmPushButton apply_button;
XmPushButton dismiss_button;
XmPushButton can_button;
};
};
object
apply_button : XmPushButton widget { ! The menu positions the buttons
arguments { ! automatically.
XmNlabelString = "apply";
XmNforeground = yellow;
XmNbackground = red;
XmNhighlightColor = magenta;
XmNborderColor = green;
XmNaccelerator = "Ctrl <key>a";
XmNacceleratorText = "^a";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create (k_apply_vs);
XmNactivateCallback = procedure proc_pdraw_activate (k_apply_vs);
};
};
object
can_button : XmPushButton widget {
arguments {
XmNlabelString = "reset";
XmNforeground = yellow;
XmNbackground = red;
XmNhighlightColor = magenta;
XmNborderColor = green;
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create (k_reset_vs);
XmNactivateCallback = procedure proc_pdraw_activate (k_reset_vs);
};
};
object
dismiss_button : XmPushButton widget {
arguments {
XmNlabelString = "dismiss";
XmNforeground = yellow;
XmNbackground = red;
XmNhighlightColor = magenta;
XmNborderColor = green;
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create (k_dismiss_vs);
XmNactivateCallback = procedure proc_pdraw_activate (k_dismiss_vs);
};
};
!************************************************************************
! end of Set View Form
!************************************************************************
!************************************************************************
! The Light Form
!************************************************************************
object
light_dialog : XmFormDialog {
arguments {
XmNdialogTitle = "PHIGS Light Options";
XmNdialogStyle = XmDIALOG_MODELESS;
XmNheight = 400;
XmNwidth = 360;
! XmNmwmDecorations = 30;
XmNbackground = lightblue;
};
controls {
XmLabel light_toggles_label;
XmRowColumn light_toggles_box;
XmSeparator light_radio_sep;
XmLabel light_radio_label;
XmRadioBox light_radio_box;
XmSeparator light_type_sep;
XmLabel light_type_label;
XmRadioBox light_type_box;
XmSeparator light_pos_sep;
XmLabel light_pos_label;
XmTextField light_pos_x;
XmTextField light_pos_y;
XmTextField light_pos_z;
XmSeparator light_color_sep;
XmLabel light_color_label;
XmTextField light_color_red;
XmTextField light_color_green;
XmTextField light_color_blue;
XmSeparator light_direction_sep;
XmLabel light_direction_label;
XmTextField light_direction_x;
XmTextField light_direction_y;
XmTextField light_direction_z;
XmSeparator light_coeff_sep;
XmLabel light_coeff_label;
XmTextField light_coeff_const;
XmTextField light_coeff_dist;
XmSeparator light_conc_exp_sep;
XmLabel light_conc_exp_label;
XmTextField light_conc_exp;
XmSeparator light_spread_angle_sep;
XmLabel light_spread_angle_label;
XmTextField light_spread_angle;
XmRowColumn light_button_box;
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create (k_light);
};
};
!****************************** Light On/Off Toggles ********************
object
light_toggles_label : XmLabel {
arguments {
XmNtopAttachment = XmATTACH_FORM ;
XmNleftAttachment = XmATTACH_FORM ;
XmNlabelString = "THIS FORM DOES NOTHING ! ! !";
};
};
object
light_toggles_box : XmRowColumn {
arguments {
XmNleftAttachment = XmATTACH_FORM ;
XmNrightAttachment = XmATTACH_FORM ;
XmNtopAttachment = XmATTACH_WIDGET;
XmNtopWidget = XmLabel light_toggles_label;
XmNorientation = XmHORIZONTAL;
XmNbackground = lightblue;
XmNborderWidth = 0;
};
controls {
XmToggleButton light_on1;
XmToggleButton light_on2;
XmToggleButton light_on3;
XmToggleButton light_on4;
XmToggleButton light_on5;
XmToggleButton light_on6;
XmToggleButton light_on7;
XmToggleButton light_on8;
};
};
object
light_on1 : XmToggleButton {
arguments {
XmNlabelString = "1";
};
callbacks {
XmNvalueChangedCallback = procedure proc_pdraw_activate (k_light_on1);
};
};
object
light_on2 : XmToggleButton {
arguments {
XmNlabelString = "2";
};
callbacks {
XmNvalueChangedCallback = procedure proc_pdraw_activate (k_light_on2);
};
};
object
light_on3 : XmToggleButton {
arguments {
XmNlabelString = "3";
};
callbacks {
XmNvalueChangedCallback = procedure proc_pdraw_activate (k_light_on3);
};
};
object
light_on4 : XmToggleButton {
arguments {
XmNlabelString = "4";
};
callbacks {
XmNvalueChangedCallback = procedure proc_pdraw_activate (k_light_on4);
};
};
object
light_on5 : XmToggleButton {
arguments {
XmNlabelString = "5";
};
callbacks {
XmNvalueChangedCallback = procedure proc_pdraw_activate (k_light_on5);
};
};
object
light_on6 : XmToggleButton {
arguments {
XmNlabelString = "6";
};
callbacks {
XmNvalueChangedCallback = procedure proc_pdraw_activate (k_light_on6);
};
};
object
light_on7 : XmToggleButton {
arguments {
XmNlabelString = "7";
};
callbacks {
XmNvalueChangedCallback = procedure proc_pdraw_activate (k_light_on7);
};
};
object
light_on8 : XmToggleButton {
arguments {
XmNlabelString = "8";
};
callbacks {
XmNvalueChangedCallback = procedure proc_pdraw_activate (k_light_on8);
};
};
!****************************** Light Radio Toggles ********************
object
light_radio_sep : XmSeparator {
arguments {
XmNleftAttachment = XmATTACH_FORM;
XmNrightAttachment = XmATTACH_FORM;
XmNtopAttachment = XmATTACH_WIDGET;
XmNtopWidget = XmRowColumn light_toggles_box;
};
};
object
light_radio_label : XmLabel {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator light_radio_sep;
XmNleftAttachment = XmATTACH_FORM ;
XmNrightAttachment = XmATTACH_FORM ;
XmNlabelString = "Light Edit Selector";
};
};
object
light_radio_box : XmRadioBox {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmLabel light_radio_label;
XmNleftAttachment = XmATTACH_FORM ;
XmNrightAttachment = XmATTACH_FORM ;
XmNorientation = XmHORIZONTAL;
XmNborderWidth = 1;
};
controls {
XmToggleButton light_edit1;
XmToggleButton light_edit2;
XmToggleButton light_edit3;
XmToggleButton light_edit4;
XmToggleButton light_edit5;
XmToggleButton light_edit6;
XmToggleButton light_edit7;
XmToggleButton light_edit8;
};
};
object
light_edit1 : XmToggleButton {
arguments {
XmNlabelString = "1";
};
callbacks {
XmNvalueChangedCallback = procedure proc_pdraw_activate (k_light_edit1);
};
};
object
light_edit2 : XmToggleButton {
arguments {
XmNlabelString = "2";
};
callbacks {
XmNvalueChangedCallback = procedure proc_pdraw_activate (k_light_edit2);
};
};
object
light_edit3 : XmToggleButton {
arguments {
XmNlabelString = "3";
};
callbacks {
XmNvalueChangedCallback = procedure proc_pdraw_activate (k_light_edit3);
};
};
object
light_edit4 : XmToggleButton {
arguments {
XmNlabelString = "4";
};
callbacks {
XmNvalueChangedCallback = procedure proc_pdraw_activate (k_light_edit4);
};
};
object
light_edit5 : XmToggleButton {
arguments {
XmNlabelString = "5";
};
callbacks {
XmNvalueChangedCallback = procedure proc_pdraw_activate (k_light_edit5);
};
};
object
light_edit6 : XmToggleButton {
arguments {
XmNlabelString = "6";
};
callbacks {
XmNvalueChangedCallback = procedure proc_pdraw_activate (k_light_edit6);
};
};
object
light_edit7 : XmToggleButton {
arguments {
XmNlabelString = "7";
};
callbacks {
XmNvalueChangedCallback = procedure proc_pdraw_activate (k_light_edit7);
};
};
object
light_edit8 : XmToggleButton {
arguments {
XmNlabelString = "8";
};
callbacks {
XmNvalueChangedCallback = procedure proc_pdraw_activate (k_light_edit8);
};
};
!****************************** Light Type Radio ********************
object
light_type_sep : XmSeparator {
arguments {
XmNleftAttachment = XmATTACH_FORM;
XmNrightAttachment = XmATTACH_FORM;
XmNtopAttachment = XmATTACH_WIDGET;
XmNtopWidget = XmRadioBox light_radio_box;
};
};
object
light_type_label : XmLabel {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator light_type_sep;
XmNleftAttachment = XmATTACH_FORM ;
XmNrightAttachment = XmATTACH_FORM;
XmNlabelString = "Light Type";
};
};
object
light_type_box : XmRadioBox {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmLabel light_type_label;
XmNleftAttachment = XmATTACH_FORM;
XmNrightAttachment = XmATTACH_FORM;
XmNorientation = XmHORIZONTAL;
XmNborderWidth = 1;
};
controls {
XmToggleButton light_type_ambient;
XmToggleButton light_type_directional;
XmToggleButton light_type_positional;
XmToggleButton light_type_spot;
};
};
object
light_type_ambient : XmToggleButton {
arguments {
XmNlabelString = "Ambient";
};
callbacks {
XmNvalueChangedCallback = procedure proc_pdraw_activate (k_light_type_ambient);
};
};
object
light_type_directional : XmToggleButton {
arguments {
XmNlabelString = "Directional";
};
callbacks {
XmNvalueChangedCallback = procedure proc_pdraw_activate (k_light_type_directional);
};
};
object
light_type_positional : XmToggleButton {
arguments {
XmNlabelString = "Positional";
};
callbacks {
XmNvalueChangedCallback = procedure proc_pdraw_activate (k_light_type_positional);
};
};
object
light_type_spot : XmToggleButton {
arguments {
XmNlabelString = "Spot";
};
callbacks {
XmNvalueChangedCallback = procedure proc_pdraw_activate (k_light_type_spot);
};
};
!*************************************************************** light pos *
object
light_pos_sep : XmSeparator {
arguments {
XmNleftAttachment = XmATTACH_FORM;
XmNrightAttachment = XmATTACH_FORM;
XmNtopAttachment = XmATTACH_WIDGET;
XmNtopWidget = XmRadioBox light_type_box;
};
};
object
light_pos_label : XmLabel {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator light_pos_sep;
XmNrightAttachment = XmATTACH_FORM ;
XmNleftAttachment = XmATTACH_FORM ;
XmNlabelString = "Light Position";
};
};
object
light_pos_x : XmTextField {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator light_pos_sep;
XmNleftAttachment = XmATTACH_WIDGET;
XmNleftWidget = XmLabel light_pos_label;
XmNwidth = 30;
XmNmaxLength = 3;
XmNvalue = "0";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create(k_light_pos_x);
};
};
object
light_pos_y : XmTextField {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator light_pos_sep;
XmNleftAttachment = XmATTACH_WIDGET;
XmNleftWidget = XmTextField light_pos_x;
XmNwidth = 30;
XmNmaxLength = 3;
XmNvalue = "1";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create(k_light_pos_y);
};
};
object
light_pos_z : XmTextField {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator light_pos_sep;
XmNleftAttachment = XmATTACH_WIDGET;
XmNleftWidget = XmTextField light_pos_y;
XmNwidth = 30;
XmNmaxLength = 3;
XmNvalue = "0";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create(k_light_pos_z);
};
};
!****************************** light color ********************************
object
light_color_sep : XmSeparator {
arguments {
XmNleftAttachment = XmATTACH_FORM;
XmNrightAttachment = XmATTACH_FORM;
XmNtopAttachment = XmATTACH_WIDGET;
XmNtopWidget = XmTextField light_pos_z;
};
};
object
light_color_label : XmLabel {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator light_color_sep;
XmNleftAttachment = XmATTACH_FORM ;
XmNlabelString = "Light Color - red, green, blue";
};
};
object
light_color_red : XmTextField {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator light_color_sep;
XmNleftAttachment = XmATTACH_WIDGET;
XmNleftWidget = XmLabel light_color_label;
XmNwidth = 30;
XmNmaxLength = 3;
XmNvalue = "-1";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create(k_light_color_red);
};
};
object
light_color_green : XmTextField {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator light_color_sep;
XmNleftAttachment = XmATTACH_WIDGET;
XmNleftWidget = XmTextField light_color_red;
XmNwidth = 30;
XmNmaxLength = 3;
XmNvalue = "1";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create(k_light_color_green);
};
};
object
light_color_blue : XmTextField {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator light_color_sep;
XmNleftAttachment = XmATTACH_WIDGET;
XmNleftWidget = XmTextField light_color_green;
XmNwidth = 30;
XmNmaxLength = 3;
XmNvalue = "-1";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create(k_light_color_blue);
};
};
!****************************** light direction *************
object
light_direction_sep : XmSeparator {
arguments {
XmNleftAttachment = XmATTACH_FORM;
XmNrightAttachment = XmATTACH_FORM;
XmNtopAttachment = XmATTACH_WIDGET;
XmNtopWidget = XmTextField light_color_blue;
};
};
object
light_direction_label : XmLabel {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator light_direction_sep;
XmNleftAttachment = XmATTACH_FORM ;
XmNlabelString = "View Direction, Back & Front";
};
};
object
light_direction_x : XmTextField {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator light_direction_sep;
XmNleftAttachment = XmATTACH_WIDGET;
XmNleftWidget = XmLabel light_direction_label;
XmNwidth = 30;
XmNmaxLength = 3;
XmNvalue = "0";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create(k_light_direction_x);
};
};
object
light_direction_y : XmTextField {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator light_direction_sep;
XmNleftAttachment = XmATTACH_WIDGET;
XmNleftWidget = XmTextField light_direction_x;
XmNwidth = 30;
XmNmaxLength = 3;
XmNvalue = "0";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create(k_light_direction_y);
};
};
object
light_direction_z : XmTextField {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator light_direction_sep;
XmNleftAttachment = XmATTACH_WIDGET;
XmNleftWidget = XmTextField light_direction_y;
XmNwidth = 30;
XmNmaxLength = 3;
XmNvalue = "-1";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create(k_light_direction_z);
};
};
!****************************** light attenuation coefficients *************
object
light_coeff_sep : XmSeparator {
arguments {
XmNleftAttachment = XmATTACH_FORM;
XmNrightAttachment = XmATTACH_FORM;
XmNtopAttachment = XmATTACH_WIDGET;
XmNtopWidget = XmTextField light_direction_z;
};
};
object
light_coeff_label : XmLabel {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator light_coeff_sep;
XmNleftAttachment = XmATTACH_FORM ;
XmNlabelString = "Light Attenuation Coeffients, Const & Dist";
};
};
object
light_coeff_const : XmTextField {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator light_coeff_sep;
XmNleftAttachment = XmATTACH_WIDGET;
XmNleftWidget = XmLabel light_coeff_label;
XmNwidth = 30;
XmNmaxLength = 5;
XmNvalue = "0";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create(k_light_coeff_const);
};
};
object
light_coeff_dist : XmTextField {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator light_coeff_sep;
XmNleftAttachment = XmATTACH_WIDGET;
XmNleftWidget = XmTextField light_coeff_const;
XmNwidth = 30;
XmNmaxLength = 5;
XmNvalue = "0";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create(k_light_coeff_dist);
};
};
!****************************** light concentration exponent *************
object
light_conc_exp_sep : XmSeparator {
arguments {
XmNleftAttachment = XmATTACH_FORM;
XmNrightAttachment = XmATTACH_FORM;
XmNtopAttachment = XmATTACH_WIDGET;
XmNtopWidget = XmTextField light_direction_z;
};
};
object
light_conc_exp_label : XmLabel {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator light_conc_exp_sep;
XmNleftAttachment = XmATTACH_FORM ;
XmNlabelString = "Concentration Exponent";
};
};
object
light_conc_exp : XmTextField {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator light_conc_exp_sep;
XmNleftAttachment = XmATTACH_WIDGET;
XmNleftWidget = XmLabel light_conc_exp_label;
XmNwidth = 30;
XmNmaxLength = 5;
XmNvalue = "0";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create(k_light_conc_exp);
};
};
!****************************** light spread angle *************
object
light_spread_angle_sep : XmSeparator {
arguments {
XmNleftAttachment = XmATTACH_FORM;
XmNrightAttachment = XmATTACH_FORM;
XmNtopAttachment = XmATTACH_WIDGET;
XmNtopWidget = XmTextField light_conc_exp;
};
};
object
light_spread_angle_label : XmLabel {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator light_spread_angle_sep;
XmNleftAttachment = XmATTACH_FORM ;
XmNlabelString = "Spread Angle";
};
};
object
light_spread_angle : XmTextField {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator light_spread_angle_sep;
XmNleftAttachment = XmATTACH_WIDGET;
XmNleftWidget = XmLabel light_spread_angle_label;
XmNwidth = 30;
XmNmaxLength = 5;
XmNvalue = "0";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create(k_light_spread_angle);
};
};
!***************************** Bottom Buttons ******************************
object
light_button_box : XmRowColumn {
arguments {
XmNorientation = XmHORIZONTAL;
XmNleftAttachment = XmATTACH_FORM;
XmNrightAttachment = XmATTACH_FORM;
XmNbottomAttachment = XmATTACH_FORM;
XmNborderWidth = 2;
XmNentryBorder = 3;
};
controls {
XmPushButton light_apply_button;
XmPushButton light_dismiss_button;
XmPushButton light_can_button;
};
};
object
light_apply_button : XmPushButton widget { ! The menu positions the buttons
arguments { ! automatically.
XmNlabelString = "apply";
XmNforeground = yellow;
XmNbackground = red;
XmNhighlightColor = magenta;
XmNborderColor = green;
XmNaccelerator = "Ctrl <key>a";
XmNacceleratorText = " ^a";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create (k_apply_light);
XmNactivateCallback = procedure proc_pdraw_activate (k_apply_light);
};
};
object
light_can_button : XmPushButton widget {
arguments {
XmNlabelString = "reset";
XmNforeground = yellow;
XmNbackground = red;
XmNhighlightColor = magenta;
XmNborderColor = green;
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create (k_reset_light);
XmNactivateCallback = procedure proc_pdraw_activate (k_reset_light);
};
};
object
light_dismiss_button : XmPushButton widget {
arguments {
XmNlabelString = "dismiss";
XmNforeground = yellow;
XmNbackground = red;
XmNhighlightColor = magenta;
XmNborderColor = green;
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create (k_dismiss_light);
XmNactivateCallback = procedure proc_pdraw_activate (k_dismiss_light);
};
};
!************************************************************************
! end of Lights Form
!************************************************************************
!************************************************************************
! The File Form
!************************************************************************
object
file_dialog : XmFormDialog {
arguments {
XmNdialogTitle = "File Selection";
XmNdialogStyle = XmDIALOG_MODELESS;
XmNheight = 400;
XmNwidth = 360;
XmNbackground = lightblue;
};
controls {
XmFileSelectionBox file_selector;
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create (k_file);
};
};
object
file_selector : XmFileSelectionBox {
arguments {
XmNbackground = lightblue;
};
callbacks {
XmNokCallback = procedure proc_pdraw_file();
XmNcancelCallback = procedure proc_pdraw_file();
XmNhelpCallback = procedure proc_pdraw_activate(k_file_help);
};
};
!************************************************************************
! The Surface Form
!************************************************************************
object
surface_dialog : XmFormDialog {
arguments {
XmNdialogTitle = "PHIGS Surface Options";
XmNdialogStyle = XmDIALOG_MODELESS;
XmNheight = 500;
XmNwidth = 360;
! XmNmwmDecorations = 30;
XmNbackground = lightblue;
};
controls {
XmSeparator surface_style_sep;
XmLabel surface_style_label;
XmRadioBox surface_style_box;
XmSeparator surface_shade_sep;
XmLabel surface_shade_label;
XmRadioBox surface_shade_box;
XmSeparator surface_refl_sep;
XmLabel surface_refl_label;
XmSeparator surface_ambient_sep;
XmLabel surface_ambient_label;
XmScale surface_refl_ambient;
XmLabel surface_diffuse_label;
XmScale surface_refl_diffuse;
XmLabel surface_specular_label;
XmScale surface_refl_specular;
XmSeparator surface_specular_sep;
XmLabel surface_specular_dummy;
XmLabel surface_specexp_label;
XmScale surface_refl_specexp;
XmLabel surface_transparency_label;
XmScale surface_refl_transparency;
XmRowColumn surface_button_box;
XmSeparator surface_cull_sep;
XmLabel surface_cull_label;
XmRadioBox surface_cull_box;
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create (k_surface);
};
};
!****************************** Surface Style
object
surface_style_sep : XmSeparator {
arguments {
XmNleftAttachment = XmATTACH_FORM;
XmNrightAttachment = XmATTACH_FORM;
XmNtopAttachment = XmATTACH_FORM;
};
};
object
surface_style_label : XmLabel {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator surface_style_sep;
XmNleftAttachment = XmATTACH_FORM ;
XmNrightAttachment = XmATTACH_FORM ;
XmNlabelString = "Surface Style";
};
};
object
surface_style_box : XmRadioBox {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmLabel surface_style_label;
XmNleftAttachment = XmATTACH_FORM ;
XmNrightAttachment = XmATTACH_FORM ;
XmNorientation = XmHORIZONTAL;
XmNborderWidth = 1;
};
controls {
XmToggleButton surface_edit1;
XmToggleButton surface_edit2;
XmToggleButton surface_edit3;
};
};
object
surface_edit1 : XmToggleButton {
arguments { XmNlabelString = "Hollow";
XmNset = on; ! A radio box requires one toggle to be set.
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create (k_sstyle_hollow);
};
};
object
surface_edit2 : XmToggleButton {
arguments {
XmNlabelString = "Solid";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create (k_sstyle_solid);
};
};
object
surface_edit3 : XmToggleButton {
arguments {
XmNlabelString = "Empty";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create (k_sstyle_empty);
};
};
!****************************** surface shade Radio ********************
object
surface_shade_sep : XmSeparator {
arguments {
XmNleftAttachment = XmATTACH_FORM;
XmNrightAttachment = XmATTACH_FORM;
XmNtopAttachment = XmATTACH_WIDGET;
XmNtopWidget = XmRadioBox surface_style_box;
};
};
object
surface_shade_label : XmLabel {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator surface_shade_sep;
XmNleftAttachment = XmATTACH_FORM ;
XmNrightAttachment = XmATTACH_FORM;
XmNlabelString = "Shading / Interpolation Method";
};
};
object
surface_shade_box : XmRadioBox {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmLabel surface_shade_label;
XmNleftAttachment = XmATTACH_FORM;
XmNrightAttachment = XmATTACH_FORM;
XmNorientation = XmHORIZONTAL;
XmNborderWidth = 1;
};
controls {
XmToggleButton surface_shade_flat;
XmToggleButton surface_shade_gouraud;
XmToggleButton surface_shade_dot;
XmToggleButton surface_shade_phong;
};
};
object
surface_shade_flat : XmToggleButton {
arguments {
XmNlabelString = "Flat";
XmNset = on; ! A radio box requires one toggle to be set.
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create(k_sshade_flat);
};
};
object
surface_shade_gouraud : XmToggleButton {
arguments {
XmNlabelString = "Gouraud";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create(k_sshade_gouraud);
};
};
object
surface_shade_dot : XmToggleButton {
arguments {
XmNlabelString = "Dot";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create(k_sshade_dot);
};
};
object
surface_shade_phong : XmToggleButton {
arguments {
XmNlabelString = "Phong";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create (k_sshade_phong);
};
};
!*************************************************************** surface refl *
object
surface_refl_sep : XmSeparator {
arguments {
XmNleftAttachment = XmATTACH_FORM;
XmNrightAttachment = XmATTACH_FORM;
XmNtopAttachment = XmATTACH_WIDGET;
XmNtopWidget = XmRadioBox surface_shade_box;
};
};
object
surface_refl_label : XmLabel {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator surface_refl_sep;
XmNrightAttachment = XmATTACH_FORM ;
XmNleftAttachment = XmATTACH_FORM ;
XmNlabelString = "Surface Reflections Attributes";
};
};
object
surface_ambient_sep : XmSeparator {
arguments {
XmNleftAttachment = XmATTACH_FORM;
XmNrightAttachment = XmATTACH_FORM;
XmNtopAttachment = XmATTACH_WIDGET;
XmNtopWidget = XmLabel surface_refl_label;
};
};
object
surface_ambient_label : XmLabel {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator surface_ambient_sep;
XmNleftAttachment = XmATTACH_FORM ;
XmNlabelString = "Ambient Reflection";
};
};
object
surface_refl_ambient : XmScale {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmLabel surface_ambient_label;
XmNleftAttachment = XmATTACH_FORM;
XmNrightAttachment = XmATTACH_FORM;
XmNorientation = XmHORIZONTAL;
XmNminimum = 000;
XmNmaximum = 100;
XmNvalue = 30;
XmNshowValue = on;
XmNdecimalPoints = 2;
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create(k_surface_refl_ambient);
};
};
object
surface_diffuse_label : XmLabel {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmScale surface_refl_ambient;
XmNleftAttachment = XmATTACH_FORM ;
XmNlabelString = "Diffuse Reflection";
};
};
object
surface_refl_diffuse : XmScale {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmLabel surface_diffuse_label;
XmNleftAttachment = XmATTACH_FORM;
XmNrightAttachment = XmATTACH_FORM;
XmNorientation = XmHORIZONTAL;
XmNminimum = 000;
XmNmaximum = 100;
XmNvalue = 30;
XmNshowValue = on;
XmNdecimalPoints = 2;
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create(k_surface_refl_diffuse);
};
};
object
surface_specular_label : XmLabel {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmScale surface_refl_diffuse;
XmNleftAttachment = XmATTACH_FORM ;
XmNlabelString = "Specular Reflection";
};
};
object
surface_refl_specular : XmScale {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmLabel surface_specular_label;
XmNleftAttachment = XmATTACH_FORM;
XmNrightAttachment = XmATTACH_FORM;
XmNorientation = XmHORIZONTAL;
XmNminimum = 000;
XmNmaximum = 100;
XmNvalue = 30;
XmNshowValue = on;
XmNdecimalPoints = 2;
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create(k_surface_refl_specular);
};
};
object
surface_specular_sep : XmSeparator {
arguments {
XmNleftAttachment = XmATTACH_FORM;
XmNrightAttachment = XmATTACH_FORM;
XmNtopAttachment = XmATTACH_WIDGET;
XmNtopWidget = XmScale surface_refl_specular;
};
};
object
surface_specular_dummy : XmLabel {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator surface_specular_sep;
XmNleftAttachment = XmATTACH_FORM ;
XmNlabelString = "Specular Color is white...come and change it";
};
};
object
surface_specexp_label : XmLabel {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmLabel surface_specular_dummy;
XmNleftAttachment = XmATTACH_FORM ;
XmNlabelString = "Specular Exponent";
};
};
object
surface_refl_specexp : XmScale {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmLabel surface_specexp_label;
XmNleftAttachment = XmATTACH_FORM;
XmNrightAttachment = XmATTACH_FORM;
XmNorientation = XmHORIZONTAL;
XmNminimum = 00;
XmNmaximum = 2000;
XmNvalue = 500;
XmNshowValue = on;
XmNdecimalPoints = 1;
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create(k_surface_refl_specexp);
};
};
object
surface_transparency_label : XmLabel {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmScale surface_refl_specexp;
XmNleftAttachment = XmATTACH_FORM ;
XmNlabelString = "Transparency";
};
};
object
surface_refl_transparency : XmScale {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmLabel surface_transparency_label;
XmNleftAttachment = XmATTACH_FORM;
XmNrightAttachment = XmATTACH_FORM;
XmNorientation = XmHORIZONTAL;
XmNminimum = 0;
XmNmaximum = 100;
XmNvalue = 0;
XmNshowValue = on;
XmNdecimalPoints = 2;
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create(k_surface_refl_transparency);
};
};
!****************************** Surface Cull
object
surface_cull_sep : XmSeparator {
arguments {
XmNleftAttachment = XmATTACH_FORM;
XmNrightAttachment = XmATTACH_FORM;
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmScale surface_refl_transparency;
};
};
object
surface_cull_label : XmLabel {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmSeparator surface_cull_sep;
XmNleftAttachment = XmATTACH_FORM ;
XmNrightAttachment = XmATTACH_FORM ;
XmNlabelString = "Surface Cull";
};
};
object
surface_cull_box : XmRadioBox {
arguments {
XmNtopAttachment = XmATTACH_WIDGET ;
XmNtopWidget = XmLabel surface_cull_label;
XmNleftAttachment = XmATTACH_FORM ;
XmNrightAttachment = XmATTACH_FORM ;
XmNorientation = XmHORIZONTAL;
XmNborderWidth = 1;
};
controls {
XmToggleButton surface_cull_none;
XmToggleButton surface_cull_back;
XmToggleButton surface_cull_front;
};
};
object
surface_cull_none : XmToggleButton {
arguments { XmNlabelString = "Neither";
XmNset = on; ! A radio box requires one toggle to be set.
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create (k_cull_none);
};
};
object
surface_cull_back : XmToggleButton {
arguments {
XmNlabelString = "Back Faces";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create (k_cull_back);
};
};
object
surface_cull_front : XmToggleButton {
arguments {
XmNlabelString = "Front Faces";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create (k_cull_front);
};
};
!***************************** Bottom Buttons ******************************
object
surface_button_box : XmRowColumn {
arguments {
XmNorientation = XmHORIZONTAL;
XmNleftAttachment = XmATTACH_FORM;
XmNrightAttachment = XmATTACH_FORM;
XmNbottomAttachment = XmATTACH_FORM;
XmNborderWidth = 2;
XmNentryBorder = 3;
};
controls {
XmPushButton surface_apply_button;
XmPushButton surface_dismiss_button;
XmPushButton surface_can_button;
};
};
object
surface_apply_button : XmPushButton widget { ! The menu positions the buttons
arguments { ! automatically.
XmNlabelString = "apply";
XmNforeground = yellow;
XmNbackground = red;
XmNhighlightColor = magenta;
XmNborderColor = green;
XmNaccelerator = "Ctrl <key>a";
XmNacceleratorText = " ^a";
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create (k_apply_surface);
XmNactivateCallback = procedure proc_pdraw_activate (k_apply_surface);
};
};
object
surface_can_button : XmPushButton widget {
arguments {
XmNlabelString = "fetch";
XmNforeground = yellow;
XmNbackground = red;
XmNhighlightColor = magenta;
XmNborderColor = green;
};
callbacks {
XmNactivateCallback = procedure proc_pdraw_activate (k_reset_surface);
};
};
object
surface_dismiss_button : XmPushButton widget {
arguments {
XmNlabelString = "dismiss";
XmNforeground = yellow;
XmNbackground = red;
XmNhighlightColor = magenta;
XmNborderColor = green;
};
callbacks {
MrmNcreateCallback = procedure proc_pdraw_create (k_dismiss_surface);
XmNactivateCallback = procedure proc_pdraw_activate (k_dismiss_surface);
};
};
!************************************************************************
! end of Surface Form
!************************************************************************
end module;