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

OrderedGroup {
 children [
  Background2D {
   backColor 1 1 1
  }
  WorldInfo {
   info [
    "This test shows the different methods for spreading radial gradients when the size of the object to be filled is large" 
    "The focal point of the gradient is also animated to change the gradient aspect over time." 
    "" 
    "GPAC Regression Tests" "$Date: 2007-07-27 09:46:08 $ - $Revision: 1.3 $" 
    "(C) 2002-2006 GPAC Team"
   ]
   title "Radial Gradient Spread Methods"
  }
  Transform2D {
   translation 0 -150
   children [
    Shape {
     appearance Appearance {
      material Material2D {
       emissiveColor 0 0 0
       filled TRUE
      }
     }
     geometry Text {
      string ["Move over and click" "to change the spread method"]
      fontStyle DEF FS FontStyle {
       justify ["MIDDLE" "MIDDLE"]
       size 20
      }
     }
    }
   ]
  }
  Transform2D {
   children [
    Shape {
     appearance Appearance {
      material Material2D {
       lineProps LineProperties {
        width 0
       }
      }
      texture DEF GR RadialGradient {
       focalPoint 0 0.5
       key [0 0.5 1]
       keyValue [0 0 1 1 0 0 0 1 0]
      }
     }
     geometry DEF R Rectangle {
      size 200 200
     }
    }
    DEF TS TouchSensor {}
   ]
  }
  DEF C Conditional {
   buffer {
    REPLACE GR.spreadMethod BY 2
   }
  }
  DEF RC Conditional {
   buffer {
    REPLACE GR.spreadMethod BY 0
   }
  }
  DEF C2 Conditional {
   buffer {
    REPLACE GR.spreadMethod BY 1
   }
  }
  DEF RC2 Conditional {
   buffer {
    REPLACE GR.spreadMethod BY 2
   }
  }
  DEF TIME TimeSensor {
   cycleInterval 4
   loop TRUE
  }
  DEF CI PositionInterpolator2D {
   key [0 0.25 0.5 0.75 1]
   keyValue [0 0.5 0.5 1 1 0.5 0.5 0 0 0.5]
  }
 ]
}

ROUTE TS.isOver TO C.activate
ROUTE TS.isOver TO RC.reverseActivate
ROUTE TS.isActive TO C2.activate
ROUTE TS.isActive TO RC2.reverseActivate
ROUTE TIME.fraction_changed TO CI.set_fraction
ROUTE CI.value_changed TO GR.focalPoint

