//
// time: Wed Apr  9 15:44:44 1997
//
// version: 3.1.1 (format), 3.1.4 (DX Beta)
//
//
// MODULE main
// CATEGORY Macros
//
// comment: This visual program visualizes a sample data set "velocity.dx". This data is a velocity field in which the velocity vectors spiral outward in the xz plane, except near the center of the field. Near the center, the velocity has a strong positive y component. 
// comment: 
// comment: First choose "Open All Control Panels" from the Windows menu. There are two selector interactors there which allow you to control how the streamlines are colored, and to control what the sequencer does. To bring up the sequencer, choose "Sequencer" from the Execute menu. Then press play, and experiment with the interactors.
// comment: 
// comment: This example uses a "dots" rendering approximation if you rotate the object while in execute-on-change mode. You can find this option under "Rendering Options" in the "Options" menu of the Image window.
// page assignment: box	order=3, windowed=0, showing=0
// page assignment: color_choice	order=4, windowed=0, showing=0
// page assignment: image	order=7, windowed=0, showing=0
// page assignment: import	order=2, windowed=0, showing=1
// page assignment: streamline	order=6, windowed=0, showing=0
// page assignment: user_choice	order=5, windowed=0, showing=0
// workspace: width = 212, height = 308
// layout: snap = 0, width = 50, height = 50, align = UL
//
macro main(
) -> (
) {
    // 
    // node Selector[2]: x = 30, y = 20, inputs = 7, label = Selector
    // input[1]: defaulting = 0, visible = 0, type = 32, value = "Selector_2"
    // input[2]: defaulting = 0, visible = 0, type = 32, value = "based on time" 
    // input[3]: defaulting = 0, visible = 0, type = 29, value = 1 
    // input[4]: defaulting = 1, visible = 1, type = 16777248, value = { "based on time" "based on velocity" }
    // input[5]: defaulting = 1, visible = 0, type = 16777245, value = { 1 2 }
    // input[6]: defaulting = 1, visible = 0, type = 3, value = 0
    // output[1]: visible = 1, type = 29, value = 1 
    // output[2]: visible = 1, type = 32, value = "based on time" 
    // page group: color_choice
    //
    // 
    // node Transmitter[7]: x = 11, y = 536, inputs = 1, label = color_choice
    // page group: color_choice
    //
color_choice = main_Selector_2_out_1;
    // 
    // node Receiver[9]: x = 198, y = 60, inputs = 1, label = color_choice
    // page group: image
    //
main_Receiver_9_out_1[cache: 0] = color_choice;
    // 
    // node Import[1]: x = 59, y = 133, inputs = 6, label = Import
    // input[1]: defaulting = 0, visible = 1, type = 32, value = "velocity.dx"
    // page group: import
    //
main_Import_1_out_1 = 
    Import(
    main_Import_1_in_1,
    main_Import_1_in_2,
    main_Import_1_in_3,
    main_Import_1_in_4,
    main_Import_1_in_5,
    main_Import_1_in_6
    ) [instance: 1, cache: 1];
    // 
    // node Transmitter[2]: x = 54, y = 246, inputs = 1, label = vector_data
    // page group: import
    //
vector_data = main_Import_1_out_1;
    // 
    // node Receiver[2]: x = 8, y = 53, inputs = 1, label = vector_data
    // page group: streamline
    //
main_Receiver_2_out_1[cache: 0] = vector_data;
    // 
    // node Receiver[3]: x = 117, y = 52, inputs = 1, label = vector_data
    // page group: streamline
    //
main_Receiver_3_out_1[cache: 0] = vector_data;
    // 
    // node Selector[3]: x = 118, y = 20, inputs = 7, label = Selector
    // input[1]: defaulting = 0, visible = 0, type = 32, value = "Selector_3"
    // input[2]: defaulting = 0, visible = 0, type = 32, value = "changes head of streamlines" 
    // input[3]: defaulting = 0, visible = 0, type = 29, value = 2 
    // input[4]: defaulting = 1, visible = 1, type = 16777248, value = { "moves starting points" "changes head of streamlines" }
    // input[5]: defaulting = 1, visible = 0, type = 16777245, value = { 1 2 }
    // input[6]: defaulting = 1, visible = 0, type = 3, value = 0
    // output[1]: visible = 1, type = 29, value = 2 
    // output[2]: visible = 1, type = 32, value = "changes head of streamlines" 
    // page group: user_choice
    //
    // 
    // node Sequencer[1]: x = 16, y = 107, inputs = 7, label = Sequencer
    // input[1]: defaulting = 0, visible = 0, type = 32, value = "Sequencer_1"
    // input[4]: defaulting = 1, visible = 0, type = 1, value = 1
    // input[5]: defaulting = 1, visible = 0, type = 1, value = 12
    // input[6]: defaulting = 1, visible = 0, type = 1, value = 1
    // input[7]: defaulting = 0, visible = 0, type = 16777217, value = { 1 12 1 1 12 1 }
    // page group: user_choice
    // vcr[1]: min = 1, max = 12, beg = 1, end = 12, cur = 1, inc = 1, loop = off, step = off, pal = off
    // window: position = (0.0000,0.0000), size = 0.2188x0.0781
    //
    main_Sequencer_1_out_1 = @frame;
    // 
    // node Switch[4]: x = 167, y = 311, inputs = 5, label = Switch
    // input[3]: defaulting = 0, visible = 1, type = 16777245, value = {6}
    // page group: user_choice
    //
main_Switch_4_out_1 = 
    Switch(
    main_Selector_3_out_1,
    main_Sequencer_1_out_1,
    main_Switch_4_in_3,
    main_Switch_4_in_4,
    main_Switch_4_in_5
    ) [instance: 4, cache: 1];
    // 
    // node Transmitter[5]: x = 146, y = 510, inputs = 1, label = slab_position
    // page group: user_choice
    //
slab_position = main_Switch_4_out_1;
    // 
    // node Receiver[7]: x = 240, y = 53, inputs = 1, label = slab_position
    // page group: streamline
    //
main_Receiver_7_out_1[cache: 0] = slab_position;
    // 
    // node Slab[1]: x = 142, y = 172, inputs = 4, label = Slab
    // input[2]: defaulting = 0, visible = 1, type = 1, value = 1
    // input[4]: defaulting = 0, visible = 1, type = 1, value = 0
    // page group: streamline
    //
main_Slab_1_out_1 = 
    Slab(
    main_Receiver_3_out_1,
    main_Slab_1_in_2,
    main_Receiver_7_out_1,
    main_Slab_1_in_4
    ) [instance: 1, cache: 1];
    // 
    // node Sample[2]: x = 130, y = 302, inputs = 2, label = Sample
    // input[2]: defaulting = 0, visible = 1, type = 1, value = 20
    // page group: streamline
    //
main_Sample_2_out_1 = 
    Sample(
    main_Slab_1_out_1,
    main_Sample_2_in_2
    ) [instance: 2, cache: 1];
    // 
    // node Switch[5]: x = 26, y = 305, inputs = 5, label = Switch
    // page group: user_choice
    //
main_Switch_5_out_1 = 
    Switch(
    main_Selector_3_out_1,
    main_Switch_5_in_2,
    main_Sequencer_1_out_1,
    main_Switch_5_in_4,
    main_Switch_5_in_5
    ) [instance: 5, cache: 1];
    // 
    // node Transmitter[6]: x = 21, y = 508, inputs = 1, label = streamline_head
    // page group: user_choice
    //
streamline_head = main_Switch_5_out_1;
    // 
    // node Receiver[8]: x = 367, y = 59, inputs = 1, label = streamline_head
    // page group: streamline
    //
main_Receiver_8_out_1[cache: 0] = streamline_head;
    // 
    // node Streamline[1]: x = 101, y = 418, inputs = 7, label = Streamline
    // page group: streamline
    //
main_Streamline_1_out_1 = 
    Streamline(
    main_Receiver_2_out_1,
    main_Sample_2_out_1,
    main_Streamline_1_in_3,
    main_Receiver_8_out_1,
    main_Streamline_1_in_5,
    main_Streamline_1_in_6,
    main_Streamline_1_in_7
    ) [instance: 1, cache: 1];
    // 
    // node Transmitter[4]: x = 78, y = 538, inputs = 1, label = streamline
    // page group: streamline
    //
streamline = main_Streamline_1_out_1;
    // 
    // node Receiver[6]: x = 343, y = 52, inputs = 1, label = streamline
    // page group: image
    //
main_Receiver_6_out_1[cache: 0] = streamline;
    // 
    // node Mark[1]: x = 318, y = 157, inputs = 2, label = Mark
    // input[2]: defaulting = 0, visible = 1, type = 32, value = "time"
    // page group: image
    //
main_Mark_1_out_1 = 
    Mark(
    main_Receiver_6_out_1,
    main_Mark_1_in_2
    ) [instance: 1, cache: 1];
    // 
    // node Switch[2]: x = 289, y = 264, inputs = 3, label = Switch
    // page group: image
    //
main_Switch_2_out_1 = 
    Switch(
    main_Receiver_9_out_1,
    main_Mark_1_out_1,
    main_Receiver_6_out_1
    ) [instance: 2, cache: 1];
    // 
    // node AutoColor[1]: x = 276, y = 362, inputs = 10, label = AutoColor
    // page group: image
    //
main_AutoColor_1_out_1,
main_AutoColor_1_out_2 = 
    AutoColor(
    main_Switch_2_out_1,
    main_AutoColor_1_in_2,
    main_AutoColor_1_in_3,
    main_AutoColor_1_in_4,
    main_AutoColor_1_in_5,
    main_AutoColor_1_in_6,
    main_AutoColor_1_in_7,
    main_AutoColor_1_in_8,
    main_AutoColor_1_in_9,
    main_AutoColor_1_in_10
    ) [instance: 1, cache: 1];
    // 
    // node Format[1]: x = 20, y = 224, inputs = 5, label = Format
    // input[1]: defaulting = 0, visible = 1, type = 32, value = "colors are %s"
    // page group: color_choice
    //
main_Format_1_out_1 = 
    Format(
    main_Format_1_in_1,
    main_Selector_2_out_2,
    main_Format_1_in_3,
    main_Format_1_in_4,
    main_Format_1_in_5
    ) [instance: 1, cache: 1];
    // 
    // node Transmitter[1]: x = 245, y = 513, inputs = 1, label = label
    // page group: user_choice
    //
label = main_Selector_3_out_2;
    // 
    // node Receiver[1]: x = 275, y = 35, inputs = 1, label = label
    // page group: color_choice
    //
main_Receiver_1_out_1[cache: 0] = label;
    // 
    // node Format[2]: x = 145, y = 296, inputs = 5, label = Format
    // input[1]: defaulting = 0, visible = 1, type = 32, value = "sequencer %s"
    // page group: color_choice
    //
main_Format_2_out_1 = 
    Format(
    main_Format_2_in_1,
    main_Receiver_1_out_1,
    main_Format_2_in_3,
    main_Format_2_in_4,
    main_Format_2_in_5
    ) [instance: 2, cache: 1];
    // 
    // node List[1]: x = 70, y = 371, inputs = 2, label = List
    // page group: color_choice
    //
main_List_1_out_1 = 
    List(
    main_Format_1_out_1,
    main_Format_2_out_1
    ) [instance: 1, cache: 1];
    // 
    // node Caption[1]: x = 133, y = 455, inputs = 9, label = Caption
    // input[2]: defaulting = 0, visible = 1, type = 8, value = [0.5, 0.02]
    // page group: color_choice
    //
main_Caption_1_out_1 = 
    Caption(
    main_List_1_out_1,
    main_Caption_1_in_2,
    main_Caption_1_in_3,
    main_Caption_1_in_4,
    main_Caption_1_in_5,
    main_Caption_1_in_6,
    main_Caption_1_in_7,
    main_Caption_1_in_8,
    main_Caption_1_in_9
    ) [instance: 1, cache: 1];
    // 
    // node Transmitter[8]: x = 168, y = 537, inputs = 1, label = caption
    // page group: color_choice
    //
caption = main_Caption_1_out_1;
    // 
    // node Receiver[10]: x = 49, y = 52, inputs = 1, label = caption
    // page group: image
    //
main_Receiver_10_out_1[cache: 0] = caption;
    // 
    // node Receiver[4]: x = 70, y = 68, inputs = 1, label = vector_data
    // page group: box
    //
main_Receiver_4_out_1[cache: 0] = vector_data;
    // 
    // node ShowBox[1]: x = 67, y = 166, inputs = 1, label = ShowBox
    // page group: box
    //
main_ShowBox_1_out_1,
main_ShowBox_1_out_2 = 
    ShowBox(
    main_Receiver_4_out_1
    ) [instance: 1, cache: 1];
    // 
    // node Color[3]: x = 69, y = 269, inputs = 5, label = Color
    // input[2]: defaulting = 0, visible = 1, type = 32, value = "turquoise"
    // page group: box
    //
main_Color_3_out_1 = 
    Color(
    main_ShowBox_1_out_1,
    main_Color_3_in_2,
    main_Color_3_in_3,
    main_Color_3_in_4,
    main_Color_3_in_5
    ) [instance: 3, cache: 1];
    // 
    // node Transmitter[3]: x = 89, y = 396, inputs = 1, label = box
    // page group: box
    //
box = main_Color_3_out_1;
    // 
    // node Receiver[5]: x = 144, y = 52, inputs = 1, label = box
    // page group: image
    //
main_Receiver_5_out_1[cache: 0] = box;
    // 
    // node Collect[2]: x = 92, y = 428, inputs = 3, label = Collect
    // page group: image
    //
main_Collect_2_out_1 = 
    Collect(
    main_Receiver_10_out_1,
    main_AutoColor_1_out_1,
    main_Receiver_5_out_1
    ) [instance: 2, cache: 1];
    // 
    // node Image[2]: x = 80, y = 533, inputs = 48, label = Image
    // input[1]: defaulting = 0, visible = 0, type = 67108863, value = "Image_2"
    // input[4]: defaulting = 0, visible = 0, type = 1, value = 1
    // input[5]: defaulting = 0, visible = 0, type = 8, value = [6 11 9]
    // input[6]: defaulting = 0, visible = 0, type = 8, value = [-15.8017 28.0572 81.4247]
    // input[7]: defaulting = 0, visible = 0, type = 5, value = 41.5507
    // input[8]: defaulting = 0, visible = 0, type = 1, value = 640
    // input[9]: defaulting = 0, visible = 0, type = 5, value = 0.75
    // input[10]: defaulting = 0, visible = 0, type = 8, value = [0.0318889 0.974973 -0.220023]
    // input[11]: defaulting = 1, visible = 0, type = 5, value = 30.0001
    // input[12]: defaulting = 0, visible = 0, type = 1, value = 0
    // input[14]: defaulting = 0, visible = 0, type = 1, value = 1
    // input[19]: defaulting = 0, visible = 0, type = 3, value = 0
    // input[29]: defaulting = 1, visible = 0, type = 3, value = 0
    // page group: image
    // depth: value = 24
    // window: position = (0.3422,0.1094), size = 0.5109x0.5117
    // internal caching: 1
    //
main_Image_2_out_1,
main_Image_2_out_2,
main_Image_2_out_3 = 
    Image(
    main_Image_2_in_1,
    main_Collect_2_out_1,
    main_Image_2_in_3,
    main_Image_2_in_4,
    main_Image_2_in_5,
    main_Image_2_in_6,
    main_Image_2_in_7,
    main_Image_2_in_8,
    main_Image_2_in_9,
    main_Image_2_in_10,
    main_Image_2_in_11,
    main_Image_2_in_12,
    main_Image_2_in_13,
    main_Image_2_in_14,
    main_Image_2_in_15,
    main_Image_2_in_16,
    main_Image_2_in_17,
    main_Image_2_in_18,
    main_Image_2_in_19,
    main_Image_2_in_20,
    main_Image_2_in_21,
    main_Image_2_in_22,
    main_Image_2_in_23,
    main_Image_2_in_24,
    main_Image_2_in_25,
    main_Image_2_in_26,
    main_Image_2_in_27,
    main_Image_2_in_28,
    main_Image_2_in_29,
    main_Image_2_in_30,
    main_Image_2_in_31,
    main_Image_2_in_32,
    main_Image_2_in_33,
    main_Image_2_in_34,
    main_Image_2_in_35,
    main_Image_2_in_36,
    main_Image_2_in_37,
    main_Image_2_in_38,
    main_Image_2_in_39,
    main_Image_2_in_40,
    main_Image_2_in_41,
    main_Image_2_in_42,
    main_Image_2_in_43,
    main_Image_2_in_44,
    main_Image_2_in_45,
    main_Image_2_in_46,
    main_Image_2_in_47,
    main_Image_2_in_48
    ) [instance: 2, cache: 1];
    //
    // decorator Annotate	pos=(32,67) size=180x28 style(Label), font=bold, value = <NULL>
    // annotation user_begin: 23
    // annotation user: import some vector data
    // annotation user_end: <NULL>
    // page group: import
    //
    // decorator Annotate	pos=(192,84) size=416x60 style(Label), font=bold, value = <NULL>
    // annotation user_begin: 163
    // annotation user: This page allows the user to choose whether the
    // annotation user: sequencer should control the heads of the streamlines
    // annotation user: or the starting points of the streamlines (the slab position)
    // annotation user_end: <NULL>
    // page group: user_choice
    //
    // decorator Annotate	pos=(323,422) size=248x28 style(Label), font=bold, value = <NULL>
    // annotation user_begin: 34
    // annotation user: This page creates the streamlines.
    // annotation user_end: <NULL>
    // page group: streamline
    //
    // decorator Annotate	pos=(239,123) size=279x28 style(Label), font=bold, value = <NULL>
    // annotation user_begin: 37
    // annotation user: This page draws a box around the data
    // annotation user_end: <NULL>
    // page group: box
    //
    // decorator Annotate	pos=(270,205) size=346x60 style(Label), font=bold, value = <NULL>
    // annotation user_begin: 128
    // annotation user: this page allows the user to choose how to
    // annotation user: color the streamlines (based on time or velocity)
    // annotation user: and creates an appropriate caption.
    // annotation user_end: <NULL>
    // page group: color_choice
    //
    // decorator Annotate	pos=(176,489) size=465x60 style(Label), font=bold, value = <NULL>
    // annotation user_begin: 174
    // annotation user: Depending on "color_choice", the streamlines are colored based 
    // annotation user: on either time or velocity. The result is collected with the caption
    // annotation user: and the bounding box and passed to Image.
    // annotation user_end: <NULL>
    // page group: image
// network: end of macro body
CacheScene("Image_2", main_Image_2_out_1, main_Image_2_out_2);
}
main_Selector_2_in_1 = "Selector_2";
main_Selector_2_in_2 = "based on time" ;
main_Selector_2_in_3 = 1 ;
main_Selector_2_in_4 = NULL;
main_Selector_2_in_5 = NULL;
main_Selector_2_in_6 = NULL;
main_Selector_2_in_7 = NULL;
main_Selector_2_out_1 = 1 ;
main_Selector_2_out_2 = "based on time" ;
main_Transmitter_7_out_1 = NULL;
main_Receiver_9_out_1 = NULL;
main_Import_1_in_1 = "velocity.dx";
main_Import_1_in_2 = NULL;
main_Import_1_in_3 = NULL;
main_Import_1_in_4 = NULL;
main_Import_1_in_5 = NULL;
main_Import_1_in_6 = NULL;
main_Import_1_out_1 = NULL;
main_Transmitter_2_out_1 = NULL;
main_Receiver_2_out_1 = NULL;
main_Receiver_3_out_1 = NULL;
main_Selector_3_in_1 = "Selector_3";
main_Selector_3_in_2 = "changes head of streamlines" ;
main_Selector_3_in_3 = 2 ;
main_Selector_3_in_4 = NULL;
main_Selector_3_in_5 = NULL;
main_Selector_3_in_6 = NULL;
main_Selector_3_in_7 = NULL;
main_Selector_3_out_1 = 2 ;
main_Selector_3_out_2 = "changes head of streamlines" ;
main_Sequencer_1_in_1 = "Sequencer_1";
main_Sequencer_1_in_2 = NULL;
main_Sequencer_1_in_3 = NULL;
main_Sequencer_1_in_4 = NULL;
main_Sequencer_1_in_5 = NULL;
main_Sequencer_1_in_6 = NULL;
main_Sequencer_1_in_7 = { 1 12 1 1 12 1 };
main_Sequencer_1_out_1 = NULL;

