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

OrderedGroup {
 children [
  Background2D {
   backColor 0 1 1
  }
  WorldInfo {
   info ["This shows the Osmo4 logo" "animated through BIFS commands" "" "GPAC Regression Tests" "$Date: 2007-07-27 09:46:09 $ - $Revision: 1.2 $" "(C) 2002-2004 GPAC Team"]
   title "Osmo4 Logo"
  }
  Shape {
   appearance Appearance {
    texture LinearGradient {
     endPoint 0 1
     key [0 0.33 1]
     keyValue [0 0.5 0.5 0 0.75 0.75 0 0.75 1]
    }
   }
   geometry Rectangle {
    size 300 300
   }
  }
  Switch {
   choice [
    DEF BCIRCLE Shape {
     appearance DEF ABLACK Appearance {
      material Material2D {
       emissiveColor 0 0 0
       filled TRUE
      }
     }
     geometry Circle {
      radius 60
     }
    }
    DEF BTRIANGLE Shape {
     appearance USE ABLACK
     geometry IndexedFaceSet2D {
      colorPerVertex FALSE
      coord Coordinate2D {
       point [-40 0 40 0 0 -60]
      }
     }
    }
    DEF RCIRCLE Shape {
     appearance Appearance {
      material DEF RMAT Material2D {
       lineProps DEF LP XLineProperties {
        lineColor 1 0 0
        width 20
       }
      }
     }
     geometry Circle {
      radius 100
     }
    }
   ]
  }
  DEF MOV Transform2D {
   children [
    DEF LOGO Transform2D {}
   ]
  }
 ]
}


AT 1000 {
 APPEND TO LOGO.children DEF BR Transform2D {
  scale 0 0
  translation -150 -150
  children [
   USE BCIRCLE
  ]
 }
 APPEND TO MOV.children DEF TIME TimeSensor {
  cycleInterval 1.5
 }
 APPEND TO MOV.children DEF POS PositionInterpolator2D {
  key [0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1]
  keyValue [-150 -150 -135 135 120 120 105 -105 -90 -90 -75 75 60 60 45 -45 -30 -30 -15 15 0 0]
 }
 APPEND TO MOV.children DEF SCALE PositionInterpolator2D {
  key [0 1]
  keyValue [0.1 0.1 1 1]
 }
 INSERT ROUTE DEF R1 TIME.fraction_changed TO POS.set_fraction
 INSERT ROUTE DEF R2 TIME.fraction_changed TO SCALE.set_fraction
 INSERT ROUTE DEF R3 POS.value_changed TO BR.translation
 INSERT ROUTE DEF R4 SCALE.value_changed TO BR.scale
}

AT 2500 {
 DELETE ROUTE R1
 DELETE ROUTE R2
 DELETE ROUTE R3
 DELETE ROUTE R4
 DELETE TIME
 DELETE POS
 DELETE SCALE
 REPLACE BR.translation BY 0 0
 REPLACE BR.scale BY 1 1
 APPEND TO LOGO.children DEF BT Transform2D {
  scale 9 0.5
  translation 0 20
  children [
   USE BTRIANGLE
  ]
 }
 APPEND TO MOV.children DEF TIME2 TimeSensor {
  cycleInterval 1.5
 }
 APPEND TO MOV.children DEF POS_BT PositionInterpolator2D {
  key [0 1]
  keyValue [0 20 0 90]
 }
 APPEND TO MOV.children DEF POS_BR PositionInterpolator2D {
  key [0 1]
  keyValue [0 0 0 -30]
 }
 APPEND TO MOV.children DEF SCALE_BR PositionInterpolator2D {
  key [0 0.7 1]
  keyValue [1 1 1.4 1.4 1 1]
 }
 APPEND TO MOV.children DEF SCALE_BT PositionInterpolator2D {
  key [0 0.7 1]
  keyValue [9 0.5 5 0.7 1 1]
 }
 INSERT ROUTE DEF R1 TIME2.fraction_changed TO POS_BT.set_fraction
 INSERT ROUTE DEF R2 TIME2.fraction_changed TO POS_BR.set_fraction
 INSERT ROUTE DEF R3 TIME2.fraction_changed TO SCALE_BT.set_fraction
 INSERT ROUTE DEF R4 TIME2.fraction_changed TO SCALE_BR.set_fraction
 INSERT ROUTE DEF R5 POS_BT.value_changed TO BT.translation
 INSERT ROUTE DEF R6 POS_BR.value_changed TO BR.translation
 INSERT ROUTE DEF R7 SCALE_BT.value_changed TO BT.scale
 INSERT ROUTE DEF R8 SCALE_BR.value_changed TO BR.scale
}

