X-Git-Url: http://git.code-monkey.de/?p=redact.git;a=blobdiff_plain;f=lib%2Fredact%2Fprogram.rb;h=abcc79e8a9bb7572415ec3fce8ebf83974b17196;hp=78f2ca960a3904912650ea32daa252979e99b9ad;hb=5509b434e26fd1a8c9c3990154a881583b81d2a6;hpb=2c25c90e2aaf57a7508a7988f58b2784d5071a7e diff --git a/lib/redact/program.rb b/lib/redact/program.rb index 78f2ca9..abcc79e 100644 --- a/lib/redact/program.rb +++ b/lib/redact/program.rb @@ -1,6 +1,4 @@ #-- -# $Id: program.rb 1 2005-03-26 01:32:38Z tilman $ -# # Copyright (c) 2005 Tilman Sauerbeck (tilman at code-monkey de) # # Permission is hereby granted, free of charge, to any person obtaining @@ -35,8 +33,8 @@ module Redact 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 @@ -56,6 +54,35 @@ module Redact @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 @@ -73,13 +100,8 @@ module Redact 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 @@ -87,16 +109,50 @@ module Redact @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 @@ -110,22 +166,32 @@ module Redact @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 @type = TYPE_EMIT_SIGNAL - @emission_signal = nil - @emission_source = nil + @emission_signal = "" + @emission_source = "" + 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], @@ -134,7 +200,7 @@ module Redact end class ExecScriptProgram < Program - attr_accessor :script + attr_reader :script def initialize(collection, id, name) super @@ -142,6 +208,11 @@ module Redact @type = TYPE_EXEC_SCRIPT @script = nil end + + def script=(v) + v = v.to_str + @script = (File.exist?(v) ? File.read(v) : v).dup + end end class ProgramArgs < Array @@ -168,18 +239,21 @@ module Redact @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