#--
-# $Id: program.rb 1 2005-03-26 01:32:38Z tilman $
+# $Id: program.rb 28 2005-04-14 19:53:45Z tilman $
#
# Copyright (c) 2005 Tilman Sauerbeck (tilman at code-monkey de)
#
include Comparable
- attr_reader :collection, :id, :name, :after
- attr_accessor :signal, :source, :in_from, :in_range
+ attr_reader :collection, :id, :name, :after, :signal, :source,
+ :in_from, :in_range
def initialize(collection, id, name)
@collection = collection
@id <=> b.id
end
+ def signal=(v)
+ @signal = v.to_str.dup
+ end
+
+ def source=(v)
+ @source = v.to_str.dup
+ end
+
+ def in_from=(v)
+ unless v.is_a?(Float)
+ raise(ArgumentError,
+ "wrong argument type #{v.class.name} " +
+ "(expected Float)")
+ end
+
+ @in_from = v
+ end
+
+ def in_range=(v)
+ unless v.is_a?(Float)
+ raise(ArgumentError,
+ "wrong argument type #{v.class.name} " +
+ "(expected Float)")
+ end
+
+ @in_range = v
+ end
+
+ protected
def to_eet_name
"Edje_Program"
end
end
class SetStateProgram < Program
- MODE_LINEAR = 1
- MODE_SINUSOIDAL = 2
- MODE_ACCELERATE = 3
- MODE_DECELERATE = 4
-
- attr_reader :targets
- attr_accessor :state, :value, :mode, :time
+ attr_reader :targets, :state, :value, :time
+ attr_accessor :mode
def initialize(collection, id, name)
super
@type = TYPE_SET_STATE
@state = "default"
@value = 0.0
- @mode = MODE_LINEAR
+ @mode = :linear
@time = 0.0
@targets = ProgramArgs.new(collection)
end
+ def state=(v)
+ @state = v.to_str.dup
+ end
+
+ def value=(v)
+ unless v.is_a?(Float)
+ raise(ArgumentError,
+ "wrong argument type #{v.class.name} " +
+ "(expected Float)")
+ end
+
+ @value = v
+ end
+
+ def time=(v)
+ unless v.is_a?(Float)
+ raise(ArgumentError,
+ "wrong argument type #{v.class.name} " +
+ "(expected Float)")
+ end
+
+ @time = v
+ end
+
+ protected
def to_eet_properties
+ mode = case @mode
+ when :linear: 1
+ when :sinusoidal: 2
+ when :accelerate: 3
+ when :decelerate: 4
+ else
+ raise(RedactError, "invalid mode - #{@mode}")
+ end
+
super.merge!(
{"state" => [@state],
"value" => [@value, :double],
- "tween.mode" => [@mode],
+ "tween.mode" => [mode],
"tween.time" => [@time, :double],
"targets" => [@targets]})
end
@targets = ProgramArgs.new(collection)
end
+ protected
def to_eet_properties
super.merge!({"targets" => [@targets]})
end
end
class EmitSignalProgram < Program
- attr_accessor :emission_signal, :emission_source
+ attr_reader :emission_signal, :emission_source
def initialize(collection, id, name)
super
@emission_source = nil
end
+ def emission_signal=(v)
+ @emission_signal = v.to_str.dup
+ end
+
+ def emission_source=(v)
+ @emission_source = v.to_str.dup
+ end
+
+ protected
def to_eet_properties
super.merge!(
{"state" => [@emission_signal],
end
class ExecScriptProgram < Program
- attr_accessor :script
+ attr_reader :script
def initialize(collection, id, name)
super
@type = TYPE_EXEC_SCRIPT
@script = nil
end
+
+ def script=(v)
+ @script = v.to_str.dup
+ end
end
class ProgramArgs < Array
@id = v.id
end
+ protected
def to_eet_properties
{"id" => [@id]}
end
end
class ProgramAfter < ProgramArg
+ protected
def to_eet_name
"Edje_Program_After"
end
end
class ProgramTarget < ProgramArg
+ protected
def to_eet_name
"Edje_Program_Target"
end