@startframe = 1;
@nextframe  = @startframe;
@endframe   = 12;
@deltaframe = 1;
main_Switch_4_in_3 = {6};
main_Switch_4_in_4 = NULL;
main_Switch_4_in_5 = NULL;
main_Switch_4_out_1 = NULL;
main_Transmitter_5_out_1 = NULL;
main_Receiver_7_out_1 = NULL;
main_Slab_1_in_2 = 1;
main_Slab_1_in_4 = 0;
main_Slab_1_out_1 = NULL;
main_Sample_2_in_2 = 20;
main_Sample_2_out_1 = NULL;
main_Switch_5_in_2 = NULL;
main_Switch_5_in_4 = NULL;
main_Switch_5_in_5 = NULL;
main_Switch_5_out_1 = NULL;
main_Transmitter_6_out_1 = NULL;
main_Receiver_8_out_1 = NULL;
main_Streamline_1_in_3 = NULL;
main_Streamline_1_in_5 = NULL;
main_Streamline_1_in_6 = NULL;
main_Streamline_1_in_7 = NULL;
main_Streamline_1_out_1 = NULL;
main_Transmitter_4_out_1 = NULL;
main_Receiver_6_out_1 = NULL;
main_Mark_1_in_2 = "time";
main_Mark_1_out_1 = NULL;
main_Switch_2_out_1 = NULL;
main_AutoColor_1_in_2 = NULL;
main_AutoColor_1_in_3 = NULL;
main_AutoColor_1_in_4 = NULL;
main_AutoColor_1_in_5 = NULL;
main_AutoColor_1_in_6 = NULL;
main_AutoColor_1_in_7 = NULL;
main_AutoColor_1_in_8 = NULL;
main_AutoColor_1_in_9 = NULL;
main_AutoColor_1_in_10 = NULL;
main_AutoColor_1_out_1 = NULL;
main_Format_1_in_1 = "colors are %s";
main_Format_1_in_3 = NULL;
main_Format_1_in_4 = NULL;
main_Format_1_in_5 = NULL;
main_Format_1_out_1 = NULL;
main_Transmitter_1_out_1 = NULL;
main_Receiver_1_out_1 = NULL;
main_Format_2_in_1 = "sequencer %s";
main_Format_2_in_3 = NULL;
main_Format_2_in_4 = NULL;
main_Format_2_in_5 = NULL;
main_Format_2_out_1 = NULL;
main_List_1_out_1 = NULL;
main_Caption_1_in_2 = [0.5, 0.02];
main_Caption_1_in_3 = NULL;
main_Caption_1_in_4 = NULL;
main_Caption_1_in_5 = NULL;
main_Caption_1_in_6 = NULL;
main_Caption_1_in_7 = NULL;
main_Caption_1_in_8 = NULL;
main_Caption_1_in_9 = NULL;
main_Caption_1_out_1 = NULL;
main_Transmitter_8_out_1 = NULL;
main_Receiver_10_out_1 = NULL;
main_Receiver_4_out_1 = NULL;
main_ShowBox_1_out_1 = NULL;
main_Color_3_in_2 = "turquoise";
main_Color_3_in_3 = NULL;
main_Color_3_in_4 = NULL;
main_Color_3_in_5 = NULL;
main_Color_3_out_1 = NULL;
main_Transmitter_3_out_1 = NULL;
main_Receiver_5_out_1 = NULL;
main_Collect_2_out_1 = NULL;
macro Image(
        id,
        object,
        where,
        useVector,
        to,
        from,
        width,
        resolution,
        aspect,
        up,
        viewAngle,
        perspective,
        options,
        buttonState = 1,
        buttonUpApprox = "none",
        buttonDownApprox = "none",
        buttonUpDensity = 1,
        buttonDownDensity = 1,
        renderMode = 0,
        defaultCamera,
        reset,
        backgroundColor,
        throttle,
        RECenable = 0,
        RECfile,
        RECformat,
        RECresolution,
        RECaspect,
        AAenable = 0,
        AAlabels,
        AAticks,
        AAcorners,
        AAframe,
        AAadjust,
        AAcursor,
        AAgrid,
        AAcolors,
        AAannotation,
        AAlabelscale,
        AAfont,
        interactionMode,
        title,
        AAxTickLocs,
        AAyTickLocs,
        AAzTickLocs,
        AAxTickLabels,
        AAyTickLabels,
        AAzTickLabels) -> (
        object,
        camera,
        where)
{
    ImageMessage(
        id,
        backgroundColor,
        throttle,
        RECenable,
        RECfile,
        RECformat,
        RECresolution,
        RECaspect,
        AAenable,
        AAlabels,
        AAticks,
        AAcorners,
        AAframe,
        AAadjust,
        AAcursor,
        AAgrid,
        AAcolors,
        AAannotation,
        AAlabelscale,
        AAfont,
        AAxTickLocs,
        AAyTickLocs,
        AAzTickLocs,
        AAxTickLabels,
        AAyTickLabels,
        AAzTickLabels,
        interactionMode,
        title,
        renderMode,
        buttonUpApprox,
        buttonDownApprox,
        buttonUpDensity,
        buttonDownDensity) [instance: 1, cache: 1];
    autoCamera =
        AutoCamera(
            object,
            "front",
            object,
            resolution,
            aspect,
            [0,1,0],
            perspective,
            viewAngle,
            backgroundColor) [instance: 1, cache: 1];
    realCamera =
        Camera(
            to,
            from,
            width,
            resolution,
            aspect,
            up,
            perspective,
            viewAngle,
            backgroundColor) [instance: 1, cache: 1];
    coloredDefaultCamera = 
	 UpdateCamera(defaultCamera,
            background=backgroundColor) [instance: 1, cache: 1];
    nullDefaultCamera =
        Inquire(defaultCamera,
            "is null + 1") [instance: 1, cache: 1];
    resetCamera =
        Switch(
            nullDefaultCamera,
            coloredDefaultCamera,
            autoCamera) [instance: 1, cache: 1];
    resetNull = 
        Inquire(
            reset,
            "is null + 1") [instance: 2, cache: 1];
    reset =
        Switch(
            resetNull,
            reset,
            0) [instance: 2, cache: 1];
    whichCamera =
        Compute(
            "($0 != 0 || $1 == 0) ? 1 : 2",
            reset,
            useVector) [instance: 1, cache: 1];
    camera = Switch(
            whichCamera,
            resetCamera,
            realCamera) [instance: 3, cache: 1];
    AAobject =
        AutoAxes(
            object,
            camera,
            AAlabels,
            AAticks,
            AAcorners,
            AAframe,
            AAadjust,
            AAcursor,
            AAgrid,
            AAcolors,
            AAannotation,
            AAlabelscale,
            AAfont,
            AAxTickLocs,
            AAyTickLocs,
            AAzTickLocs,
            AAxTickLabels,
            AAyTickLabels,
            AAzTickLabels) [instance: 1, cache: 1];
    switchAAenable = Compute("$0+1",
	     AAenable) [instance: 2, cache: 1];
    object = Switch(
	     switchAAenable,
	     object,
	     AAobject) [instance:4, cache: 1];
    SWapproximation_options =
        Switch(
            buttonState,
            buttonUpApprox,
            buttonDownApprox) [instance: 5, cache: 1];
    SWdensity_options =
        Switch(
            buttonState,
            buttonUpDensity,
            buttonDownDensity) [instance: 6, cache: 1];
    HWapproximation_options =
        Format(
            "%s,%s",
            buttonDownApprox,
            buttonUpApprox) [instance: 1, cache: 1];
    HWdensity_options =
        Format(
            "%d,%d",
            buttonDownDensity,
            buttonUpDensity) [instance: 2, cache: 1];
    switchRenderMode = Compute(
	     "$0+1",
	     renderMode) [instance: 3, cache: 1];
    approximation_options = Switch(
	     switchRenderMode,
            SWapproximation_options,
	     HWapproximation_options) [instance: 7, cache: 1];
    density_options = Switch(
	     switchRenderMode,
            SWdensity_options,
            HWdensity_options) [instance: 8, cache: 1];
    renderModeString = Switch(
            switchRenderMode,
            "software",
            "hardware")[instance: 9, cache: 1];
    object_tag = Inquire(
            object,
            "object tag")[instance: 3, cache: 1];
    annoted_object =
        Options(
            object,
            "send boxes",
            0,
            "cache",
            1,
            "object tag",
            object_tag,
            "ddcamera",
            whichCamera,
            "rendering approximation",
            approximation_options,
            "render every",
            density_options,
            "button state",
            buttonState,
            "rendering mode",
            renderModeString) [instance: 1, cache: 1];
    RECresNull =
        Inquire(
            RECresolution,
            "is null + 1") [instance: 4, cache: 1];
    ImageResolution =
        Inquire(
            camera,
            "camera resolution") [instance: 5, cache: 1];
    RECresolution =
        Switch(
            RECresNull,
            RECresolution,
            ImageResolution) [instance: 10, cache: 1];
    RECaspectNull =
        Inquire(
            RECaspect,
            "is null + 1") [instance: 6, cache: 1];
    ImageAspect =
        Inquire(
            camera,
            "camera aspect") [instance: 7, cache: 1];
    RECaspect =
        Switch(
            RECaspectNull,
            RECaspect,
            ImageAspect) [instance: 11, cache: 1];
    switchRECenable = Compute(
          "$0 == 0 ? 1 : (($2 == $3) && ($4 == $5)) ? ($1 == 1 ? 2 : 3) : 4",
            RECenable,
            switchRenderMode,
            RECresolution,
            ImageResolution,
            RECaspect,
	     ImageAspect) [instance: 4, cache: 1];
    NoRECobject, RECNoRerenderObject, RECNoRerHW, RECRerenderObject = Route(switchRECenable, annoted_object);
    Display(
        NoRECobject,
        camera,
        where,
        throttle) [instance: 1, cache: 1];
    image =
        Render(
            RECNoRerenderObject,
            camera) [instance: 1, cache: 1];
    Display(
        image,
        NULL,
        where,
        throttle) [instance: 2, cache: 1];
    WriteImage(
        image,
        RECfile,
        RECformat) [instance: 1, cache: 1];
    rec_where = Display(
        RECNoRerHW,
        camera,
        where,
        throttle) [instance: 1, cache: 0];
    rec_image = ReadImageWindow(
        rec_where) [instance: 1, cache: 1];
    WriteImage(
        rec_image,
        RECfile,
        RECformat) [instance: 1, cache: 1];
    RECupdateCamera =
	UpdateCamera(
	    camera,
	    resolution=RECresolution,
	    aspect=RECaspect) [instance: 2, cache: 1];
    Display(
        RECRerenderObject,
        camera,
        where,
        throttle) [instance: 1, cache: 1];
    RECRerenderObject =
	ScaleScreen(
	    RECRerenderObject,
	    NULL,
	    RECresolution,
	    camera) [instance: 1, cache: 1];
    image =
        Render(
            RECRerenderObject,
            RECupdateCamera) [instance: 2, cache: 1];
    WriteImage(
        image,
        RECfile,
        RECformat) [instance: 2, cache: 1];
}
main_Image_2_in_1 = "Image_2";
main_Image_2_in_3 = "X24,,";
main_Image_2_in_4 = 1;
main_Image_2_in_5 = [6 11 9];
main_Image_2_in_6 = [-15.8017 28.0572 81.4247];
main_Image_2_in_7 = 41.5507;
main_Image_2_in_8 = 640;
main_Image_2_in_9 = 0.75;
main_Image_2_in_10 = [0.0318889 0.974973 -0.220023];
main_Image_2_in_11 = NULL;
main_Image_2_in_12 = 0;
main_Image_2_in_13 = NULL;
main_Image_2_in_14 = 1;
main_Image_2_in_15 = NULL;
main_Image_2_in_16 = NULL;
main_Image_2_in_17 = NULL;
main_Image_2_in_18 = NULL;
main_Image_2_in_19 = 0;
main_Image_2_in_20 = NULL;
main_Image_2_in_21 = NULL;
main_Image_2_in_22 = NULL;
main_Image_2_in_23 = NULL;
main_Image_2_in_25 = NULL;
main_Image_2_in_26 = NULL;
main_Image_2_in_27 = NULL;
main_Image_2_in_28 = NULL;
main_Image_2_in_29 = NULL;
main_Image_2_in_30 = NULL;
main_Image_2_in_31 = NULL;
main_Image_2_in_32 = NULL;
main_Image_2_in_33 = NULL;
main_Image_2_in_34 = NULL;
main_Image_2_in_35 = NULL;
main_Image_2_in_36 = NULL;
main_Image_2_in_37 = NULL;
main_Image_2_in_38 = NULL;
main_Image_2_in_39 = NULL;
main_Image_2_in_40 = NULL;
main_Image_2_in_41 = NULL;
main_Image_2_in_42 = NULL;
main_Image_2_in_43 = NULL;
main_Image_2_in_44 = NULL;
main_Image_2_in_45 = NULL;
main_Image_2_in_46 = NULL;
main_Image_2_in_47 = NULL;
main_Image_2_in_48 = NULL;
Executive("product version 3 1 4");
$sync

sequence main();
play;
