InitialObjectDescriptor {
 objectDescriptorID 1
 audioProfileLevelIndication 1
 visualProfileLevelIndication 1
 sceneProfileLevelIndication 1
 graphicsProfileLevelIndication 1
 ODProfileLevelIndication 1
 esDescr [
  ES_Descriptor {
   ES_ID 1
   decConfigDescr DecoderConfigDescriptor {
    streamType 1
   }
  }
  ES_Descriptor {
   ES_ID 2
   decConfigDescr DecoderConfigDescriptor {
    streamType 3
    decSpecificInfo BIFSConfig {
     isCommandStream true
     pixelMetric true
     pixelWidth 600
     pixelHeight 400
    }
   }
  }
 ]
}

OrderedGroup {
 children [
  Background2D {
   url [od:5]
  }
  WorldInfo {
   info ["This shows combination of Clipper2D objects" "with different modes" "" "GPAC Regression Tests" "$Date: 2007-07-27 09:46:07 $ - $Revision: 1.2 $" "(C) 2002-2004 GPAC Team"]
   title "Clipper2D Test"
  }
  Transform2D {
   scale 0.5 0.5
   translation -200 100
   children [
    Shape {
     appearance Appearance {
      material Material2D {
       emissiveColor 1 1 0
       filled TRUE
      }
     }
     geometry Rectangle {
      size 200 200
     }
    }
    DEF PS PlaneSensor2D {
     maxPosition 150 150
     minPosition -150 -150
    }
    Shape {
     appearance DEF TEXTAPP Appearance {
      material Material2D {
       emissiveColor 0 0 0
       filled TRUE
      }
     }
     geometry Text {
      string ["Translate" "round" "cliper"]
      fontStyle DEF FS FontStyle {
       justify ["MIDDLE" "MIDDLE"]
       size 40
      }
     }
    }
   ]
  }
  Transform2D {
   scale 0.5 0.5
   translation -80 100
   children [
    DEF S1 Switch {
     whichChoice 0
     choice [
      Group {
       children [
        Shape {
         appearance USE TEXTAPP
         geometry Text {
          string ["Round Clipper" "inside = FALSE"]
          fontStyle USE FS
         }
        }
        DEF TS1 TouchSensor {}
       ]
      }
      Group {
       children [
        Shape {
         appearance USE TEXTAPP
         geometry Text {
          string ["Round Clipper" "inside = TRUE"]
          fontStyle USE FS
         }
        }
        DEF RTS1 TouchSensor {}
       ]
      }
     ]
    }
   ]
  }
  Transform2D {
   scale 0.5 0.5
   translation -80 0
   children [
    DEF SX1 Switch {
     whichChoice 0
     choice [
      Group {
       children [
        Shape {
         appearance USE TEXTAPP
         geometry Text {
          string ["XOR = FALSE"]
          fontStyle USE FS
         }
        }
        DEF TSX1 TouchSensor {}
       ]
      }
      Group {
       children [
        Shape {
         appearance USE TEXTAPP
         geometry Text {
          string ["XOR = TRUE"]
          fontStyle USE FS
         }
        }
        DEF RTSX1 TouchSensor {}
       ]
      }
     ]
    }
   ]
  }
  Transform2D {
   scale 0.5 0.5
   translation -200 -120
   children [
    Shape {
     appearance Appearance {
      material Material2D {
       emissiveColor 1 0 1
       filled TRUE
      }
     }
     geometry Circle {
      radius 100
     }
    }
    DEF DS DiscSensor {}
    Shape {
     appearance USE TEXTAPP
     geometry Text {
      string ["Rotate" "square" "cliper"]
      fontStyle USE FS
     }
    }
   ]
  }
  Transform2D {
   scale 0.5 0.5
   translation -80 -120
   children [
    DEF S2 Switch {
     whichChoice 0
     choice [
      Group {
       children [
        Shape {
         appearance USE TEXTAPP
         geometry Text {
          string ["Rect Clipper" "inside = FALSE"]
          fontStyle USE FS
         }
        }
        DEF TS2 TouchSensor {}
       ]
      }
      Group {
       children [
        Shape {
         appearance USE TEXTAPP
         geometry Text {
          string ["Rect Clipper" "inside = TRUE"]
          fontStyle USE FS
         }
        }
        DEF RTS2 TouchSensor {}
       ]
      }
     ]
    }
   ]
  }
  Transform2D {
   translation 150 0
   children [
    DEF CLIP_SQ Clipper2D {
     inside FALSE
     children [
      DEF CLIP_RD Clipper2D {
       inside FALSE
       children [
        Shape {
         appearance Appearance {
          texture ImageTexture {
           url [od:10]
           repeatS FALSE
           repeatT FALSE
          }
         }
         geometry Circle {
          radius 100
         }
        }
       ]
       geometry Circle {
        radius 50
       }
       transform DEF TR_RD Transform2D {}

      }
     ]
     geometry Rectangle {
      size 200 75
     }
     transform DEF TR_SQ Transform2D {}

    }
   ]
  }
  DEF C1 Conditional {
   buffer {
    REPLACE CLIP_RD.inside BY TRUE
    REPLACE S1.whichChoice BY 1
   }
  }
  DEF RC1 Conditional {
   buffer {
    REPLACE CLIP_RD.inside BY FALSE
    REPLACE S1.whichChoice BY 0
   }
  }
  DEF CX1 Conditional {
   buffer {
    REPLACE CLIP_RD.XOR BY TRUE
    REPLACE SX1.whichChoice BY 1
   }
  }
  DEF RCX1 Conditional {
   buffer {
    REPLACE CLIP_RD.XOR BY FALSE
    REPLACE SX1.whichChoice BY 0
   }
  }
  DEF C2 Conditional {
   buffer {
    REPLACE CLIP_SQ.inside BY TRUE
    REPLACE S2.whichChoice BY 1
   }
  }
  DEF RC2 Conditional {
   buffer {
    REPLACE CLIP_SQ.inside BY FALSE
    REPLACE S2.whichChoice BY 0
   }
  }
 ]
}

ROUTE PS.translation_changed TO TR_RD.translation
ROUTE DS.rotation_changed TO TR_SQ.rotationAngle
ROUTE TS1.isActive TO C1.activate
ROUTE RTS1.isActive TO RC1.activate
ROUTE TSX1.isActive TO CX1.activate
ROUTE RTSX1.isActive TO RCX1.activate
ROUTE TS2.isActive TO C2.activate
ROUTE RTS2.isActive TO RC2.activate

AT 0 {
  UPDATE OD [
   ObjectDescriptor {
    objectDescriptorID 5
    esDescr [
     ES_Descriptor {
      ES_ID 10
      muxInfo MuxInfo {
       fileName "../auxiliary_files/sky.jpg"
      }
     }
    ]
   }
   ObjectDescriptor {
    objectDescriptorID 10
    esDescr [
     ES_Descriptor {
      ES_ID 20
      muxInfo MuxInfo {
       fileName "../auxiliary_files/logo.jpg"
      }
     }
    ]
   }
  ]
}