AT 4000 {
 DELETE ROUTE R1
 DELETE ROUTE R2
 DELETE ROUTE R3
 DELETE ROUTE R4
 DELETE ROUTE R5
 DELETE ROUTE R6
 DELETE ROUTE R7
 DELETE ROUTE R8
 DELETE TIME2
 DELETE POS_BT
 DELETE SCALE_BT
 DELETE POS_BR
 DELETE SCALE_BR
 REPLACE BT.translation BY 0 90
 REPLACE BR.translation BY 0 -30
 REPLACE BR.scale BY 1 1
 REPLACE BT.scale BY 1 1
 REPLACE LP.width BY 0
 APPEND TO LOGO.children DEF RC Transform2D {
  children [
   USE RCIRCLE
  ]
 }
 APPEND TO MOV.children DEF TIME3 TimeSensor {
  cycleInterval 1.5
 }
 APPEND TO MOV.children DEF WIDTH ScalarInterpolator {
  key [0 0.5 0.75 1]
  keyValue [0 25 15 20]
 }
 APPEND TO MOV.children DEF COL ColorInterpolator {
  key [0 1]
  keyValue [0 0 0 1 0 0]
 }
 INSERT ROUTE DEF R1 TIME3.fraction_changed TO WIDTH.set_fraction
 INSERT ROUTE DEF R2 TIME3.fraction_changed TO COL.set_fraction
 INSERT ROUTE DEF R3 WIDTH.value_changed TO LP.width
 INSERT ROUTE DEF R4 COL.value_changed TO LP.lineColor
}

AT 5500 {
 DELETE ROUTE R1
 DELETE ROUTE R2
 DELETE ROUTE R3
 DELETE ROUTE R4
 DELETE TIME3
 DELETE WIDTH
 DELETE COL
 REPLACE LP.width BY 20
 REPLACE LP.transparency BY 0
 REPLACE LP.lineColor BY 1 0 0
 APPEND TO MOV.children Transform2D {
  translation 110 38
  children [
   Shape {
    appearance Appearance {
     material DEF TXTMAT Material2D {
      emissiveColor 0.1 0 0.1
      filled TRUE
      transparency 1
     }
    }
    geometry Text {
     string ["sm"]
     fontStyle DEF FS FontStyle {
      justify ["BEGIN" "BEGIN"]
      size 160
     }
    }
   }
  ]
 }
 APPEND TO MOV.children Transform2D {
  scale 0.3 0.3
  translation 340 -70
  children [
   USE LOGO
  ]
 }
 APPEND TO MOV.children Transform2D {
  translation 380 38
  children [
   Shape {
    appearance Appearance {
     material USE TXTMAT
    }
    geometry Text {
     string ["4"]
     fontStyle USE FS
    }
   }
  ]
 }
 APPEND TO MOV.children DEF TIME4 TimeSensor {
  cycleInterval 1.5
 }
 APPEND TO MOV.children DEF POS_MOV PositionInterpolator2D {
  key [0 0.5 1]
  keyValue [0 0 75 0 -75 0]
 }
 APPEND TO MOV.children DEF SCALE_MOV PositionInterpolator2D {
  key [0 0.5 1]
  keyValue [1 1 0.4 0.4 0.4 0.4]
 }
 APPEND TO MOV.children DEF ALPHA2 ScalarInterpolator {
  key [0 0.9 1]
  keyValue [0.95 0.5 0]
 }
 INSERT ROUTE DEF R1 TIME4.fraction_changed TO POS_MOV.set_fraction
 INSERT ROUTE DEF R2 TIME4.fraction_changed TO SCALE_MOV.set_fraction
 INSERT ROUTE DEF R3 TIME4.fraction_changed TO ALPHA2.set_fraction
 INSERT ROUTE DEF R4 POS_MOV.value_changed TO MOV.translation
 INSERT ROUTE DEF R5 SCALE_MOV.value_changed TO MOV.scale
 INSERT ROUTE DEF R6 ALPHA2.value_changed TO TXTMAT.transparency
}

AT 7000 {
 DELETE ROUTE R1
 DELETE ROUTE R2
 DELETE ROUTE R3
 DELETE ROUTE R4
 DELETE ROUTE R5
 DELETE ROUTE R6
 DELETE TIME4
 DELETE ALPHA2
 DELETE POS_MOV
 DELETE SCALE_MOV
 REPLACE TXTMAT.transparency BY 0.5
 REPLACE MOV.translation BY -75 0
 REPLACE MOV.scale BY 0.4 0.4
 
 APPEND TO LOGO.children Transform2D {
  children [
   DEF TS TimeSensor {
    cycleInterval 4
    loop TRUE
   }
   DEF PI PositionInterpolator2D {
    key [0 0.25 0.5 0.75 1]
    keyValue [1 1 -1 1 1 1 1 -1 1 1]
   }
   DEF SI ScalarInterpolator {
    key [0 0.5 1]
    keyValue [0 0.8 0]
   }
  ]
 }
 INSERT ROUTE TS.fraction_changed TO PI.set_fraction
 INSERT ROUTE TS.fraction_changed TO SI.set_fraction
 INSERT ROUTE PI.value_changed TO LOGO.scale
 INSERT ROUTE SI.value_changed TO TXTMAT.transparency
}

