//
// time: Wed Apr  9 15:38:15 1997
//
// version: 3.1.1 (format), 3.1.4 (DX Beta)
//
//
// MODULE main
// CATEGORY Macros
//
// comment: This example illustrates the interoperability of Data Explorer modules. There are two paths in the visual program. At the top of the program, a scalar field and a vector field are imported. The vector field is passed to the Streamline module.  The output of Streamline travels down two possible paths. On the left, the scalar data is mapped onto the streamline. This means that each point on the streamline will be given the data value for the scalar field at that position. The mapped line then is passed to AutoColor, which colors the line based on the data values.  Then the output of AutoColor is passed to the Tube module, which turns the line into a tube. The colors are passed through to the tube, so that the result is a tube with banded colors. The colors represent the data values along the streamline, which was at the center of the tube.
// comment: 
// comment: In the second path out of the Streamline module, the streamline is first turned into a tube. Then the scalar data field is mapped onto the tube (instead of onto the streamline).  This means that each point on the tube gets the data value of the scalar field at that position.  Because the ends of the tube lie outside the area of the scalar field Map marks these positions invalid. Invalid positions are not rendered by the Renderer. The result of Map is passed to AutoColor.  
// comment: 
// comment: The inside of the tube is colored grey.
// comment: 
// comment: The Switch module allows you to see one path or the other. Open the control panel using Open All Control Panels in the Windows menu.  You can change the value of the selector interactor and re-execute.  You can also use an interactor in the control panel to control the accuracy of the streamlines; changing the value from 0.1 to 1.0 results in faster, less accurate streamlines. Changing the value to 0.01 results in slower, more accurate streamline. The stepscale value is the fraction of the element size to use for the computation of the streamlines.
// comment: 
// comment: Because this example uses the Image tool, you can use the direct interactors available in the Image window.
// 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: MapOnLine	order=4, windowed=0, showing=0
// page assignment: MapOnTube	order=5, windowed=0, showing=0
// page assignment: image	order=6, windowed=0, showing=0
// page assignment: import	order=2, windowed=0, showing=1
// page assignment: streamline	order=3, windowed=0, showing=0
// workspace: width = 427, height = 414
// layout: snap = 0, width = 50, height = 50, align = UL
//
macro main(
) -> (
) {
    // 
    // node Import[1]: x = 144, y = 98, inputs = 6, label = Import
    // input[1]: defaulting = 0, visible = 1, type = 32, value = "hyper"
    // input[3]: defaulting = 0, visible = 1, type = 32, value = "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 Select[2]: x = 220, y = 208, inputs = 3, label = Select
    // input[2]: defaulting = 0, visible = 1, type = 1, value = 1
    // page group: import
    //
main_Select_2_out_1 = 
    Select(
    main_Import_1_out_1,
    main_Select_2_in_2,
    main_Select_2_in_3
    ) [instance: 2, cache: 1];
    // 
    // node Transmitter[22]: x = 205, y = 347, inputs = 1, label = vector_data
    // page group: import
    //
vector_data = main_Select_2_out_1;
    // 
    // node Receiver[31]: x = 51, y = 145, inputs = 1, label = vector_data
    // page group: streamline
    //
main_Receiver_31_out_1[cache: 0] = vector_data;
    // 
    // node Scalar[1]: x = 210, y = 146, inputs = 11, label = Scalar
    // input[1]: defaulting = 0, visible = 0, type = 32, value = "Scalar_1"
    // input[3]: defaulting = 0, visible = 0, type = 5, value = 0.100000
    // input[4]: defaulting = 1, visible = 0, type = 3, value = 0
    // input[5]: defaulting = 1, visible = 0, type = 5, value = 0.01
    // input[6]: defaulting = 1, visible = 0, type = 5, value = 2.0
    // input[7]: defaulting = 1, visible = 0, type = 5, value = 1.00000
    // input[8]: defaulting = 1, visible = 0, type = 32, value = "5"
    // input[9]: defaulting = 1, visible = 0, type = 1, value = 5
    // output[1]: visible = 1, type = 5, value = 0.100000
    // page group: streamline
    //
    // 
    // node Streamline[1]: x = 86, y = 247, inputs = 7, label = Streamline
    // input[2]: defaulting = 0, visible = 1, type = 16777224, value = {[3, 3, 0.2]}
    // page group: streamline
    //
main_Streamline_1_out_1 = 
    Streamline(
    main_Receiver_31_out_1,
    main_Streamline_1_in_2,
    main_Streamline_1_in_3,
    main_Streamline_1_in_4,
    main_Streamline_1_in_5,
    main_Streamline_1_in_6,
    main_Scalar_1_out_1
    ) [instance: 1, cache: 1];
    // 
    // node Transmitter[23]: x = 140, y = 346, inputs = 1, label = streamline
    // page group: streamline
    //
streamline = main_Streamline_1_out_1;
    // 
    // node Receiver[34]: x = 20, y = 20, inputs = 1, label = streamline
    // page group: MapOnTube
    //
main_Receiver_34_out_1[cache: 0] = streamline;
    // 
    // node Tube[1]: x = 20, y = 203, inputs = 4, label = Tube
    // input[2]: defaulting = 0, visible = 1, type = 5, value = 1.00000
    // input[3]: defaulting = 0, visible = 1, type = 1, value = 15
    // page group: MapOnTube
    //
main_Tube_1_out_1 = 
    Tube(
    main_Receiver_34_out_1,
    main_Tube_1_in_2,
    main_Tube_1_in_3,
    main_Tube_1_in_4
    ) [instance: 1, cache: 1];
    // 
    // node Select[1]: x = 71, y = 190, inputs = 3, label = Select
    // input[2]: defaulting = 0, visible = 1, type = 1, value = 0
    // page group: import
    //
main_Select_1_out_1 = 
    Select(
    main_Import_1_out_1,
    main_Select_1_in_2,
    main_Select_1_in_3
    ) [instance: 1, cache: 1];
    // 
    // node Transmitter[1]: x = 65, y = 352, inputs = 1, label = scalar_data
    // page group: import
    //
scalar_data = main_Select_1_out_1;
    // 
    // node Receiver[1]: x = 120, y = 29, inputs = 1, label = scalar_data
    // page group: MapOnTube
    //
main_Receiver_1_out_1[cache: 0] = scalar_data;
    // 
    // node Map[1]: x = 52, y = 319, inputs = 4, label = Map
    // page group: MapOnTube
    //
main_Map_1_out_1 = 
    Map(
    main_Tube_1_out_1,
    main_Receiver_1_out_1,
    main_Map_1_in_3,
    main_Map_1_in_4
    ) [instance: 1, cache: 1];
    // 
    // node AutoColor[1]: x = 104, y = 400, inputs = 10, label = AutoColor
    // input[5]: defaulting = 0, visible = 1, type = 5, value = 1.00000
    // page group: MapOnTube
    //
main_AutoColor_1_out_1,
main_AutoColor_1_out_2 = 
    AutoColor(
    main_Map_1_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 Receiver[33]: x = 20, y = 20, inputs = 1, label = streamline
    // page group: MapOnLine
    //
main_Receiver_33_out_1[cache: 0] = streamline;
    // 
    // node Receiver[32]: x = 113, y = 27, inputs = 1, label = scalar_data
    // page group: MapOnLine
    //
main_Receiver_32_out_1[cache: 0] = scalar_data;
    // 
    // node Map[2]: x = 70, y = 107, inputs = 4, label = Map
    // page group: MapOnLine
    //
main_Map_2_out_1 = 
    Map(
    main_Receiver_33_out_1,
    main_Receiver_32_out_1,
    main_Map_2_in_3,
    main_Map_2_in_4
    ) [instance: 2, cache: 1];
    // 
    // node AutoColor[2]: x = 63, y = 195, inputs = 10, label = AutoColor
    // input[5]: defaulting = 0, visible = 1, type = 5, value = 1.00000
    // page group: MapOnLine
    //
main_AutoColor_2_out_1,
main_AutoColor_2_out_2 = 
    AutoColor(
    main_Map_2_out_1,
    main_AutoColor_2_in_2,
    main_AutoColor_2_in_3,
    main_AutoColor_2_in_4,
    main_AutoColor_2_in_5,
    main_AutoColor_2_in_6,
    main_AutoColor_2_in_7,
    main_AutoColor_2_in_8,
    main_AutoColor_2_in_9,
    main_AutoColor_2_in_10
    ) [instance: 2, cache: 1];
    // 
    // node Selector[1]: x = 41, y = 99, inputs = 7, label = Selector
    // input[1]: defaulting = 0, visible = 0, type = 32, value = "Selector_1"
    // input[2]: defaulting = 0, visible = 0, type = 32, value = "map onto line" 
    // input[3]: defaulting = 0, visible = 0, type = 29, value = 1 
    // input[4]: defaulting = 1, visible = 1, type = 16777248, value = { "map onto line" "map onto tube" }
    // 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 = "map onto line" 
    // page group: image
    //
    // 
    // node Tube[2]: x = 72, y = 279, inputs = 4, label = Tube
    // input[2]: defaulting = 0, visible = 1, type = 5, value = 1.00000
    // input[3]: defaulting = 0, visible = 1, type = 1, value = 15
    // page group: MapOnLine
    //
main_Tube_2_out_1 = 
    Tube(
    main_AutoColor_2_out_1,
    main_Tube_2_in_2,
    main_Tube_2_in_3,
    main_Tube_2_in_4
    ) [instance: 2, cache: 1];
    // 
    // node Transmitter[24]: x = 79, y = 407, inputs = 1, label = map_on_line
    // page group: MapOnLine
    //
map_on_line = main_Tube_2_out_1;
    // 
    // node Receiver[35]: x = 165, y = 72, inputs = 1, label = map_on_line
    // page group: image
    //
main_Receiver_35_out_1[cache: 0] = map_on_line;
    // 
    // node Transmitter[25]: x = 119, y = 497, inputs = 1, label = map_on_tube
    // page group: MapOnTube
    //
map_on_tube = main_AutoColor_1_out_1;
    // 
    // node Receiver[36]: x = 272, y = 74, inputs = 1, label = map_on_tube
    // page group: image
    //
main_Receiver_36_out_1[cache: 0] = map_on_tube;
    // 
    // node Switch[1]: x = 210, y = 207, inputs = 3, label = Switch
    // page group: image
    //
main_Switch_1_out_1 = 
    Switch(
    main_Selector_1_out_1,
    main_Receiver_35_out_1,
    main_Receiver_36_out_1
    ) [instance: 1, cache: 1];
    // 
    // node Color[1]: x = 213, y = 314, inputs = 5, label = Color the inside of the tube grey
    // input[2]: defaulting = 0, visible = 1, type = 32, value = "grey"
    // input[4]: defaulting = 0, visible = 1, type = 32, value = "back colors"
    // page group: image
    //
main_Color_1_out_1 = 
    Color(
    main_Switch_1_out_1,
    main_Color_1_in_2,
    main_Color_1_in_3,
    main_Color_1_in_4,
    main_Color_1_in_5
    ) [instance: 1, cache: 1];
    // 
    // node Image[3]: x = 199, y = 400, inputs = 48, label = Image
    // input[1]: defaulting = 0, visible = 0, type = 67108863, value = "Image_3"
    // input[4]: defaulting = 0, visible = 0, type = 1, value = 1
    // input[5]: defaulting = 0, visible = 0, type = 8, value = [4.55222 4.55249 4.85314]
    // input[6]: defaulting = 0, visible = 0, type = 8, value = [-27.312 7.8454 16.1685]
    // input[7]: defaulting = 0, visible = 0, type = 5, value = 18.2065
    // 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.0712792 0.993531 -0.0884067]
    // 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[15]: defaulting = 1, visible = 0, type = 32, value = "none"
    // input[16]: defaulting = 1, visible = 0, type = 32, value = "none"
    // input[17]: defaulting = 1, visible = 0, type = 1, value = 1
    // input[18]: defaulting = 1, 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.3484,0.1270), size = 0.5109x0.5117
    // internal caching: 1
    //
main_Image_3_out_1,
main_Image_3_out_2,
main_Image_3_out_3 = 
    Image(
    main_Image_3_in_1,
    main_Color_1_out_1,
    main_Image_3_in_3,
    main_Image_3_in_4,
    main_Image_3_in_5,
    main_Image_3_in_6,
    main_Image_3_in_7,
    main_Image_3_in_8,
    main_Image_3_in_9,
    main_Image_3_in_10,
    main_Image_3_in_11,
    main_Image_3_in_12,
    main_Image_3_in_13,
    main_Image_3_in_14,
    main_Image_3_in_15,
    main_Image_3_in_16,
    main_Image_3_in_17,
    main_Image_3_in_18,
    main_Image_3_in_19,
    main_Image_3_in_20,
    main_Image_3_in_21,
    main_Image_3_in_22,
    main_Image_3_in_23,
    main_Image_3_in_24,
    main_Image_3_in_25,
    main_Image_3_in_26,
    main_Image_3_in_27,
    main_Image_3_in_28,
    main_Image_3_in_29,
    main_Image_3_in_30,
    main_Image_3_in_31,
    main_Image_3_in_32,
    main_Image_3_in_33,
    main_Image_3_in_34,
    main_Image_3_in_35,
    main_Image_3_in_36,
    main_Image_3_in_37,
    main_Image_3_in_38,
    main_Image_3_in_39,
    main_Image_3_in_40,
    main_Image_3_in_41,
    main_Image_3_in_42,
    main_Image_3_in_43,
    main_Image_3_in_44,
    main_Image_3_in_45,
    main_Image_3_in_46,
    main_Image_3_in_47,
    main_Image_3_in_48
    ) [instance: 3, cache: 1];
    //
    // decorator Annotate	pos=(85,23) size=342x44 style(Label), font=bold, value = <NULL>
    // annotation user_begin: 96
    // annotation user: This page imports the data and selects out both
    // annotation user: the scalar data field and the vector data field.
    // annotation user_end: <NULL>
    // resource *decorator.alignment:XmALIGNMENT_BEGINNING
    // page group: import
    //
    // decorator Annotate	pos=(42,73) size=369x28 style(Label), font=bold, value = <NULL>
    // annotation user_begin: 52
    // annotation user: This page creates a streamline from the vector data.
    // annotation user_end: <NULL>
    // page group: streamline
    //
    // decorator Annotate	pos=(227,105) size=266x44 style(Label), font=bold, value = <NULL>
    // annotation user_begin: 67
    // annotation user: This page maps the scalar data onto 
    // annotation user: the line, then creates a tube.
    // annotation user_end: <NULL>
    // resource *decorator.alignment:XmALIGNMENT_BEGINNING
    // page group: MapOnLine
    //
    // decorator Annotate	pos=(220,80) size=333x44 style(Label), font=bold, value = <NULL>
    // annotation user_begin: 60
    // annotation user: This page creates a tube, then maps the scalar
    // annotation user: data onto it.
    // annotation user_end: <NULL>
    // resource *decorator.alignment:XmALIGNMENT_BEGINNING
    // page group: MapOnTube
    //
    // decorator Annotate	pos=(339,168) size=260x44 style(Label), font=bold, value = <NULL>
    // annotation user_begin: 63
    // annotation user: This page allows the user to choose
    // annotation user: which visualization to see.
    // annotation user_end: <NULL>
    // resource *decorator.alignment:XmALIGNMENT_BEGINNING
    // page group: image
// network: end of macro body
CacheScene("Image_3", main_Image_3_out_1, main_Image_3_out_2);
}
main_Import_1_in_1 = "hyper";
main_Import_1_in_2 = NULL;
main_Import_1_in_3 = "dx";
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_Select_2_in_2 = 1;
main_Select_2_in_3 = NULL;
main_Select_2_out_1 = NULL;
main_Transmitter_22_out_1 = NULL;
main_Receiver_31_out_1 = NULL;
main_Scalar_1_in_1 = "Scalar_1";
main_Scalar_1_in_2 = NULL;
main_Scalar_1_in_3 = 0.100000;
main_Scalar_1_in_4 = NULL;
main_Scalar_1_in_5 = NULL;
main_Scalar_1_in_6 = NULL;
main_Scalar_1_in_7 = NULL;
main_Scalar_1_in_8 = NULL;
main_Scalar_1_in_9 = NULL;
main_Scalar_1_in_10 = NULL;
main_Scalar_1_in_11 = NULL;
main_Scalar_1_out_1 = 0.100000;
main_Streamline_1_in_2 = {[3, 3, 0.2]};
main_Streamline_1_in_3 = NULL;
main_Streamline_1_in_4 = NULL;
main_Streamline_1_in_5 = NULL;
main_Streamline_1_in_6 = NULL;
main_Streamline_1_out_1 = NULL;
main_Transmitter_23_out_1 = NULL;
main_Receiver_34_out_1 = NULL;
main_Tube_1_in_2 = 1.00000;
main_Tube_1_in_3 = 15;
main_Tube_1_in_4 = NULL;
main_Tube_1_out_1 = NULL;
main_Select_1_in_2 = 0;
main_Select_1_in_3 = NULL;
main_Select_1_out_1 = NULL;
main_Transmitter_1_out_1 = NULL;
main_Receiver_1_out_1 = NULL;
main_Map_1_in_3 = NULL;
main_Map_1_in_4 = NULL;
main_Map_1_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 = 1.00000;
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_Receiver_33_out_1 = NULL;
main_Receiver_32_out_1 = NULL;
main_Map_2_in_3 = NULL;
main_Map_2_in_4 = NULL;
main_Map_2_out_1 = NULL;
main_AutoColor_2_in_2 = NULL;
main_AutoColor_2_in_3 = NULL;
main_AutoColor_2_in_4 = NULL;
main_AutoColor_2_in_5 = 1.00000;
main_AutoColor_2_in_6 = NULL;
main_AutoColor_2_in_7 = NULL;
main_AutoColor_2_in_8 = NULL;
main_AutoColor_2_in_9 = NULL;
main_AutoColor_2_in_10 = NULL;
main_AutoColor_2_out_1 = NULL;
main_Selector_1_in_1 = "Selector_1";
main_Selector_1_in_2 = "map onto line" ;
main_Selector_1_in_3 = 1 ;
main_Selector_1_in_4 = NULL;
main_Selector_1_in_5 = NULL;
main_Selector_1_in_6 = NULL;
main_Selector_1_in_7 = NULL;
main_Selector_1_out_1 = 1 ;
main_Tube_2_in_2 = 1.00000;
main_Tube_2_in_3 = 15;
main_Tube_2_in_4 = NULL;
main_Tube_2_out_1 = NULL;
main_Transmitter_24_out_1 = NULL;
main_Receiver_35_out_1 = NULL;
main_Transmitter_25_out_1 = NULL;
main_Receiver_36_out_1 = NULL;
main_Switch_1_out_1 = NULL;
main_Color_1_in_2 = "grey";
main_Color_1_in_3 = NULL;
main_Color_1_in_4 = "back colors";
main_Color_1_in_5 = NULL;
main_Color_1_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_3_in_1 = "Image_3";
main_Image_3_in_3 = "X24,,";
main_Image_3_in_4 = 1;
main_Image_3_in_5 = [4.55222 4.55249 4.85314];
main_Image_3_in_6 = [-27.312 7.8454 16.1685];
main_Image_3_in_7 = 18.2065;
main_Image_3_in_8 = 640;
main_Image_3_in_9 = 0.75;
main_Image_3_in_10 = [0.0712792 0.993531 -0.0884067];
main_Image_3_in_11 = NULL;
main_Image_3_in_12 = 0;
main_Image_3_in_13 = NULL;
main_Image_3_in_14 = 1;
main_Image_3_in_15 = NULL;
main_Image_3_in_16 = NULL;
main_Image_3_in_17 = NULL;
main_Image_3_in_18 = NULL;
main_Image_3_in_19 = 0;
main_Image_3_in_20 = NULL;
main_Image_3_in_21 = NULL;
main_Image_3_in_22 = NULL;
main_Image_3_in_23 = NULL;
main_Image_3_in_25 = NULL;
main_Image_3_in_26 = NULL;
main_Image_3_in_27 = NULL;
main_Image_3_in_28 = NULL;
main_Image_3_in_29 = NULL;
main_Image_3_in_30 = NULL;
main_Image_3_in_31 = NULL;
main_Image_3_in_32 = NULL;
main_Image_3_in_33 = NULL;
main_Image_3_in_34 = NULL;
main_Image_3_in_35 = NULL;
main_Image_3_in_36 = NULL;
main_Image_3_in_37 = NULL;
main_Image_3_in_38 = NULL;
main_Image_3_in_39 = NULL;
main_Image_3_in_40 = NULL;
main_Image_3_in_41 = NULL;
main_Image_3_in_42 = NULL;
main_Image_3_in_43 = NULL;
main_Image_3_in_44 = NULL;
main_Image_3_in_45 = NULL;
main_Image_3_in_46 = NULL;
main_Image_3_in_47 = NULL;
main_Image_3_in_48 = NULL;
Executive("product version 3 1 4");
$sync
main();
